import { faker } from '@faker-js/faker'; import { mockAppRoot } from '@rocket.chat/mock-providers'; import { render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import DeleteRoomModal from './DeleteRoomModal'; const mockDispatchToastMessage = jest.fn(); jest.mock('@rocket.chat/ui-contexts', () => ({ ...jest.requireActual('@rocket.chat/ui-contexts'), useToastMessageDispatch: () => mockDispatchToastMessage, })); const baseAppRoot = mockAppRoot().withTranslations('en', 'core', { Edit: 'Edit', Remove: 'Remove', ABAC_Room_removed: 'Room {{roomName}} removed from ABAC management', ABAC_Delete_room: 'Remove room from ABAC management', ABAC_Delete_room_annotation: 'Proceed with caution', ABAC_Delete_room_content: 'Removing {{roomName}} from ABAC management may result in unintended users gaining access.', Cancel: 'Cancel', }); describe('DeleteRoomModal', () => { beforeEach(() => { jest.clearAllMocks(); }); const rid = faker.database.mongodbObjectId(); const roomName = 'Test Room'; it('should render without crashing', () => { const { baseElement } = render(, { wrapper: baseAppRoot.build(), }); expect(baseElement).toMatchSnapshot(); }); it('should call delete endpoint when delete is confirmed', async () => { const deleteEndpointMock = jest.fn().mockResolvedValue(null); render(, { wrapper: baseAppRoot.withEndpoint('DELETE', '/v1/abac/rooms/:rid/attributes', deleteEndpointMock).build(), }); await userEvent.click(screen.getByRole('button', { name: 'Remove' })); await waitFor(() => { expect(deleteEndpointMock).toHaveBeenCalled(); }); }); it('should show success toast when delete succeeds', async () => { const deleteEndpointMock = jest.fn().mockResolvedValue(null); render(, { wrapper: baseAppRoot.withEndpoint('DELETE', '/v1/abac/rooms/:rid/attributes', deleteEndpointMock).build(), }); await userEvent.click(screen.getByRole('button', { name: 'Remove' })); await waitFor(() => { expect(mockDispatchToastMessage).toHaveBeenCalledWith({ type: 'success', message: 'Room Test Room removed from ABAC management', }); }); }); });