fix: Bug-doc fixes (#52)

Co-authored-by: Leangseu Kim <lkim@edx.org>
This commit is contained in:
Ben Warzeski
2022-10-25 15:36:33 -04:00
committed by GitHub
parent f8b181e8c9
commit 61e484af1f
27 changed files with 404 additions and 165 deletions

View File

@@ -1,10 +1,9 @@
import { StrictDict } from 'utils';
import urls from 'data/services/lms/urls';
import { baseAppUrl, learningMfeUrl } from 'data/services/lms/urls';
import * as module from './courseCard';
import * as simpleSelectors from './simpleSelectors';
const { baseAppUrl, learningMfeUrl } = urls;
const { cardSimpleSelectors, mkCardSelector } = simpleSelectors;
const today = new Date();
@@ -21,7 +20,7 @@ export const courseCard = StrictDict({
const isAvailable = availableDate <= new Date();
return {
availableDate,
certPreviewUrl: certificate.certPreviewUrl,
certPreviewUrl: baseAppUrl(certificate.certPreviewUrl),
isDownloadable: certificate.isDownloadable,
isEarnedButUnavailable: certificate.isEarned && !isAvailable,
isRestricted: certificate.isRestricted,
@@ -96,7 +95,11 @@ export const courseCard = StrictDict({
}
const deadline = new Date(entitlement.changeDeadline);
const deadlinePassed = deadline < today;
const showExpirationWarning = !deadlinePassed && deadline <= dateSixMonthsFromNow;
const showExpirationWarning = (
!entitlement.isFulfilled
&& !deadlinePassed
&& deadline <= dateSixMonthsFromNow
);
return {
isEntitlement: true,

View File

@@ -84,11 +84,13 @@ describe('courseCard selectors module', () => {
it('passes availableDate, converted to a date', () => {
expect(selected.availableDate).toMatchObject(new Date(testData.availableDate));
});
it('passes [certPreviewUrl, isDownloadable, isRestricted]', () => {
expect(selected.certPreviewUrl).toEqual(testData.certPreviewUrl);
it('passes [isDownloadable, isRestricted]', () => {
expect(selected.isDownloadable).toEqual(testData.isDownloadable);
expect(selected.isRestricted).toEqual(testData.isRestricted);
});
it('passes certPreviewUrl as app url', () => {
expect(selected.certPreviewUrl).toEqual(baseAppUrl(testData.certPreviewUrl));
});
describe('isEarnedButUnavailable', () => {
it('passes true iff certificate is earned but availableDate is in the future', () => {
const testSelector = (data, expected) => {
@@ -278,16 +280,16 @@ describe('courseCard selectors module', () => {
expect(selector({ ...testData, changeDeadline: dates.yesterday }).canChange).toEqual(false);
expect(selector({ ...testData, changeDeadline: dates.tomorrow }).canChange).toEqual(true);
});
it('passes showExpirationWarning if the deadline is 0-6 months in the future', () => {
expect(
selector({ ...testData, changeDeadline: dates.yesterday }).showExpirationWarning,
).toEqual(false);
expect(
selector({ ...testData, changeDeadline: dates.tomorrow }).showExpirationWarning,
).toEqual(true);
expect(
selector({ ...testData, changeDeadline: dates.nextYear }).showExpirationWarning,
).toEqual(false);
it('passes showExpirationWarning if the deadline is 0-6 months in the future and not fulfilled', () => {
const testSelector = ({ isFulfilled, changeDeadline }, expected) => {
expect(
selector({ ...testData, isFulfilled, changeDeadline }).showExpirationWarning,
).toEqual(expected);
};
testSelector({ isFulfilled: false, changeDeadline: dates.yesterday }, false);
testSelector({ isFulfilled: false, changeDeadline: dates.tomorrow }, true);
testSelector({ isFulfilled: false, changeDeadline: dates.nextYear }, false);
testSelector({ isFulfilled: true, changeDeadline: dates.nextYear }, false);
});
});
describe('gradeData selector', () => {

View File

@@ -64,4 +64,5 @@ export const useUpdateSelectSessionModalCallback = (dispatch, cardId) => () => d
export const useMasqueradeData = () => useSelector(requestSelectors.masquerade);
export const useIsPendingRequest = (requestName) => useSelector(requestSelectors.isPending(requestName));
export const useRequestIsPending = (requestName) => useSelector(requestSelectors.isPending(requestName));
export const useRequestIsFailed = (requestName) => useSelector(requestSelectors.isFailed(requestName));

View File

@@ -12,8 +12,10 @@ const courseUnenroll = `${baseUrl}/change_enrollment`;
const updateEmailSettings = `${api}/change_email_settings`;
const entitlementEnrollment = (uuid) => `${api}/entitlements/v1/entitlements/${uuid}/enrollments`;
const baseAppUrl = (url) => baseUrl + url;
const learningMfeUrl = (url) => configuration.LEARNING_MICROFRONTEND_URL + url;
const isAbsoluteUrl = (url) => url.startsWith('http://') || url.startsWith('https://');
export const baseAppUrl = (url) => (isAbsoluteUrl(url) ? url : baseUrl + url);
export const learningMfeUrl = (url) => (isAbsoluteUrl(url) ? url : configuration.LEARNING_MICROFRONTEND_URL + url);
// static view url
const programsUrl = baseAppUrl('/dashboard/programs');