from __future__ import annotations from govoplan_campaign.backend.manifest import ( CAMPAIGN_MODULE_REQUIRED_ANY, OPERATOR_QUEUE_REQUIRED_ANY, OPERATOR_QUEUE_SURFACE_ID, REPORTS_REQUIRED_ANY, REPORTS_SURFACE_ID, get_manifest, ) from govoplan_core.core.registry import manifest_view_surfaces def test_operator_queue_is_an_integrated_campaign_view() -> None: manifest = get_manifest() assert manifest.frontend is not None assert "/operator" not in {item.path for item in manifest.nav_items} assert "/operator" not in {item.path for item in manifest.frontend.nav_items} routes = {route.path: route for route in manifest.frontend.routes} assert "/operator" not in routes queue = routes["/campaigns/queue"] assert queue.component == "OperatorQueuePage" assert queue.required_all == ("campaigns:campaign:read",) assert queue.required_any == OPERATOR_QUEUE_REQUIRED_ANY assert OPERATOR_QUEUE_SURFACE_ID == "campaigns.route.operator" assert queue.surface_id == OPERATOR_QUEUE_SURFACE_ID queue_surfaces = [ surface for surface in manifest_view_surfaces(manifest) if surface.id == OPERATOR_QUEUE_SURFACE_ID ] assert len(queue_surfaces) == 1 assert queue_surfaces[0].description == "/campaigns/queue" def test_aggregate_reports_are_an_integrated_campaign_view() -> None: manifest = get_manifest() assert manifest.frontend is not None backend_nav = {item.path: item for item in manifest.nav_items} frontend_nav = {item.path: item for item in manifest.frontend.nav_items} assert "/reports" not in backend_nav assert "/reports" not in frontend_nav assert backend_nav["/campaigns"].required_any == CAMPAIGN_MODULE_REQUIRED_ANY assert frontend_nav["/campaigns"].required_any == CAMPAIGN_MODULE_REQUIRED_ANY routes = {route.path: route for route in manifest.frontend.routes} assert "/reports" not in routes report = routes["/campaigns/reports"] assert report.component == "AggregateReportsPage" assert report.required_any == REPORTS_REQUIRED_ANY assert REPORTS_SURFACE_ID == "campaigns.route.reports" assert report.surface_id == REPORTS_SURFACE_ID report_surfaces = [ surface for surface in manifest_view_surfaces(manifest) if surface.id == REPORTS_SURFACE_ID ] assert len(report_surfaces) == 1 assert report_surfaces[0].description == "/campaigns/reports"