from __future__ import annotations import unittest from govoplan_core.core.tickets import CAPABILITY_TICKET_ROUTING from govoplan_helpdesk.backend.dsar_provider import HELPDESK_DSAR_CAPABILITY from govoplan_helpdesk.backend.manifest import ADMIN_SCOPE, READ_SCOPE, WRITE_SCOPE, get_manifest class ManifestTests(unittest.TestCase): def test_manifest_registers_helpdesk_policy_overlay(self) -> None: manifest = get_manifest() self.assertEqual("helpdesk", manifest.id) self.assertEqual("0.1.20", manifest.version) self.assertEqual({READ_SCOPE, WRITE_SCOPE, ADMIN_SCOPE}, {item.scope for item in manifest.permissions}) self.assertEqual({"helpdesk_manager", "helpdesk_viewer", "helpdesk_administrator"}, {item.slug for item in manifest.role_templates}) self.assertIsNotNone(manifest.route_factory) self.assertIsNotNone(manifest.migration_spec) self.assertIsNotNone(manifest.frontend) self.assertIn(CAPABILITY_TICKET_ROUTING, manifest.capability_factories) self.assertIn(HELPDESK_DSAR_CAPABILITY, manifest.capability_factories) self.assertEqual("vertical_slice", manifest.architecture.maturity) def test_documentation_is_complete_in_german_and_denies_duplicate_ticket_storage(self) -> None: topics = get_manifest().documentation for topic in topics: self.assertTrue(all(topic.translations.get("de", {}).get(field) for field in ("title", "summary", "body")), topic.id) boundary = next(item for item in topics if item.id == "helpdesk.module-boundary") self.assertIn("never creates a parallel ticket store", boundary.body) self.assertTrue(any(item.metadata.get("kind") == "workflow" for item in topics)) if __name__ == "__main__": unittest.main()