89 lines
3.0 KiB
Python
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
|