diff --git a/tests/test_routes.py b/tests/test_routes.py new file mode 100644 index 0000000..3f56cac --- /dev/null +++ b/tests/test_routes.py @@ -0,0 +1,70 @@ +from app.models import WorkEntry, TimeSlot +from app import db +from datetime import date, time +import sqlalchemy as sa + + +def test_dashboard_empty(client): + response = client.get("/") + assert response.status_code == 200 + assert "Tableau de bord" in response.text + + +def test_entry_form_get(client): + response = client.get("/entries/new") + assert response.status_code == 200 + assert "Nouvelle" in response.text + + +def test_create_entry(client, app): + response = client.post("/entries/new", data={ + "date": "2025-06-02", + "day_type": "WORK", + "journey_profile_id": "voiture_seule", + "start_time": ["09:00"], + "end_time": ["17:45"], + "comment": "", + }, follow_redirects=True) + assert response.status_code == 200 + + with app.app_context(): + entry = db.session.scalar( + sa.select(WorkEntry).where(WorkEntry.date == date(2025, 6, 2)) + ) + assert entry is not None + assert entry.day_type == "WORK" + assert len(entry.time_slots) == 1 + + +def test_entry_list(client, app): + with app.app_context(): + entry = WorkEntry(date=date(2025, 6, 3), day_type="TT") + db.session.add(entry) + db.session.commit() + + response = client.get("/entries/") + assert response.status_code == 200 + assert "TT" in response.text + + +def test_reports_page(client): + response = client.get("/reports/") + assert response.status_code == 200 + assert "Rapports" in response.text + + +def test_delete_entry(client, app): + with app.app_context(): + entry = WorkEntry(date=date(2025, 6, 4), day_type="RTT") + db.session.add(entry) + db.session.commit() + entry_id = entry.id + + response = client.post(f"/entries/{entry_id}/delete", follow_redirects=True) + assert response.status_code == 200 + + with app.app_context(): + deleted = db.session.scalar( + sa.select(WorkEntry).where(WorkEntry.id == entry_id) + ) + assert deleted is None