Files
frontend-app-learner-dashboard/src/containers/CourseCard/components/CourseCardBanners/EntitlementBanner.test.jsx
2023-01-19 10:13:48 -05:00

64 lines
2.0 KiB
JavaScript

import React from 'react';
import { shallow } from 'enzyme';
import { reduxHooks } from 'hooks';
import EntitlementBanner from './EntitlementBanner';
jest.mock('components/Banner', () => 'Banner');
jest.mock('hooks', () => ({
utilHooks: {
useFormatDate: () => date => date,
},
reduxHooks: {
usePlatformSettingsData: jest.fn(),
useCardEntitlementData: jest.fn(),
useUpdateSelectSessionModalCallback: jest.fn(
(cardId) => jest.fn().mockName(`updateSelectSessionModalCallback(${cardId})`),
),
},
}));
const cardId = 'my-test-course-number';
let el;
const entitlementData = {
isEntitlement: true,
hasSessions: true,
isFulfilled: false,
changeDeadline: '11/11/2022',
showExpirationWarning: false,
};
const platformData = { supportEmail: 'test-support-email' };
const render = (overrides = {}) => {
const { entitlement = {} } = overrides;
reduxHooks.useCardEntitlementData.mockReturnValueOnce({ ...entitlementData, ...entitlement });
reduxHooks.usePlatformSettingsData.mockReturnValueOnce(platformData);
el = shallow(<EntitlementBanner cardId={cardId} />);
};
describe('EntitlementBanner', () => {
test('initializes data with course number from entitlement', () => {
render();
expect(reduxHooks.useCardEntitlementData).toHaveBeenCalledWith(cardId);
expect(reduxHooks.useUpdateSelectSessionModalCallback).toHaveBeenCalledWith(cardId);
});
test('no display if not an entitlement', () => {
render({ entitlement: { isEntitlement: false } });
expect(el.isEmptyRender()).toEqual(true);
});
test('snapshot: no sessions available', () => {
render({ entitlement: { isFulfilled: false, hasSessions: false } });
expect(el).toMatchSnapshot();
});
test('snapshot: expiration warning', () => {
render({ entitlement: { showExpirationWarning: true } });
expect(el).toMatchSnapshot();
});
test('no display if sessions available and not displaying warning', () => {
render();
expect(el.isEmptyRender()).toEqual(true);
});
});