Batman
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
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
|
||||
Reference in New Issue
Block a user