70 lines
2.4 KiB
JavaScript
70 lines
2.4 KiB
JavaScript
import { shallow } from 'enzyme';
|
|
|
|
import { htmlProps } from 'data/constants/htmlKeys';
|
|
import { hooks } from 'data/redux';
|
|
import ResumeButton from './ResumeButton';
|
|
|
|
jest.mock('data/redux', () => ({
|
|
hooks: {
|
|
useCardCourseRunData: jest.fn(() => ({ resumeUrl: 'resumeUrl' })),
|
|
useCardEnrollmentData: jest.fn(() => ({
|
|
hasAccess: true,
|
|
isAudit: true,
|
|
isAuditAccessExpired: false,
|
|
})),
|
|
useMasqueradeData: jest.fn(() => ({ isMasquerading: false })),
|
|
},
|
|
}));
|
|
jest.mock('./ActionButton', () => 'ActionButton');
|
|
|
|
const { resumeUrl } = hooks.useCardCourseRunData();
|
|
|
|
describe('ResumeButton', () => {
|
|
const props = {
|
|
cardId: 'cardId',
|
|
};
|
|
describe('snapshot', () => {
|
|
test('renders default button when learner has access to the course', () => {
|
|
const wrapper = shallow(<ResumeButton {...props} />);
|
|
expect(wrapper).toMatchSnapshot();
|
|
expect(wrapper.prop(htmlProps.disabled)).toEqual(false);
|
|
expect(wrapper.prop(htmlProps.href)).toEqual(resumeUrl);
|
|
});
|
|
});
|
|
describe('behavior', () => {
|
|
it('initializes course run data based on cardId', () => {
|
|
shallow(<ResumeButton {...props} />);
|
|
expect(hooks.useCardCourseRunData).toHaveBeenCalledWith(props.cardId);
|
|
});
|
|
it('initializes course enrollment data based on cardId', () => {
|
|
shallow(<ResumeButton {...props} />);
|
|
expect(hooks.useCardEnrollmentData).toHaveBeenCalledWith(props.cardId);
|
|
});
|
|
describe('disabled states', () => {
|
|
test('masquerading', () => {
|
|
hooks.useMasqueradeData.mockReturnValueOnce({ isMasquerading: true });
|
|
const wrapper = shallow(<ResumeButton {...props} />);
|
|
expect(wrapper.prop(htmlProps.disabled)).toEqual(true);
|
|
});
|
|
test('learner does not have access', () => {
|
|
hooks.useCardEnrollmentData.mockReturnValueOnce({
|
|
hasAccess: false,
|
|
isAudit: true,
|
|
isAuditAccessExpired: false,
|
|
});
|
|
const wrapper = shallow(<ResumeButton {...props} />);
|
|
expect(wrapper.prop(htmlProps.disabled)).toEqual(true);
|
|
});
|
|
test('audit access expired', () => {
|
|
hooks.useCardEnrollmentData.mockReturnValueOnce({
|
|
hasAccess: true,
|
|
isAudit: true,
|
|
isAuditAccessExpired: true,
|
|
});
|
|
const wrapper = shallow(<ResumeButton {...props} />);
|
|
expect(wrapper.prop(htmlProps.disabled)).toEqual(true);
|
|
});
|
|
});
|
|
});
|
|
});
|