From e5140050038ea19197a94269cedf3dff7da2aeb8 Mon Sep 17 00:00:00 2001 From: Albrecht Degering Date: Sat, 22 Aug 2026 06:21:50 +0200 Subject: [PATCH] docs(soap): add German reference coverage --- pyproject.toml | 2 +- src/govoplan_soap/__init__.py | 2 +- src/govoplan_soap/backend/manifest.py | 14 +++++++++++++- tests/test_soap_module_contract.py | 7 +++++++ 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 1fb545e..c4f6ffe 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "govoplan-soap" -version = "0.1.18" +version = "0.1.19" description = "SOAP connector module for GovOPlaN" readme = "README.md" requires-python = ">=3.12" diff --git a/src/govoplan_soap/__init__.py b/src/govoplan_soap/__init__.py index 9b9c37e..a882432 100644 --- a/src/govoplan_soap/__init__.py +++ b/src/govoplan_soap/__init__.py @@ -2,4 +2,4 @@ __all__ = ["__version__"] -__version__ = "0.1.18" +__version__ = "0.1.19" diff --git a/src/govoplan_soap/backend/manifest.py b/src/govoplan_soap/backend/manifest.py index c728b69..dd2beaa 100644 --- a/src/govoplan_soap/backend/manifest.py +++ b/src/govoplan_soap/backend/manifest.py @@ -32,7 +32,7 @@ def _route_factory(context: ModuleContext): manifest = ModuleManifest( id="soap", name="SOAP Connector", - version="0.1.18", + version="0.1.19", required_capabilities=(CAPABILITY_AUTH_PRINCIPAL_RESOLVER, CAPABILITY_AUTH_PERMISSION_EVALUATOR), optional_dependencies=("audit", "docs", "policy"), provides_interfaces=( @@ -59,6 +59,18 @@ manifest = ModuleManifest( documentation_types=("admin", "user"), audience=("integration_user", "operator", "module_admin"), related_modules=("policy", "audit", "docs"), + translations={ + "de": { + "title": "Gesteuerte SOAP-Veröffentlichungen verwenden", + "summary": "SOAP bindet ausdrücklich veröffentlichte Moduloperationen an, ohne deren fachliches Verhalten zu übernehmen.", + "body": ( + "Nur Operationen, die über den Veröffentlichungsvertrag registriert sind, sind sichtbar. " + "Das Quellmodul bleibt für Validierung, Autorisierungsfakten, Idempotenz und Seiteneffekte verantwortlich; " + "SOAP verantwortet Nachrichtenumschläge, Serialisierung, Transportrichtlinien, Drosselung und Diagnostik. " + "Die aktuelle Oberfläche ist ein Anbieter- und Ermittlungsvertrag und keine unbeschränkte Brücke zu internen Operationen." + ), + } + }, metadata={"kind": "reference"}, ), ), diff --git a/tests/test_soap_module_contract.py b/tests/test_soap_module_contract.py index 75028af..c159994 100644 --- a/tests/test_soap_module_contract.py +++ b/tests/test_soap_module_contract.py @@ -24,6 +24,13 @@ class SoapModuleContractTests(unittest.TestCase): self.assertEqual("/soap", router.prefix) self.assertEqual(1, len(router.routes)) + def test_public_reference_has_complete_german_localization(self) -> None: + topic = get_manifest().documentation[0] + translation = topic.translations["de"] + + self.assertEqual({"title", "summary", "body"}, set(translation)) + self.assertTrue(all(str(translation[field]).strip() for field in translation)) + def test_operation_descriptor_is_stable(self) -> None: descriptor = SoapOperationDescriptor( id="demo.ping",