diff --git a/src/containers/CourseCard/components/CourseCardMenu/__snapshots__/index.test.jsx.snap b/src/containers/CourseCard/components/CourseCardMenu/__snapshots__/index.test.jsx.snap index b589c87..09cfc87 100644 --- a/src/containers/CourseCard/components/CourseCardMenu/__snapshots__/index.test.jsx.snap +++ b/src/containers/CourseCard/components/CourseCardMenu/__snapshots__/index.test.jsx.snap @@ -1,64 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`CourseCardMenu disable and stop rendering buttons snapshot when no dropdown items exist 1`] = ` - - - - - - Unenroll - - - Email settings - - - Share to Facebook - - - Share to Twitter - - - - - - -`; - exports[`CourseCardMenu enrolled, share enabled, email setting enable snapshot 1`] = ` @@ -176,3 +117,24 @@ exports[`CourseCardMenu masquerading snapshot 1`] = ` /> `; + +exports[`CourseCardMenu not enrolled, share disabled, email setting disabled snapshot 1`] = ` + + + + + + + +`; diff --git a/src/containers/CourseCard/components/CourseCardMenu/index.jsx b/src/containers/CourseCard/components/CourseCardMenu/index.jsx index c674b04..f2c4524 100644 --- a/src/containers/CourseCard/components/CourseCardMenu/index.jsx +++ b/src/containers/CourseCard/components/CourseCardMenu/index.jsx @@ -25,7 +25,6 @@ export const CourseCardMenu = ({ cardId }) => { const { isEnrolled, isEmailEnabled } = reduxHooks.useCardEnrollmentData(cardId); const { twitter, facebook } = reduxHooks.useCardSocialSettingsData(cardId); const { isMasquerading } = reduxHooks.useMasqueradeData(); - const { isEarned } = reduxHooks.useCardCertificateData(cardId); const handleTwitterShare = reduxHooks.useTrackCourseEvent( track.socialShare, cardId, @@ -41,13 +40,6 @@ export const CourseCardMenu = ({ cardId }) => { const unenrollModal = useUnenrollData(); const handleToggleDropdown = useHandleToggleDropdown(cardId); - const showUnenrollItem = isEnrolled && !isEarned; - const showDropdown = showUnenrollItem || isEmailEnabled || facebook.isEnabled || twitter.isEnabled; - - if (!showDropdown) { - return null; - } - return ( <> @@ -60,7 +52,7 @@ export const CourseCardMenu = ({ cardId }) => { alt={formatMessage(messages.dropdownAlt)} /> - {showUnenrollItem && ( + {isEnrolled && ( ({ useCardEnrollmentData: jest.fn(), useCardSocialSettingsData: jest.fn(), useMasqueradeData: jest.fn(), - useCardCertificateData: jest.fn(), useTrackCourseEvent: (_, __, site) => jest.fn().mockName(`${site}ShareClick`), }, })); @@ -54,43 +53,17 @@ let wrapper; let el; describe('CourseCardMenu', () => { - const mockCourseCardMenu = ({ - isEnrolled, - isEmailEnabled, - isMasquerading, - facebook, - twitter, - isEarned, - }) => { - useEmailSettings.mockReturnValueOnce(defaultEmailSettingsModal); - useUnenrollData.mockReturnValueOnce(defaultUnenrollModal); - reduxHooks.useCardCourseData.mockReturnValueOnce({ courseName }); - reduxHooks.useCardSocialSettingsData.mockReturnValueOnce({ - facebook: { - ...defaultSocialShare.facebook, - ...facebook, - }, - twitter: { - ...defaultSocialShare.twitter, - ...twitter, - }, - }); - reduxHooks.useCardEnrollmentData.mockReturnValueOnce({ - isEnrolled, - isEmailEnabled, - }); - reduxHooks.useMasqueradeData.mockReturnValueOnce({ isMasquerading }); - reduxHooks.useCardCertificateData.mockReturnValueOnce({ isEarned }); - return shallow(); - }; + beforeEach(() => { + useEmailSettings.mockReturnValue(defaultEmailSettingsModal); + useUnenrollData.mockReturnValue(defaultUnenrollModal); + reduxHooks.useCardSocialSettingsData.mockReturnValue(defaultSocialShare); + reduxHooks.useCardCourseData.mockReturnValue({ courseName }); + reduxHooks.useCardEnrollmentData.mockReturnValue({ isEnrolled: true, isEmailEnabled: true }); + reduxHooks.useMasqueradeData.mockReturnValue({ isMasquerading: false }); + }); describe('enrolled, share enabled, email setting enable', () => { beforeEach(() => { - wrapper = mockCourseCardMenu({ - isEnrolled: true, - isEmailEnabled: true, - isMasquerading: false, - isEarned: false, - }); + wrapper = shallow(); }); test('snapshot', () => { expect(wrapper).toMatchSnapshot(); @@ -116,84 +89,36 @@ describe('CourseCardMenu', () => { expect(el.props().disabled).toEqual(false); }); }); - describe('disable and stop rendering buttons', () => { - it('does not render unenroll dropdown item when certificate is already earned', () => { - wrapper = mockCourseCardMenu({ - isEnrolled: true, - isEmailEnabled: true, - isMasquerading: false, - isEarned: true, + describe('not enrolled, share disabled, email setting disabled', () => { + beforeEach(() => { + reduxHooks.useCardSocialSettingsData.mockReturnValueOnce({ + ...defaultSocialShare, + twitter: { ...defaultSocialShare.twitter, isEnabled: false }, + facebook: { ...defaultSocialShare.facebook, isEnabled: false }, }); + reduxHooks.useCardEnrollmentData.mockReturnValueOnce({ isEnrolled: false, isEmailEnabled: false }); + wrapper = shallow(); + }); + test('snapshot', () => { + expect(wrapper).toMatchSnapshot(); + }); + it('does not renders share buttons', () => { + expect(wrapper.find('FacebookShareButton').length).toEqual(0); + expect(wrapper.find('TwitterShareButton').length).toEqual(0); + }); + it('does not render unenroll modal toggle', () => { el = wrapper.find({ 'data-testid': 'unenrollModalToggle' }); expect(el.length).toEqual(0); }); - it('does not render unenroll dropdown item when course is not enrolled', () => { - wrapper = mockCourseCardMenu({ - isEnrolled: false, - isEmailEnabled: true, - isMasquerading: false, - isEarned: false, - }); - el = wrapper.find({ 'data-testid': 'unenrollModalToggle' }); - expect(el.length).toEqual(0); - }); - it('does not render email settings modal toggle when email is not enabled', () => { - wrapper = mockCourseCardMenu({ - isEnrolled: true, - isEmailEnabled: false, - isMasquerading: false, - isEarned: false, - }); + it('does not render email settings modal toggle', () => { el = wrapper.find({ 'data-testid': 'emailSettingsModalToggle' }); expect(el.length).toEqual(0); }); - it('does not render facebook share button when facebook is not enabled', () => { - wrapper = mockCourseCardMenu({ - isEnrolled: true, - isEmailEnabled: true, - facebook: { - ...defaultSocialShare.facebook, - isEnabled: false, - }, - isMasquerading: false, - isEarned: false, - }); - el = wrapper.find('FacebookShareButton'); - expect(el.length).toEqual(0); - }); - it('does not render twitter share button when twitter is not enabled', () => { - wrapper = mockCourseCardMenu({ - isEnrolled: true, - isEmailEnabled: true, - twitter: { - ...defaultSocialShare.twitter, - isEnabled: false, - }, - isMasquerading: false, - isEarned: false, - }); - el = wrapper.find('TwitterShareButton'); - expect(el.length).toEqual(0); - }); - it('snapshot when no dropdown items exist', () => { - wrapper = mockCourseCardMenu({ - isEnrolled: true, - isEmailEnabled: true, - isMasquerading: false, - isEarned: false, - }); - expect(wrapper).toMatchSnapshot(); - expect(wrapper).toEqual({}); - }); }); describe('masquerading', () => { beforeEach(() => { - wrapper = mockCourseCardMenu({ - isEnrolled: true, - isEmailEnabled: true, - isMasquerading: true, - isEarned: false, - }); + reduxHooks.useMasqueradeData.mockReturnValue({ isMasquerading: true }); + wrapper = shallow(); }); test('snapshot', () => { expect(wrapper).toMatchSnapshot(); diff --git a/src/data/redux/app/selectors/courseCard.js b/src/data/redux/app/selectors/courseCard.js index edfe048..01faaca 100644 --- a/src/data/redux/app/selectors/courseCard.js +++ b/src/data/redux/app/selectors/courseCard.js @@ -24,7 +24,6 @@ export const courseCard = StrictDict({ isDownloadable: certificate.isDownloadable, isEarnedButUnavailable: certificate.isEarned && !isAvailable, isRestricted: certificate.isRestricted, - isEarned: certificate.isEarned, }; }, ),