test: integration tests for all routes
This commit is contained in:
70
tests/test_routes.py
Normal file
70
tests/test_routes.py
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user