Migrate Cases interface patterns
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
import unittest
|
||||
|
||||
from govoplan_cases.backend.manifest import get_manifest
|
||||
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
|
||||
class CasesInterfaceDocumentationContractTests(unittest.TestCase):
|
||||
def test_backend_surfaces_and_hierarchy_remain_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(
|
||||
{
|
||||
"cases.navigation",
|
||||
"cases.list",
|
||||
"cases.list.filters",
|
||||
"cases.detail",
|
||||
"cases.detail.summary",
|
||||
"cases.detail.editor",
|
||||
"cases.detail.references",
|
||||
"cases.detail.timeline",
|
||||
"cases.detail.history",
|
||||
"cases.detail.access",
|
||||
},
|
||||
set(surfaces),
|
||||
)
|
||||
self.assertEqual("cases.list", surfaces["cases.list.filters"].parent_id)
|
||||
for surface_id in (
|
||||
"cases.detail.summary",
|
||||
"cases.detail.editor",
|
||||
"cases.detail.references",
|
||||
"cases.detail.timeline",
|
||||
"cases.detail.history",
|
||||
"cases.detail.access",
|
||||
):
|
||||
self.assertEqual("cases.detail", surfaces[surface_id].parent_id)
|
||||
|
||||
def test_help_and_consequence_metadata_remain_published(self) -> None:
|
||||
topics = {topic.id: topic for topic in get_manifest().documentation}
|
||||
context = topics["cases.institutional-context"]
|
||||
reference = topics["cases.reference.lifecycle-access-and-evidence"]
|
||||
|
||||
self.assertIn("cases.state.read-only", context.metadata["help_contexts"])
|
||||
self.assertIn("cases.field.access-grant", reference.metadata["help_contexts"])
|
||||
self.assertIn("update_case", reference.metadata["consequence_classes"])
|
||||
self.assertIn("close_case", reference.metadata["consequence_classes"])
|
||||
self.assertIn("change_access", reference.metadata["consequence_classes"])
|
||||
|
||||
def test_webui_uses_shared_help_guard_and_confirmation_components(self) -> None:
|
||||
list_page = (
|
||||
REPO_ROOT / "webui/src/features/cases/CasesPage.tsx"
|
||||
).read_text(encoding="utf-8")
|
||||
detail_page = (
|
||||
REPO_ROOT / "webui/src/features/cases/CaseDetailPage.tsx"
|
||||
).read_text(encoding="utf-8")
|
||||
access_dialog = (
|
||||
REPO_ROOT / "webui/src/features/cases/CaseShareDialog.tsx"
|
||||
).read_text(encoding="utf-8")
|
||||
|
||||
self.assertIn("DocumentationHelpLink", list_page)
|
||||
for component in (
|
||||
"ActionBlockerHint",
|
||||
"DocumentationHelpLink",
|
||||
"FormField",
|
||||
"useUnsavedDraftGuard",
|
||||
):
|
||||
self.assertIn(component, detail_page)
|
||||
for component in (
|
||||
"ConfirmDialog",
|
||||
"DocumentationHelpLink",
|
||||
"ReferenceSelect",
|
||||
"useUnsavedDraftGuard",
|
||||
):
|
||||
self.assertIn(component, access_dialog)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user