chore: course banner hook tests

This commit is contained in:
Ben Warzeski
2022-07-19 15:21:29 -04:00
parent be44f04a24
commit 25fb5cc41c
2 changed files with 48 additions and 7 deletions

View File

@@ -0,0 +1,39 @@
import { useIntl } from '@edx/frontend-platform/i18n';
import { selectors } from 'data/redux';
import { testCardValues } from 'testUtils';
import * as appHooks from 'hooks';
import * as hooks from './hooks';
const { fieldKeys } = selectors.cardData;
const courseNumber = 'my-test-course-number';
describe('CourseCard banner hooks', () => {
let out;
const { formatMessage } = useIntl();
describe('useCourseBannerData', () => {
const courseData = {
isVerified: false,
isCourseRunActive: false,
canUpgrade: false,
isAuditAcessExpired: false,
courseWebsite: 'test-course-website',
};
beforeEach(() => {
appHooks.useCardValues.mockReturnValueOnce(courseData);
out = hooks.useCourseBannerData({ courseNumber });
});
testCardValues(courseNumber, {
isVerified: fieldKeys.isVerified,
isCourseRunActive: fieldKeys.isCourseRunActive,
canUpgrade: fieldKeys.canUpgrade,
isAuditAccessExpired: fieldKeys.isAuditAccessExpired,
courseWebsite: fieldKeys.courseWebsite,
});
it('forwards formatMessage from useIntl', () => {
expect(out.formatMessage).toEqual(formatMessage);
});
});
});

View File

@@ -18,19 +18,21 @@ jest.mock('react', () => ({
jest.mock('@edx/frontend-platform/i18n', () => {
const i18n = jest.requireActual('@edx/frontend-platform/i18n');
const PropTypes = jest.requireActual('prop-types');
const formatMessage = jest.fn((msg) => (
<formatMessage
msg={msg.defaultMessage}
{...(msg.values && { values: msg.values })}
/>
));
const formatDate = jest.fn().mockName('useIntl.formatDate');
return {
...i18n,
intlShape: PropTypes.shape({
formatMessage: PropTypes.func,
}),
useIntl: () => ({
formatMessage: (msg) => (
<formatMessage
msg={msg.defaultMessage}
{...(msg.values && { values: msg.values })}
/>
),
formatDate: jest.fn().mockName('useIntl.formatDate'),
formatMessage,
formatDate,
}),
IntlProvider: () => 'IntlProvider',
defineMessages: m => m,