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