All checks were successful
Deploy Development / deploy (push) Successful in 45s
Test Suite / pytest-backend (push) Successful in 1m23s
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) Successful in 12s
Zweite Built-in-Methode mit meilensteinorientierter NextAction-Strategie, API und UI-Auswahl pro Vorhaben; AP0.10d Validation-Vorlagen. Co-authored-by: Cursor <cursoragent@cursor.com>
63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
"""AP1.1 — Method Registry tests."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from tests.factories import provision_user_in_tenant
|
|
from tests.test_initiatives_actions import (
|
|
_auth,
|
|
_create_initiative,
|
|
_login,
|
|
)
|
|
|
|
|
|
def test_list_steering_methods(client):
|
|
user = provision_user_in_tenant(tenant_role="member")
|
|
token = _login(client, user)
|
|
|
|
res = client.get("/api/steering/methods", headers=_auth(token))
|
|
assert res.status_code == 200
|
|
methods = res.json()
|
|
keys = {m["key"] for m in methods}
|
|
assert "generic_operating" in keys
|
|
assert "product_milestone_driven" in keys
|
|
|
|
|
|
def test_change_initiative_method(client):
|
|
user = provision_user_in_tenant(tenant_role="member")
|
|
token = _login(client, user)
|
|
initiative_id = _create_initiative(client, token).json()["id"]
|
|
|
|
res = client.patch(
|
|
f"/api/steering/initiatives/{initiative_id}/context",
|
|
json={"method_key": "product_milestone_driven"},
|
|
headers=_auth(token),
|
|
)
|
|
assert res.status_code == 200
|
|
assert res.json()["method_key"] == "product_milestone_driven"
|
|
assert res.json()["method_label"] == "Produkt / Meilenstein"
|
|
|
|
|
|
def test_product_milestone_next_action_prioritizes_milestone(client):
|
|
user = provision_user_in_tenant(tenant_role="member")
|
|
token = _login(client, user)
|
|
initiative_id = _create_initiative(client, token).json()["id"]
|
|
client.patch(
|
|
f"/api/steering/initiatives/{initiative_id}/context",
|
|
json={"method_key": "product_milestone_driven"},
|
|
headers=_auth(token),
|
|
)
|
|
client.post(
|
|
f"/api/initiatives/{initiative_id}/milestones",
|
|
json={"title": "Release MVP", "status": "at_risk"},
|
|
headers=_auth(token),
|
|
)
|
|
|
|
snap = client.get(
|
|
f"/api/initiatives/{initiative_id}/steering-snapshot",
|
|
headers=_auth(token),
|
|
)
|
|
assert snap.status_code == 200
|
|
next_actions = snap.json()["next_actions"]
|
|
assert len(next_actions) >= 1
|
|
assert next_actions[0]["kind"] == "review_milestone"
|