test(views): cover canonical module visibility
This commit is contained in:
@@ -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:
|
||||
with self.assertRaisesRegex(ViewsValidationError, "navigation"):
|
||||
normalize_visible_surface_ids(
|
||||
|
||||
Reference in New Issue
Block a user