Files
govoplan-dashboard/tests/test_interface_documentation_contract.py
T

63 lines
2.5 KiB
Python

from __future__ import annotations
from pathlib import Path
import unittest
from govoplan_dashboard.backend.manifest import get_manifest
REPO_ROOT = Path(__file__).resolve().parents[1]
class DashboardInterfaceDocumentationContractTests(unittest.TestCase):
def test_surface_hierarchy_remains_declared(self) -> None:
frontend = get_manifest().frontend
self.assertIsNotNone(frontend)
surfaces = {item.id: item for item in frontend.view_surfaces} # type: ignore[union-attr]
self.assertEqual(
{
"dashboard.page",
"dashboard.summary",
"dashboard.library",
"dashboard.grid",
"dashboard.widget-settings",
"dashboard.widget.installed-modules",
},
set(surfaces),
)
self.assertEqual("dashboard.page", surfaces["dashboard.library"].parent_id)
self.assertEqual("dashboard.page", surfaces["dashboard.grid"].parent_id)
self.assertEqual("dashboard.grid", surfaces["dashboard.widget-settings"].parent_id)
def test_help_and_consequence_metadata_remain_published(self) -> None:
topics = {topic.id: topic for topic in get_manifest().documentation}
home = topics["dashboard.configurable-home"]
reference = topics["dashboard.reference.layout-and-widgets"]
self.assertIn("dashboard.state.browser-fallback", home.metadata["help_contexts"])
self.assertIn("dashboard.field.widget-size", reference.metadata["help_contexts"])
self.assertIn("save_layout", reference.metadata["consequence_classes"])
self.assertIn("remove_widget", reference.metadata["consequence_classes"])
def test_webui_guards_layout_and_nested_widget_drafts(self) -> None:
page = (REPO_ROOT / "webui/src/features/dashboard/DashboardPage.tsx").read_text(
encoding="utf-8"
)
dialog = (
REPO_ROOT
/ "webui/src/features/dashboard/WidgetConfigurationDialog.tsx"
).read_text(encoding="utf-8")
library = (
REPO_ROOT / "webui/src/features/dashboard/WidgetLibrary.tsx"
).read_text(encoding="utf-8")
self.assertIn("DocumentationHelpLink", page)
self.assertIn("useUnsavedDraftGuard", page)
self.assertIn("useUnsavedDraftGuard", dialog)
self.assertIn("DASHBOARD_LAYOUT_DOCUMENTATION", dialog)
self.assertIn("disabled={atCapacity}", library)
if __name__ == "__main__":
unittest.main()