"""AP2.2d — Backlog convert assigns active sprint.""" from __future__ import annotations from tests.factories import provision_user_in_tenant from tests.test_initiatives_actions import _auth, _create_initiative, _login def test_convert_backlog_assigns_active_work_cycle(client): user = provision_user_in_tenant(tenant_role="admin") token = _login(client, user) created = _create_initiative( client, token, title="Product Backlog", archetype_key="initiative.product", ) initiative_id = created.json()["id"] cycle = client.post( f"/api/initiatives/{initiative_id}/work-cycles", json={"title": "Sprint R1", "status": "active"}, headers=_auth(token), ) assert cycle.status_code == 201 cycle_id = cycle.json()["id"] backlog = client.post( f"/api/initiatives/{initiative_id}/backlog", json={"title": "Feature X", "status": "accepted"}, headers=_auth(token), ) assert backlog.status_code == 201 backlog_id = backlog.json()["id"] converted = client.post( f"/api/backlog/{backlog_id}/convert-to-action", json={"assign_active_sprint": True}, headers=_auth(token), ) assert converted.status_code == 201 action = converted.json()["action"] assert action["work_cycle_id"] == cycle_id def test_convert_backlog_to_planned_sprint(client): user = provision_user_in_tenant(tenant_role="admin") token = _login(client, user) created = _create_initiative( client, token, title="Product Sprint Plan", archetype_key="initiative.product", ) initiative_id = created.json()["id"] cycle = client.post( f"/api/initiatives/{initiative_id}/work-cycles", json={"title": "Sprint R2", "status": "planned"}, headers=_auth(token), ) assert cycle.status_code == 201 cycle_id = cycle.json()["id"] backlog = client.post( f"/api/initiatives/{initiative_id}/backlog", json={"title": "Story Y", "status": "accepted"}, headers=_auth(token), ) backlog_id = backlog.json()["id"] converted = client.post( f"/api/backlog/{backlog_id}/convert-to-action", json={"work_cycle_id": cycle_id, "assign_active_sprint": False}, headers=_auth(token), ) assert converted.status_code == 201 assert converted.json()["action"]["work_cycle_id"] == cycle_id def test_complete_work_cycle(client): user = provision_user_in_tenant(tenant_role="admin") token = _login(client, user) created = _create_initiative( client, token, title="Sprint Complete", archetype_key="initiative.product", ) initiative_id = created.json()["id"] cycle = client.post( f"/api/initiatives/{initiative_id}/work-cycles", json={"title": "Sprint R1", "status": "active"}, headers=_auth(token), ) cycle_id = cycle.json()["id"] completed = client.post( f"/api/initiatives/{initiative_id}/work-cycles/{cycle_id}/complete", headers=_auth(token), ) assert completed.status_code == 200 assert completed.json()["status"] == "reached" active = client.get( f"/api/initiatives/{initiative_id}/work-cycles/active", headers=_auth(token), ) assert active.status_code == 200 assert active.json() is None