import { mockAppRoot } from '@rocket.chat/mock-providers'; import { composeStories } from '@storybook/react'; import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { axe } from 'jest-axe'; import RoomInvite from './RoomInviteBody'; import * as stories from './RoomInviteBody.stories'; const testCases = Object.values(composeStories(stories)).map((Story) => [Story.storyName || 'Story', Story]); const appRoot = mockAppRoot().build(); describe('RoomInvite', () => { const onAccept = jest.fn(); const onReject = jest.fn(); const inviter = { username: 'rocket.cat', name: 'Rocket Cat', _id: 'rocket.cat', }; beforeEach(() => { jest.clearAllMocks(); }); test.each(testCases)(`renders %s without crashing`, async (_storyname, Story) => { const view = render(, { wrapper: appRoot }); expect(view.baseElement).toMatchSnapshot(); }); test.each(testCases)('%s should have no a11y violations', async (_storyname, Story) => { const { container } = render(, { wrapper: appRoot }); const results = await axe(container); expect(results).toHaveNoViolations(); }); it('should call onAccept when accept button is clicked', async () => { render(, { wrapper: appRoot }); await userEvent.click(screen.getByRole('button', { name: 'Accept' })); expect(onAccept).toHaveBeenCalled(); expect(onReject).not.toHaveBeenCalled(); }); it('should call onReject when reject button is clicked', async () => { render(, { wrapper: appRoot }); await userEvent.click(screen.getByRole('button', { name: 'Reject' })); expect(onReject).toHaveBeenCalled(); expect(onAccept).not.toHaveBeenCalled(); }); });