Files
2026-09-09 17:49:01 +01:00

87 lines
2.9 KiB
Python

def test_create_bike_requires_name(client):
client.login()
csrf = client.csrf(client.get("/bikes/new").text)
resp = client.post("/bikes/new", data={"csrf": csrf, "name": ""})
assert resp.status_code == 200
assert "Name must be" in resp.text
def test_create_and_list_bike(client):
client.login()
bike_id = client.create_bike("Roadie")
assert bike_id >= 1
assert "Roadie" in client.get("/").text
d = client.get(f"/bikes/{bike_id}")
assert "Service status" in d.text
def test_update_bike(client):
client.login()
bike_id = client.create_bike("Roadie")
csrf = client.csrf(client.get(f"/bikes/{bike_id}/edit").text)
resp = client.post(
f"/bikes/{bike_id}/edit",
data={"csrf": csrf, "name": "Roadie 2", "service_interval_miles": "3000"},
)
assert resp.status_code == 303
assert "Roadie 2" in client.get(f"/bikes/{bike_id}").text
def test_create_event_and_list(client):
client.login()
bike_id = client.create_bike("Roadie")
result = client.create_event(
bike_id, type="service", event_date="2026-09-09", mileage="15000", cost="150"
)
assert result["status"] == 200
assert "15,000" in result["text"]
assert "service" in result["text"]
def test_event_rejects_future_date(client):
client.login()
bike_id = client.create_bike("Roadie")
result = client.create_event(bike_id, type="service", event_date="2999-01-01")
assert "future" in result["text"].lower()
def test_event_rejects_negative_mileage(client):
client.login()
bike_id = client.create_bike("Roadie")
result = client.create_event(bike_id, type="other", event_date="2026-09-09", mileage="-5")
assert "negative" in result["text"].lower()
def test_event_requires_known_type(client):
client.login()
bike_id = client.create_bike("Roadie")
result = client.create_event(bike_id, type="bogus", event_date="2026-09-09")
assert "must be one of" in result["text"].lower()
def test_delete_event(client):
client.login()
bike_id = client.create_bike("Roadie")
client.create_event(bike_id, type="service", event_date="2026-09-09", mileage="15000")
page = client.get(f"/bikes/{bike_id}").text
import re
m = re.search(r"/events/(\d+)/delete", page)
assert m, "delete link not found"
event_id = m.group(1)
csrf = client.csrf(page)
resp = client.post(f"/events/{event_id}/delete", data={"csrf": csrf})
assert resp.status_code == 303
assert "No events yet" in client.get(f"/bikes/{bike_id}").text
def test_delete_bike_cascades(client):
client.login()
bike_id = client.create_bike("Roadie")
client.create_event(bike_id, type="service", event_date="2026-09-09", mileage="15000")
page = client.get(f"/bikes/{bike_id}/edit").text
csrf = client.csrf(page)
resp = client.post(f"/bikes/{bike_id}/delete", data={"csrf": csrf})
assert resp.status_code == 303
assert client.get(f"/bikes/{bike_id}").status_code == 303