Skip to content

Commit 93a14f8

Browse files
committed
fix: improve coverage
1 parent e8b309a commit 93a14f8

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

src/authz-module/team-members/TeamMembersTable.test.tsx

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,17 @@ import { screen, waitFor } from '@testing-library/react';
22
import userEvent from '@testing-library/user-event';
33
import { renderWithAllProviders } from '@src/setupTest';
44
import { useAllRoleAssignments, useOrgs, useScopes } from '@src/authz-module/data/hooks';
5+
import { useViewTeamPermissions } from '@src/authz-module/hooks/useViewTeamPermissions';
6+
import { LIBRARY_ROLE_KEYS } from '@src/authz-module/roles-permissions';
57
import { ToastManagerProvider } from '@src/components/ToastManager/ToastManagerContext';
68
import TeamMembersTable from './TeamMembersTable';
79

10+
jest.mock('@src/authz-module/hooks/useViewTeamPermissions', () => ({
11+
useViewTeamPermissions: jest.fn(),
12+
}));
13+
14+
const mockUseViewTeamPermissions = useViewTeamPermissions as jest.Mock;
15+
816
const mockedAllRoleAssignments = {
917
data: {
1018
results: [
@@ -127,6 +135,11 @@ const mockApiResponses = (
127135
describe('TeamMembersTable', () => {
128136
beforeEach(() => {
129137
mockNavigate.mockClear();
138+
mockUseViewTeamPermissions.mockReturnValue({
139+
isCourseViewAllowed: true,
140+
isLibraryViewAllowed: true,
141+
isLoading: false,
142+
});
130143
});
131144

132145
it('renders table with role assignments data', async () => {
@@ -194,6 +207,28 @@ describe('TeamMembersTable', () => {
194207
expect(mockNavigate).toHaveBeenCalledWith('/authz/user/johndoe');
195208
});
196209

210+
it('renders safely when role assignments data is undefined', () => {
211+
// @ts-ignore
212+
mockApiResponses({ ...mockedAllRoleAssignments, data: undefined });
213+
renderWithAllProviders(<ToastManagerProvider><TeamMembersTable /></ToastManagerProvider>);
214+
expect(screen.queryByText('John Doe')).not.toBeInTheDocument();
215+
});
216+
217+
it('filters to library roles only when course view is not allowed', async () => {
218+
mockUseViewTeamPermissions.mockReturnValue({
219+
isCourseViewAllowed: false,
220+
isLibraryViewAllowed: true,
221+
isLoading: false,
222+
});
223+
mockApiResponses();
224+
renderWithAllProviders(<ToastManagerProvider><TeamMembersTable /></ToastManagerProvider>);
225+
await waitFor(() => {
226+
expect(useAllRoleAssignments).toHaveBeenCalledWith(
227+
expect.objectContaining({ roles: LIBRARY_ROLE_KEYS }),
228+
);
229+
});
230+
});
231+
197232
it('handles empty data gracefully', async () => {
198233
const allAsignmentsResponse = {
199234
data: {

0 commit comments

Comments
 (0)