"""AP2.0f — work_cycle / Sprint-Zeitbox.""" from __future__ import annotations from steering.strategies.next_action import register_builtin_strategies from steering.strategies.next_action.registry import get_next_action_strategy from tests.factories import provision_user_in_tenant from tests.test_initiatives_actions import _auth, _create_initiative, _login def test_agile_iteration_strategy_registered(): register_builtin_strategies() assert get_next_action_strategy("agile_iteration") is not None def test_work_cycle_crud_and_action_link(client): user = provision_user_in_tenant(tenant_role="admin") token = _login(client, user) created = _create_initiative( client, token, title="Sprint Product", archetype_key="initiative.product", ) initiative_id = created.json()["id"] cycle = client.post( f"/api/initiatives/{initiative_id}/work-cycles", json={"title": "Iteration R1", "goal_description": "AP2.0f", "status": "active"}, headers=_auth(token), ) assert cycle.status_code == 201 cycle_id = cycle.json()["id"] assert cycle.json()["status"] == "active" active = client.get( f"/api/initiatives/{initiative_id}/work-cycles/active", headers=_auth(token), ) assert active.status_code == 200 assert active.json()["id"] == cycle_id action = client.post( f"/api/initiatives/{initiative_id}/actions", json={ "title": "Sprint AP A", "work_cycle_id": cycle_id, "status": "ready", }, headers=_auth(token), ) assert action.status_code == 201 assert action.json()["work_cycle_id"] == cycle_id listed = client.get( f"/api/initiatives/{initiative_id}/work-cycles", headers=_auth(token), ) assert listed.status_code == 200 assert any(item["id"] == cycle_id for item in listed.json()) def test_steering_snapshot_includes_active_work_cycle(client): user = provision_user_in_tenant(tenant_role="member") token = _login(client, user) created = _create_initiative(client, token, title="Snapshot Cycle") initiative_id = created.json()["id"] client.post( f"/api/initiatives/{initiative_id}/work-cycles", json={"title": "Sprint 1", "status": "active"}, headers=_auth(token), ) snap = client.get( f"/api/initiatives/{initiative_id}/steering-snapshot", headers=_auth(token), ) assert snap.status_code == 200 assert snap.json().get("active_work_cycle") assert snap.json()["active_work_cycle"]["title"] == "Sprint 1"