Files
stundenfuchs/tests/test_weekly_targets.py
T
maddin 9794362f39
CI / checks (push) Has been cancelled
chore: initialize public repository
2026-03-22 12:55:55 +00:00

89 lines
3.0 KiB
Python

from fastapi.testclient import TestClient
def test_weekly_target_scopes(app):
with TestClient(app) as client:
register = client.post(
"/auth/register",
json={"email": "scope@example.com", "password": "strongpasswordScope1"},
)
assert register.status_code == 200
csrf = register.json()["csrf_token"]
create_w1 = client.post(
"/time-entries",
headers={"x-csrf-token": csrf},
json={
"date": "2026-03-02", # Montag
"start_time": "08:00",
"end_time": "13:00",
"break_minutes": 0,
},
)
assert create_w1.status_code == 200
create_w2 = client.post(
"/time-entries",
headers={"x-csrf-token": csrf},
json={
"date": "2026-03-09", # Folgewoche
"start_time": "08:00",
"end_time": "13:00",
"break_minutes": 0,
},
)
assert create_w2.status_code == 200
week1_default = client.get("/reports/week", params={"date": "2026-03-02"})
assert week1_default.status_code == 200
assert week1_default.json()["weekly_soll_minutes"] == 1500
change_current = client.post(
"/weekly-target",
data={
"week_start": "2026-03-02",
"weekly_target_hours": "20",
"scope": "current_week",
"csrf_token": csrf,
},
follow_redirects=False,
)
assert change_current.status_code == 303
week1_changed = client.get("/reports/week", params={"date": "2026-03-02"})
week2_after_current = client.get("/reports/week", params={"date": "2026-03-09"})
assert week1_changed.json()["weekly_soll_minutes"] == 1200
assert week2_after_current.json()["weekly_soll_minutes"] == 1500
change_future = client.post(
"/weekly-target",
data={
"week_start": "2026-03-09",
"weekly_target_hours": "30",
"scope": "from_current_week",
"csrf_token": csrf,
},
follow_redirects=False,
)
assert change_future.status_code == 303
week2_changed = client.get("/reports/week", params={"date": "2026-03-09"})
assert week2_changed.json()["weekly_soll_minutes"] == 1800
change_all = client.post(
"/weekly-target",
data={
"week_start": "2026-03-09",
"weekly_target_hours": "22",
"scope": "all_weeks",
"csrf_token": csrf,
},
follow_redirects=False,
)
assert change_all.status_code == 303
week1_all = client.get("/reports/week", params={"date": "2026-03-02"})
week2_all = client.get("/reports/week", params={"date": "2026-03-09"})
assert week1_all.json()["weekly_soll_minutes"] == 1320
assert week2_all.json()["weekly_soll_minutes"] == 1320