71 lines
2.5 KiB
JavaScript
71 lines
2.5 KiB
JavaScript
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(<IntlProvider locale="en"><SelectSessionModal /></IntlProvider>);
|
|
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(<IntlProvider locale="en"><SelectSessionModal /></IntlProvider>);
|
|
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(<IntlProvider locale="en"><SelectSessionModal /></IntlProvider>);
|
|
const sessionOption = screen.getByDisplayValue(availableSessions[0].courseId);
|
|
expect(sessionOption).toBeInTheDocument();
|
|
const leaveOption = screen.queryByRole('radio', { name: formatMessage(messages.leaveSessionOption) });
|
|
expect(leaveOption).toBeNull();
|
|
});
|
|
});
|
|
});
|