feat: complete shared platform UI contracts

This commit is contained in:
2026-07-31 04:21:34 +02:00
parent 5b55f59a92
commit 7b8072d049
19 changed files with 764 additions and 285 deletions
@@ -3,6 +3,7 @@ from __future__ import annotations
import unittest
from govoplan_core.core.modules import (
CapabilityDocumentation,
DocumentationConfigurationDecision,
DocumentationConfigurationProviderRegistration,
DocumentationCondition,
@@ -116,6 +117,39 @@ class DocumentationTopicContractTests(unittest.TestCase):
with self.assertRaisesRegex(RegistryError, "duplicate documentation configuration key"):
duplicate.validate()
def test_capability_documentation_is_typed_and_must_match_a_provider(self) -> None:
registry = PlatformRegistry()
registry.register(ModuleManifest(
id="example",
name="Example",
version="1.0.0",
capability_factories={"example.lookup": lambda _context: object()},
capability_documentation={
"example.lookup": CapabilityDocumentation(
label="Example lookup",
summary="Resolves example records without exposing provider internals.",
contract_version="2",
audience=("module_admin",),
),
},
))
registry.validate()
missing_provider = PlatformRegistry()
missing_provider.register(ModuleManifest(
id="example",
name="Example",
version="1.0.0",
capability_documentation={
"example.lookup": CapabilityDocumentation(
label="Example lookup",
summary="Resolves example records.",
),
},
))
with self.assertRaisesRegex(RegistryError, "does not provide it"):
missing_provider.validate()
def registry_for(*topics: DocumentationTopic) -> PlatformRegistry:
registry = PlatformRegistry()