Files
frontend-app-learner-dashboard/src/containers/CourseCard/components/CourseCardActions/ViewCourseButton.test.jsx
leangseu-edx 2ee19988b3 components unit test (#23)
Co-authored-by: Ben Warzeski <bwarzeski@edx.org>
2022-09-27 12:48:33 -04:00

50 lines
1.8 KiB
JavaScript

import { shallow } from 'enzyme';
import { hooks } from 'data/redux';
import ViewCourseButton from './ViewCourseButton';
jest.mock('data/redux', () => ({
hooks: {
useCardCourseRunData: jest.fn(),
useCardEnrollmentData: jest.fn(),
useCardEntitlementData: jest.fn(),
},
}));
describe('ViewCourseButton', () => {
const props = {
cardId: 'cardId',
};
const marketingUrl = 'marketingUrl';
hooks.useCardCourseRunData.mockReturnValue({ marketingUrl });
const createWrapper = ({ hasAccess, isEntitlement, isExpired }) => {
hooks.useCardEnrollmentData.mockReturnValueOnce({ hasAccess });
hooks.useCardEntitlementData.mockReturnValueOnce({ isEntitlement, isExpired });
return shallow(<ViewCourseButton {...props} />);
};
describe('snapshot', () => {
test('default button', () => {
const wrapper = createWrapper({ hasAccess: true, isEntitlement: false, isExpired: false });
expect(wrapper).toMatchSnapshot();
});
test('disabled button', () => {
const wrapper = createWrapper({ hasAccess: false, isEntitlement: false, isExpired: false });
expect(wrapper).toMatchSnapshot();
});
});
describe('behavior', () => {
it('disabled button without access', () => {
const wrapper = createWrapper({ hasAccess: false, isEntitlement: false, isExpired: false });
expect(wrapper.prop('disabled')).toEqual(true);
});
it('disabled button with access', () => {
const wrapper = createWrapper({ hasAccess: true, isEntitlement: true, isExpired: true });
expect(wrapper.prop('disabled')).toEqual(true);
});
it('enabled button', () => {
const wrapper = createWrapper({ hasAccess: true, isEntitlement: false, isExpired: false });
expect(wrapper.prop('disabled')).toEqual(false);
});
});
});