diff --git a/src/containers/CourseCard/components/Banners/hooks.test.js b/src/containers/CourseCard/components/Banners/hooks.test.js new file mode 100644 index 0000000..60c3ea1 --- /dev/null +++ b/src/containers/CourseCard/components/Banners/hooks.test.js @@ -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); + }); + }); +}); diff --git a/src/setupTest.jsx b/src/setupTest.jsx index 68e4c3f..da0b932 100755 --- a/src/setupTest.jsx +++ b/src/setupTest.jsx @@ -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) => ( + + )); + const formatDate = jest.fn().mockName('useIntl.formatDate'); return { ...i18n, intlShape: PropTypes.shape({ formatMessage: PropTypes.func, }), useIntl: () => ({ - formatMessage: (msg) => ( - - ), - formatDate: jest.fn().mockName('useIntl.formatDate'), + formatMessage, + formatDate, }), IntlProvider: () => 'IntlProvider', defineMessages: m => m,