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:
|
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(
|
||||||
|
|||||||
Reference in New Issue
Block a user