Add version-aware documentation resolution
This commit is contained in:
@@ -46,6 +46,66 @@ class FakePrincipal:
|
||||
|
||||
|
||||
class DocsContextTests(unittest.TestCase):
|
||||
def test_topics_are_filtered_by_installed_or_selected_version(self) -> None:
|
||||
registry = PlatformRegistry()
|
||||
registry.register(ModuleManifest(
|
||||
id="example",
|
||||
name="Example",
|
||||
version="2.1.0",
|
||||
documentation=(
|
||||
DocumentationTopic(
|
||||
id="example.legacy",
|
||||
title="Legacy",
|
||||
summary="Legacy behavior",
|
||||
version_max_exclusive="2.0.0",
|
||||
),
|
||||
DocumentationTopic(
|
||||
id="example.current",
|
||||
title="Current",
|
||||
summary="Current behavior",
|
||||
version_min="2.0.0",
|
||||
),
|
||||
DocumentationTopic(
|
||||
id="example.universal",
|
||||
title="Universal",
|
||||
summary="All versions",
|
||||
),
|
||||
),
|
||||
))
|
||||
principal = FakePrincipal({"docs:documentation:read"})
|
||||
|
||||
installed = _classify_documentation(
|
||||
registry,
|
||||
principal,
|
||||
settings=None,
|
||||
session=None,
|
||||
documentation_type="admin",
|
||||
locale="en",
|
||||
)
|
||||
selected = _classify_documentation(
|
||||
registry,
|
||||
principal,
|
||||
settings=None,
|
||||
session=None,
|
||||
documentation_type="admin",
|
||||
locale="en",
|
||||
target_version="1.9.0",
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
{topic["id"] for topic in installed["configured"]},
|
||||
{"example.current", "example.universal"},
|
||||
)
|
||||
self.assertEqual(
|
||||
{topic["id"] for topic in selected["configured"]},
|
||||
{"example.legacy", "example.universal"},
|
||||
)
|
||||
universal = next(
|
||||
topic for topic in selected["configured"]
|
||||
if topic["id"] == "example.universal"
|
||||
)
|
||||
self.assertEqual(universal["version"]["fallback"], "unversioned")
|
||||
|
||||
def test_docs_reader_is_the_managed_authenticated_tenant_default(self) -> None:
|
||||
manifest = get_docs_manifest()
|
||||
roles = {template.slug: template for template in manifest.role_templates}
|
||||
|
||||
Reference in New Issue
Block a user