"""Structural tests for the family blueprint (milestone 463 steps 3 and 4) — every endpoint is routed, and every write hands the service its caller, where the note's write gate lives. What the writes do is in tests/test_integration_family_promotion.py.""" import inspect def test_family_blueprint_routes_every_endpoint(): from scribe.app import create_app app = create_app() assert "family" in app.blueprints rules = {(r.rule, m) for r in app.url_map.iter_rules() for m in r.methods} for rule, method in ( ("/api/family/ideas", "GET"), ("/api/family/ideas/", "GET"), ("/api/family/ideas//propose", "POST"), ("/api/family/ideas//promote", "POST"), ("/api/family/ideas//retire", "POST"), ("/api/family/decisions", "GET"), ("/api/family/decisions//undo", "POST"), ("/api/family/matrix", "GET"), ): assert (rule, method) in rules, f"{method} {rule} is not routed" def test_every_engine_write_takes_the_caller_and_who_decided(): from scribe.services import family as svc for name in ("propose", "promote", "retire", "undo", "revise"): params = inspect.signature(getattr(svc, name)).parameters assert "user_id" in params and "decided_via" in params, name def test_every_ledger_write_takes_the_caller_and_who_decided(): from scribe.services import family_adoption as svc for name in ("assess", "resolve_conflict", "undo_assessment"): params = inspect.signature(getattr(svc, name)).parameters assert "user_id" in params and "decided_via" in params, name