feat(helpdesk): configure ticket routing profiles
This commit is contained in:
+21
-20
@@ -2,31 +2,32 @@ 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 ManifestSeedTests(unittest.TestCase):
|
||||
def test_manifest_registers_seed_contract(self) -> None:
|
||||
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)
|
||||
|
||||
self.assertEqual(manifest.id, "helpdesk")
|
||||
self.assertEqual(manifest.name, "Helpdesk")
|
||||
self.assertEqual(manifest.dependencies, ("access",))
|
||||
self.assertEqual({permission.scope for permission in manifest.permissions}, {READ_SCOPE, WRITE_SCOPE, ADMIN_SCOPE})
|
||||
self.assertEqual({role.slug for role in manifest.role_templates}, {"helpdesk_manager", "helpdesk_viewer"})
|
||||
self.assertTrue(manifest.documentation)
|
||||
topic = manifest.documentation[0]
|
||||
self.assertEqual("reference", topic.metadata["kind"])
|
||||
self.assertIn("seed_boundary", topic.metadata["consequence_classes"])
|
||||
self.assertTrue(
|
||||
all(
|
||||
topic.translations.get("de", {}).get(field)
|
||||
for field in ("title", "summary", "body")
|
||||
)
|
||||
)
|
||||
self.assertIsNone(manifest.route_factory)
|
||||
self.assertIsNone(manifest.migration_spec)
|
||||
self.assertIsNone(manifest.frontend)
|
||||
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__":
|
||||
|
||||
Reference in New Issue
Block a user