Revert "fix: stop user from unenroll after earned the certificate"
This reverts commit a479b7ead6.
This commit is contained in:
@@ -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`] = `
|
||||
<Fragment>
|
||||
<Dropdown>
|
||||
<Dropdown.Toggle
|
||||
alt="Course actions dropdown"
|
||||
as="IconButton"
|
||||
iconAs="Icon"
|
||||
id="course-actions-dropdown-test-card-id"
|
||||
src={[MockFunction icons.MoreVert]}
|
||||
variant="primary"
|
||||
/>
|
||||
<Dropdown.Menu>
|
||||
<Dropdown.Item
|
||||
data-testid="unenrollModalToggle"
|
||||
disabled={false}
|
||||
onClick={[MockFunction unenrollShow]}
|
||||
>
|
||||
Unenroll
|
||||
</Dropdown.Item>
|
||||
<Dropdown.Item
|
||||
data-testid="emailSettingsModalToggle"
|
||||
disabled={false}
|
||||
onClick={[MockFunction emailSettingShow]}
|
||||
>
|
||||
Email settings
|
||||
</Dropdown.Item>
|
||||
<FacebookShareButton
|
||||
className="pgn__dropdown-item dropdown-item"
|
||||
onClick={[MockFunction facebookShareClick]}
|
||||
resetButtonStyle={false}
|
||||
title="I'm taking test-course-name online with facebook-social-brand. Check it out!"
|
||||
url="facebook-share-url"
|
||||
>
|
||||
Share to Facebook
|
||||
</FacebookShareButton>
|
||||
<TwitterShareButton
|
||||
className="pgn__dropdown-item dropdown-item"
|
||||
onClick={[MockFunction twitterShareClick]}
|
||||
resetButtonStyle={false}
|
||||
title="I'm taking test-course-name online with twitter-social-brand. Check it out!"
|
||||
url="twitter-share-url"
|
||||
>
|
||||
Share to Twitter
|
||||
</TwitterShareButton>
|
||||
</Dropdown.Menu>
|
||||
</Dropdown>
|
||||
<UnenrollConfirmModal
|
||||
cardId="test-card-id"
|
||||
closeModal={[MockFunction unenrollHide]}
|
||||
show={false}
|
||||
/>
|
||||
<EmailSettingsModal
|
||||
cardId="test-card-id"
|
||||
closeModal={[MockFunction emailSettingHide]}
|
||||
show={false}
|
||||
/>
|
||||
</Fragment>
|
||||
`;
|
||||
|
||||
exports[`CourseCardMenu enrolled, share enabled, email setting enable snapshot 1`] = `
|
||||
<Fragment>
|
||||
<Dropdown>
|
||||
@@ -176,3 +117,24 @@ exports[`CourseCardMenu masquerading snapshot 1`] = `
|
||||
/>
|
||||
</Fragment>
|
||||
`;
|
||||
|
||||
exports[`CourseCardMenu not enrolled, share disabled, email setting disabled snapshot 1`] = `
|
||||
<Fragment>
|
||||
<Dropdown>
|
||||
<Dropdown.Toggle
|
||||
alt="Course actions dropdown"
|
||||
as="IconButton"
|
||||
iconAs="Icon"
|
||||
id="course-actions-dropdown-test-card-id"
|
||||
src={[MockFunction icons.MoreVert]}
|
||||
variant="primary"
|
||||
/>
|
||||
<Dropdown.Menu />
|
||||
</Dropdown>
|
||||
<UnenrollConfirmModal
|
||||
cardId="test-card-id"
|
||||
closeModal={[MockFunction unenrollHide]}
|
||||
show={false}
|
||||
/>
|
||||
</Fragment>
|
||||
`;
|
||||
|
||||
@@ -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 (
|
||||
<>
|
||||
<Dropdown onToggle={handleToggleDropdown}>
|
||||
@@ -60,7 +52,7 @@ export const CourseCardMenu = ({ cardId }) => {
|
||||
alt={formatMessage(messages.dropdownAlt)}
|
||||
/>
|
||||
<Dropdown.Menu>
|
||||
{showUnenrollItem && (
|
||||
{isEnrolled && (
|
||||
<Dropdown.Item
|
||||
disabled={isMasquerading}
|
||||
onClick={unenrollModal.show}
|
||||
|
||||
@@ -14,7 +14,6 @@ jest.mock('hooks', () => ({
|
||||
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(<CourseCardMenu {...props} />);
|
||||
};
|
||||
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(<CourseCardMenu {...props} />);
|
||||
});
|
||||
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(<CourseCardMenu {...props} />);
|
||||
});
|
||||
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(<CourseCardMenu {...props} />);
|
||||
});
|
||||
test('snapshot', () => {
|
||||
expect(wrapper).toMatchSnapshot();
|
||||
|
||||
@@ -24,7 +24,6 @@ export const courseCard = StrictDict({
|
||||
isDownloadable: certificate.isDownloadable,
|
||||
isEarnedButUnavailable: certificate.isEarned && !isAvailable,
|
||||
isRestricted: certificate.isRestricted,
|
||||
isEarned: certificate.isEarned,
|
||||
};
|
||||
},
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user