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