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