Migrate Risk Compliance interface patterns
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
import unittest
|
||||
|
||||
from govoplan_risk_compliance.backend.manifest import get_manifest
|
||||
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
|
||||
class RiskComplianceInterfaceDocumentationContractTests(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]
|
||||
expected = {
|
||||
"risk_compliance.sanctions.sources",
|
||||
"risk_compliance.sanctions.screening",
|
||||
"risk_compliance.sanctions.review",
|
||||
"risk_compliance.assurance.graph",
|
||||
"risk_compliance.action.import-snapshot",
|
||||
"risk_compliance.action.run-screening",
|
||||
"risk_compliance.review.disposition",
|
||||
"risk_compliance.assurance.editor",
|
||||
"risk_compliance.action.connect-assurance",
|
||||
}
|
||||
self.assertEqual(expected, set(surfaces))
|
||||
self.assertEqual(
|
||||
"risk_compliance.workspace",
|
||||
frontend.routes[0].surface_id, # type: ignore[union-attr]
|
||||
)
|
||||
for surface_id in (
|
||||
"risk_compliance.sanctions.sources",
|
||||
"risk_compliance.sanctions.screening",
|
||||
"risk_compliance.sanctions.review",
|
||||
"risk_compliance.assurance.graph",
|
||||
):
|
||||
self.assertEqual("risk_compliance.workspace", surfaces[surface_id].parent_id)
|
||||
self.assertEqual(
|
||||
"risk_compliance.sanctions.sources",
|
||||
surfaces["risk_compliance.action.import-snapshot"].parent_id,
|
||||
)
|
||||
self.assertEqual(
|
||||
"risk_compliance.sanctions.screening",
|
||||
surfaces["risk_compliance.action.run-screening"].parent_id,
|
||||
)
|
||||
self.assertEqual(
|
||||
"risk_compliance.sanctions.review",
|
||||
surfaces["risk_compliance.review.disposition"].parent_id,
|
||||
)
|
||||
self.assertEqual(
|
||||
"risk_compliance.assurance.graph",
|
||||
surfaces["risk_compliance.assurance.editor"].parent_id,
|
||||
)
|
||||
|
||||
def test_help_and_consequence_metadata_remain_published(self) -> None:
|
||||
topics = {topic.id: topic for topic in get_manifest().documentation}
|
||||
topic = topics["risk_compliance.module-boundary"]
|
||||
|
||||
for context in (
|
||||
"risk_compliance.action.import-snapshot",
|
||||
"risk_compliance.action.run-screening",
|
||||
"risk_compliance.review.disposition",
|
||||
"risk_compliance.assurance.editor",
|
||||
"risk_compliance.action.connect-assurance",
|
||||
):
|
||||
self.assertIn(context, topic.metadata["help_contexts"])
|
||||
for consequence in (
|
||||
"import_snapshot",
|
||||
"run_screening",
|
||||
"record_disposition",
|
||||
"record_exception",
|
||||
"revise_assurance_object",
|
||||
"connect_assurance_objects",
|
||||
):
|
||||
self.assertIn(consequence, topic.metadata["consequence_classes"])
|
||||
|
||||
def test_webui_uses_shared_governed_operation_patterns(self) -> None:
|
||||
page = (
|
||||
REPO_ROOT
|
||||
/ "webui/src/features/riskCompliance/RiskCompliancePage.tsx"
|
||||
).read_text(encoding="utf-8")
|
||||
module = (REPO_ROOT / "webui/src/module.ts").read_text(encoding="utf-8")
|
||||
|
||||
for component in (
|
||||
"ActionBlockerHint",
|
||||
"ConfirmDialog",
|
||||
"DocumentationHelpLink",
|
||||
"MetricCard",
|
||||
"SelectionList",
|
||||
"useUnsavedDraftGuard",
|
||||
):
|
||||
self.assertIn(component, page)
|
||||
self.assertIn("risk_compliance.assurance.graph", module)
|
||||
self.assertIn("risk_compliance.action.connect-assurance", module)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user