chore: sync GovOPlaN module split state
This commit is contained in:
91
tests/test_docs_context.py
Normal file
91
tests/test_docs_context.py
Normal file
@@ -0,0 +1,91 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
from types import SimpleNamespace
|
||||
|
||||
from govoplan_access.backend.manifest import get_manifest as get_access_manifest
|
||||
from govoplan_core.core.registry import PlatformRegistry
|
||||
from govoplan_tenancy.backend.manifest import get_manifest as get_tenancy_manifest
|
||||
from govoplan_docs.backend.api.v1.routes import (
|
||||
_classify_documentation,
|
||||
_documentation_topic_anchor,
|
||||
_documentation_topic_groups,
|
||||
)
|
||||
from govoplan_docs.backend.manifest import get_manifest as get_docs_manifest
|
||||
|
||||
|
||||
class FakePrincipal:
|
||||
tenant_id = "tenant-1"
|
||||
user = SimpleNamespace(id="user-1")
|
||||
|
||||
def __init__(self, scopes: set[str]) -> None:
|
||||
self.scopes = frozenset(scopes)
|
||||
|
||||
def has(self, required_scope: str) -> bool:
|
||||
return required_scope in self.scopes
|
||||
|
||||
|
||||
class DocsContextTests(unittest.TestCase):
|
||||
def test_topic_groups_preserve_layer_classification(self) -> None:
|
||||
registry = PlatformRegistry()
|
||||
registry.register(get_tenancy_manifest())
|
||||
registry.register(get_access_manifest())
|
||||
registry.register(get_docs_manifest())
|
||||
principal = FakePrincipal({"admin:users:read", "admin:groups:read", "docs:documentation:read"})
|
||||
|
||||
layers = _classify_documentation(
|
||||
registry,
|
||||
principal,
|
||||
settings=None,
|
||||
session=None,
|
||||
documentation_type="admin",
|
||||
locale="en",
|
||||
)
|
||||
groups = _documentation_topic_groups(layers)
|
||||
|
||||
workflow_ids = {topic["id"] for topic in groups["workflow"]}
|
||||
reference_ids = {topic["id"] for topic in groups["reference"]}
|
||||
pattern_ids = {topic["id"] for topic in groups["pattern"]}
|
||||
system_ids = {topic["id"] for topic in groups["system"]}
|
||||
|
||||
self.assertIn("access.workflow.grant-user-access", workflow_ids)
|
||||
self.assertIn("access.reference.admin-access-fields", reference_ids)
|
||||
self.assertIn("docs.pattern.field-help", pattern_ids)
|
||||
self.assertIn("docs.configured-system-documentation", system_ids)
|
||||
|
||||
configured_ids = {topic["id"] for topic in layers["configured"]}
|
||||
always_ids = {topic["id"] for topic in layers["always"]}
|
||||
self.assertIn("access.workflow.grant-user-access", configured_ids)
|
||||
self.assertIn("docs.pattern.field-help", always_ids)
|
||||
|
||||
def test_unavailable_topic_still_appears_in_kind_group(self) -> None:
|
||||
registry = PlatformRegistry()
|
||||
registry.register(get_tenancy_manifest())
|
||||
registry.register(get_access_manifest())
|
||||
registry.register(get_docs_manifest())
|
||||
principal = FakePrincipal({"docs:documentation:read"})
|
||||
|
||||
layers = _classify_documentation(
|
||||
registry,
|
||||
principal,
|
||||
settings=None,
|
||||
session=None,
|
||||
documentation_type="user",
|
||||
locale="en",
|
||||
)
|
||||
groups = _documentation_topic_groups(layers)
|
||||
workflows = {topic["id"]: topic for topic in groups["workflow"]}
|
||||
|
||||
self.assertIn("access.workflow.grant-user-access", workflows)
|
||||
self.assertFalse(workflows["access.workflow.grant-user-access"]["active"])
|
||||
self.assertIn("access.workflow.grant-user-access", {topic["id"] for topic in layers["available"]})
|
||||
|
||||
def test_topic_anchor_is_stable(self) -> None:
|
||||
self.assertEqual(
|
||||
_documentation_topic_anchor("access", "access.workflow.grant-user-access"),
|
||||
"docs-topic-access-access-workflow-grant-user-access",
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user