From cfd4dd7a31f9b394b6253ad208d1e5358df66cae Mon Sep 17 00:00:00 2001 From: Jay Bhensdadia Date: Sat, 8 Jun 2024 19:59:55 +0530 Subject: [PATCH] fix: update tests to handle lowercase and camelcased resource names correctly --- packages/ui-tests/src/tests/layout/sider.tsx | 68 ++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/packages/ui-tests/src/tests/layout/sider.tsx b/packages/ui-tests/src/tests/layout/sider.tsx index 9a6176c123c0..a4afd5970200 100644 --- a/packages/ui-tests/src/tests/layout/sider.tsx +++ b/packages/ui-tests/src/tests/layout/sider.tsx @@ -235,5 +235,73 @@ export const layoutSiderTests = ( return expect(postLink).toHaveStyle("pointer-events: none"); }); }); + + it("should handle lowercase resource names correctly", async () => { + const { getByText, getAllByText } = render(, { + wrapper: TestWrapper({ + resources: [ + { + name: "posts", + list: "/posts", + }, + { + name: "users", + list: "/users", + }, + ], + accessControlProvider: { + can: ({ action, resource }) => { + if (action === "list" && resource === "posts") { + return Promise.resolve({ can: true }); + } + if (action === "list" && resource === "users") { + return Promise.resolve({ can: false }); + } + return Promise.resolve({ can: false }); + }, + }, + }), + }); + + const postsElements = await waitFor(() => getAllByText("Posts")); + postsElements.forEach((element) => { + expect(element).toBeInTheDocument(); + }); + expect(() => getByText("Users")).toThrow(); + }); + + it("should handle camelcased resource names correctly", async () => { + const { getByText, getAllByText } = render(, { + wrapper: TestWrapper({ + resources: [ + { + name: "blogPosts", + list: "/blog-posts", + }, + { + name: "userProfiles", + list: "/user-profiles", + }, + ], + accessControlProvider: { + can: ({ action, resource }) => { + if (action === "list" && resource === "blogPosts") { + return Promise.resolve({ can: true }); + } + if (action === "list" && resource === "userProfiles") { + return Promise.resolve({ can: false }); + } + return Promise.resolve({ can: false }); + }, + }, + }), + }); + + const blogPostsElements = await waitFor(() => getAllByText("Blog posts")); + blogPostsElements.forEach((element) => { + expect(element).toBeInTheDocument(); + }); + expect(() => getByText("User profiles")).toThrow(); + }); }); };