test(views): cover canonical module visibility

This commit is contained in:
2026-08-19 22:55:19 +02:00
parent e87076f86b
commit e49129c3eb
+73
View File
@@ -501,6 +501,79 @@ class ViewsServiceTests(unittest.TestCase):
], ],
) )
def test_user_and_group_views_hide_tenant_effective_module_roots(self) -> None:
group_view = self.create_published_definition(
name="Group files",
scope_type="group",
scope_id="group-1",
visible_surface_ids=ordinary_surface_ids(),
)
user_view = self.create_published_definition(
name="Personal files",
scope_type="user",
scope_id="account-user",
visible_surface_ids=ordinary_surface_ids(),
)
self.assign(
group_view,
scope_type="group",
scope_id="group-1",
)
self.assign(
user_view,
scope_type="user",
scope_id="account-user",
)
cases = (
("account-member", ("group-1",), group_view.id),
("account-user", (), user_view.id),
)
for account_id, group_ids, expected_view_id in cases:
with self.subTest(account_id=account_id):
state = resolve_effective_view(
self.session,
tenant_id="tenant-1",
account_id=account_id,
group_ids=group_ids,
catalogue=self.catalogue,
)
self.assertEqual(expected_view_id, state.effective.view_id)
self.assertIn("files.module", state.effective.visible_surface_ids)
self.assertNotIn("access.module", state.effective.visible_surface_ids)
def test_group_view_cannot_restore_a_tenant_unavailable_module(self) -> None:
definition = self.create_published_definition(
name="Group files",
scope_type="group",
scope_id="group-1",
visible_surface_ids=ordinary_surface_ids(),
)
self.assign(
definition,
scope_type="group",
scope_id="group-1",
)
active_catalogue = tuple(
surface for surface in self.catalogue if surface.module_id != "files"
)
state = resolve_effective_view(
self.session,
tenant_id="tenant-1",
account_id="account-member",
group_ids=("group-1",),
catalogue=active_catalogue,
)
self.assertIsNone(state.effective.view_id)
self.assertNotIn("files.module", state.effective.visible_surface_ids)
self.assertIn(
"view.stale_surfaces",
{diagnostic.code for diagnostic in state.diagnostics},
)
def test_normalization_requires_navigation_and_route(self) -> None: def test_normalization_requires_navigation_and_route(self) -> None:
with self.assertRaisesRegex(ViewsValidationError, "navigation"): with self.assertRaisesRegex(ViewsValidationError, "navigation"):
normalize_visible_surface_ids( normalize_visible_surface_ids(