feat: complete shared platform UI contracts
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user