import pytest from app.schemas.contextual import ContextualScope, render_scope_block def test_render_project_scope(): scope = ContextualScope( page="project", entity_type="project", entity_id="p1", entity_name="Acme Q3 launch", counts={"tasks": 12, "notes": 4, "milestones": 3}, ) block = render_scope_block(scope) assert "Acme Q3 launch" in block assert "12 tasks" in block assert "4 notes" in block assert "3 milestones" in block assert "p1" not in block def test_render_list_scope_no_entity(): scope = ContextualScope(page="tasks", entity_type=None) block = render_scope_block(scope) assert "tasks" in block.lower() assert "None" not in block def test_render_note_scope_includes_char_count(): scope = ContextualScope( page="note", entity_type="note", entity_id="n1", entity_name="Meeting 14 May", project_id="p1", char_count=4280, ) block = render_scope_block(scope) assert "Meeting 14 May" in block assert "4280" in block or "4,280" in block def test_parses_camelcase_payload_from_renderer(): payload = { "page": "project", "entityType": "project", "entityId": "p1", "entityName": "Acme", "counts": {"tasks": 5, "notes": 1, "milestones": 2}, } scope = ContextualScope.model_validate(payload) assert scope.entity_id == "p1" assert scope.entity_name == "Acme"