Kairo-Jinkendo/backend/tests/test_ap22d_sprint_backlog.py
Lars f6aba94864
Some checks failed
Deploy Development / deploy (push) Successful in 48s
Test Suite / pytest-backend (push) Successful in 2m56s
Test Suite / lint-backend (push) Successful in 2s
Test Suite / compose-smoke (push) Has been skipped
Test Suite / k6 /api/health Baseline (push) Successful in 18s
Test Suite / playwright-smoke (push) Has been cancelled
AP2.2d: Sprint-Planung, Abschluss und Product-Fallback.
Backlog committet in gewaehlten Sprint, Sprint complete-Endpoint, continuous_product-Ansicht ohne aktiven Sprint.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-12 19:21:49 +02:00

115 lines
3.3 KiB
Python

"""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