From 3022022044e4730c5ca44cf37f340027b5f64f99 Mon Sep 17 00:00:00 2001 From: Alexander Dusenbery Date: Tue, 22 Oct 2024 13:49:25 -0400 Subject: [PATCH] temp: move restrictionType check prior to check for late redemption --- .../data/tests/utils.test.js | 39 +++++++++++++++++++ .../learner-credit-management/data/utils.js | 14 +++---- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/src/components/learner-credit-management/data/tests/utils.test.js b/src/components/learner-credit-management/data/tests/utils.test.js index bcfb62022..9e0601403 100644 --- a/src/components/learner-credit-management/data/tests/utils.test.js +++ b/src/components/learner-credit-management/data/tests/utils.test.js @@ -1,6 +1,7 @@ import { createIntl } from '@edx/frontend-platform/i18n'; import dayjs from 'dayjs'; import { + getAssignableCourseRuns, getBudgetStatus, getTranslatedBudgetStatus, getTranslatedBudgetTerm, @@ -343,3 +344,41 @@ describe('startAndEnrollBySortLogic', () => { expect(sortedDates).toEqual(sampleData.sort((a, b) => a.expectedOrder - b.expectedOrder)); }); }); + +describe('getAssignableCourseRuns', () => { + it('includes a late, non-restricted course run when late-redemption eligible', () => { + const courseRuns = [ + { + key: 'the-course-run', + enrollBy: dayjs().subtract(1, 'day'), + hasEnrollBy: true, + upgradeDeadline: dayjs().add(1, 'day'), + start: dayjs().subtract(1, 'day'), + isActive: true, + }, + ]; + const subsidyExpirationDatetime = dayjs().add(100, 'day'); + const isLateRedemptionAllowed = true; + + const result = getAssignableCourseRuns({ courseRuns, subsidyExpirationDatetime, isLateRedemptionAllowed }); + expect(result.length).toEqual(1); + expect(result[0].key).toEqual('the-course-run'); + }); + it('returns an empty list given only a restricted run , even when late-redemption eligible', () => { + const courseRuns = [ + { + enrollBy: dayjs().subtract(1, 'day'), + hasEnrollBy: true, + restrictionType: 'b2b-enterprise', + upgradeDeadline: dayjs().subtract(1, 'day'), + start: dayjs().subtract(1, 'day'), + isActive: true, + }, + ]; + const subsidyExpirationDatetime = dayjs().add(100, 'day'); + const isLateRedemptionAllowed = true; + + const result = getAssignableCourseRuns({ courseRuns, subsidyExpirationDatetime, isLateRedemptionAllowed }); + expect(result).toEqual([]); + }); +}); diff --git a/src/components/learner-credit-management/data/utils.js b/src/components/learner-credit-management/data/utils.js index 38d47c3ff..c8a04981e 100644 --- a/src/components/learner-credit-management/data/utils.js +++ b/src/components/learner-credit-management/data/utils.js @@ -720,13 +720,6 @@ export const getAssignableCourseRuns = ({ courseRuns, subsidyExpirationDatetime, // the current date and subsidy expiration date have failed. return false; } - if (hasEnrollBy && isLateRedemptionAllowed && isDateBeforeToday(enrollBy)) { - // Special case: late enrollment has been enabled by ECS for this budget, and - // isEligibleForEnrollment already succeeded, so we know that late enrollment - // would be happy given enrollment deadline of the course. Now all we need - // to do is make sure the run itself is generally eligible for late enrollment - return isLateEnrollmentEligible; - } // ENT-9359 (epic for Custom Presentations/Restricted Runs): // Temporarily hide all restricted runs unconditionally on the run assignment // dropdown during implementation of the overall feature. ENT-9411 is most likely @@ -735,6 +728,13 @@ export const getAssignableCourseRuns = ({ courseRuns, subsidyExpirationDatetime, if (restrictionType) { return false; } + if (hasEnrollBy && isLateRedemptionAllowed && isDateBeforeToday(enrollBy)) { + // Special case: late enrollment has been enabled by ECS for this budget, and + // isEligibleForEnrollment already succeeded, so we know that late enrollment + // would be happy given enrollment deadline of the course. Now all we need + // to do is make sure the run itself is generally eligible for late enrollment + return isLateEnrollmentEligible; + } // General courseware filter return isActive; };