import { render, screen } from '@testing-library/react'; import { formatMessage } from 'testUtils'; import { IntlProvider } from '@edx/frontend-platform/i18n'; import hooks from './hooks'; import SelectSessionModal from '.'; import messages from './messages'; jest.mock('./hooks', () => ({ __esModule: true, default: jest.fn(), })); jest.unmock('@edx/frontend-platform/i18n'); jest.unmock('@openedx/paragon'); jest.unmock('react'); const hookReturn = { availableSessions: [], showModal: true, closeSessionModal: jest.fn().mockName('useSelectSessionModalData.closeSessionModal'), showLeaveOption: true, header: 'test-header', hint: 'test-hint', }; const availableSessions = [ { startDate: '1/2/2000', endDate: '1/2/2020', courseId: 'test-course-id-1' }, { startDate: '2/3/2000', endDate: '2/3/2020', courseId: 'test-course-id-2' }, { startDate: '3/4/2000', endDate: '3/4/2020', courseId: 'test-course-id-3' }, ]; describe('SelectSessionModal', () => { describe('renders', () => { it('empty modal with leave option ', () => { hooks.mockReturnValueOnce({ ...hookReturn, }); render(); const sessionOption = screen.queryByDisplayValue(availableSessions[0].courseId); expect(sessionOption).toBeNull(); const leaveOption = screen.getByRole('radio', { name: formatMessage(messages.leaveSessionOption) }); expect(leaveOption).toBeInTheDocument(); }); it('modal with leave option ', () => { hooks.mockReturnValueOnce({ ...hookReturn, availableSessions, }); render(); const sessionOption = screen.getByDisplayValue(availableSessions[0].courseId); expect(sessionOption).toBeInTheDocument(); const leaveOption = screen.getByRole('radio', { name: formatMessage(messages.leaveSessionOption) }); expect(leaveOption).toBeInTheDocument(); }); it('modal without leave option ', () => { hooks.mockReturnValueOnce({ ...hookReturn, availableSessions, showLeaveOption: false, }); render(); const sessionOption = screen.getByDisplayValue(availableSessions[0].courseId); expect(sessionOption).toBeInTheDocument(); const leaveOption = screen.queryByRole('radio', { name: formatMessage(messages.leaveSessionOption) }); expect(leaveOption).toBeNull(); }); }); });