Files
govoplan-views/tests/test_interface_documentation_contract.py
T

67 lines
2.5 KiB
Python

from __future__ import annotations
import unittest
from govoplan_views.backend.manifest import manifest
class ViewsInterfaceDocumentationContractTests(unittest.TestCase):
def test_views_surfaces_remain_declared(self) -> None:
frontend = manifest.frontend
self.assertIsNotNone(frontend)
surfaces = {surface.id for surface in frontend.view_surfaces} # type: ignore[union-attr]
self.assertEqual(
{
"views.selector",
"views.admin.system",
"views.admin.tenant",
"views.settings.personal",
},
surfaces,
)
def test_views_topics_publish_stable_help_contexts(self) -> None:
topics = {topic.id: topic for topic in manifest.documentation}
self.assertIn("views.interface-projections", topics)
self.assertIn("views.reference.fields-and-consequences", topics)
projection_contexts = set(
topics["views.interface-projections"].metadata["help_contexts"]
)
self.assertIn("views.selector", projection_contexts)
self.assertIn("views.admin.system", projection_contexts)
self.assertIn("views.admin.tenant", projection_contexts)
self.assertIn("views.settings.personal", projection_contexts)
reference = topics["views.reference.fields-and-consequences"]
self.assertIn("views.action.publish", reference.metadata["help_contexts"])
self.assertIn("required", reference.metadata["consequence_classes"])
self.assertTrue(
all(
all(
topic.translations.get("de", {}).get(field)
for field in ("title", "summary", "body")
)
for topic in topics.values()
)
)
workflow = topics["views.interface-projections"]
self.assertEqual("workflow", workflow.metadata["kind"])
self.assertTrue(workflow.conditions)
self.assertTrue(
all(
condition.required_scopes or condition.any_scopes
for condition in workflow.conditions
)
)
self.assertEqual("reference", reference.metadata["kind"])
self.assertIn("shared navigation editor", workflow.body)
self.assertIn("gemeinsamen Navigationseditor", workflow.translations["de"]["body"])
self.assertIn("Views cannot create navigation", reference.body)
self.assertIn("keine Navigationssperren", reference.translations["de"]["body"])
if __name__ == "__main__":
unittest.main()