Skip to content

Commit 90ee147

Browse files
committed
test: add toast close functionality and loading state handling in AddNewTeamMemberTrigger tests
1 parent 28ae7e4 commit 90ee147

1 file changed

Lines changed: 52 additions & 0 deletions

File tree

src/authz-module/libraries-manager/components/AddNewTeamMemberTrigger.test.tsx

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,4 +235,56 @@ describe('AddNewTeamMemberTrigger', () => {
235235
expect(newUsersInput).toHaveValue('');
236236
expect(newRoleSelect).toHaveValue('');
237237
});
238+
239+
it('allows closing the success/error toast message', async () => {
240+
const user = userEvent.setup();
241+
renderWrapper(<AddNewTeamMemberTrigger libraryId={mockLibraryId} />);
242+
243+
const triggerButton = screen.getByRole('button', { name: /add new team member/i });
244+
await user.click(triggerButton);
245+
246+
const saveButton = screen.getByTestId('save-modal');
247+
await user.click(saveButton);
248+
249+
// Simulate successful response
250+
const [, { onSuccess }] = mockMutate.mock.calls[0];
251+
onSuccess({
252+
completed: [{ user: '[email protected]', status: 'role_added' }],
253+
errors: [],
254+
});
255+
256+
// Toast should be visible
257+
await waitFor(() => {
258+
expect(screen.getByText('1 team member added successfully.')).toBeInTheDocument();
259+
});
260+
261+
// Find and close the toast
262+
const toastCloseButton = screen.getByLabelText(/close/i);
263+
await user.click(toastCloseButton);
264+
265+
// Toast should be removed
266+
await waitFor(() => {
267+
expect(screen.queryByText('1 team member added successfully.')).not.toBeInTheDocument();
268+
});
269+
});
270+
271+
it('displays loading state when adding team member', async () => {
272+
const user = userEvent.setup();
273+
274+
// Mock loading state
275+
(useAddTeamMember as jest.Mock).mockReturnValue({
276+
mutate: mockMutate,
277+
isPending: true,
278+
isError: false,
279+
isSuccess: false,
280+
} as any);
281+
282+
renderWrapper(<AddNewTeamMemberTrigger libraryId={mockLibraryId} />);
283+
284+
const triggerButton = screen.getByRole('button', { name: /add new team member/i });
285+
await user.click(triggerButton);
286+
287+
// Loading indicator should be visible in the modal
288+
expect(screen.getByTestId('loading-indicator')).toBeInTheDocument();
289+
});
238290
});

0 commit comments

Comments
 (0)