from __future__ import annotations import unittest from govoplan_forms_runtime.backend.manifest import manifest class FormsRuntimeInterfaceDocumentationContractTests(unittest.TestCase): def test_routes_and_surfaces_remain_declared(self) -> None: frontend = manifest.frontend self.assertIsNotNone(frontend) self.assertEqual( {"/forms-runtime", "/forms-runtime/:instanceId"}, {item.path for item in frontend.routes}, # type: ignore[union-attr] ) self.assertEqual( {"/forms/public/:publicId", "/forms/intake/:token"}, {item.path for item in frontend.public_routes}, # type: ignore[union-attr] ) self.assertEqual( { "forms_runtime.navigation", "forms_runtime.workspace", "forms_runtime.instance", }, {item.id for item in frontend.view_surfaces}, # type: ignore[union-attr] ) def test_help_privacy_and_consequence_metadata_remain_published(self) -> None: topics = {topic.id: topic for topic in manifest.documentation} guide = topics["forms_runtime.submissions"] reference = topics["forms_runtime.reference.fields-and-consequences"] self.assertIn("forms_runtime.instance", guide.metadata["help_contexts"]) self.assertIn("forms_runtime.public-intake", guide.metadata["help_contexts"]) self.assertGreaterEqual(len(guide.metadata["privacy_notes"]), 3) self.assertIn( "forms_runtime.action.submit", reference.metadata["help_contexts"] ) self.assertIn("submit", reference.metadata["consequence_classes"]) self.assertIn("compensate", reference.metadata["consequence_classes"]) if __name__ == "__main__": unittest.main()