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,
};
},
),