Skip to content

Commit 00ddf20

Browse files
fix: enroll button doesn't show up for customer with B&R budget + Codes (#1401)
1 parent ce5ddee commit 00ddf20

File tree

3 files changed

+25
-3
lines changed

3 files changed

+25
-3
lines changed

src/components/course/course-header/deprecated/CourseRunCard.jsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
useCanUserRequestSubsidyForCourse,
2222
useCourseEnrollmentUrl,
2323
useUserHasSubsidyRequestForCourse,
24+
useUserHasLearnerCreditRequestForCourse,
2425
useUserSubsidyApplicableToCourse,
2526
} from '../../data/hooks';
2627
import { determineEnrollmentType } from '../../enrollment/utils';
@@ -84,6 +85,7 @@ const CourseRunCard = ({
8485
const { userSubsidyApplicableToCourse } = useUserSubsidyApplicableToCourse();
8586

8687
const userHasSubsidyRequestForCourse = useUserHasSubsidyRequestForCourse(courseKey);
88+
const userHasLearnerCreditRequest = useUserHasLearnerCreditRequestForCourse(courseKey, ['requested']);
8789

8890
const sku = useMemo(
8991
() => findHighestLevelSku({ seats, courseEntitlements }),
@@ -104,6 +106,7 @@ const CourseRunCard = ({
104106
const enrollmentType = determineEnrollmentType({
105107
subsidyData: { userSubsidyApplicableToCourse },
106108
userHasSubsidyRequestForCourse,
109+
userHasLearnerCreditRequest,
107110
isUserEnrolled,
108111
isEnrollable,
109112
isCourseStarted,

src/components/course/enrollment/tests/utils.test.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ describe('determineEnrollmentType', () => {
2222
isCourseStarted: true,
2323
subsidyData: { userSubsidyApplicableToCourse: null },
2424
userHasSubsidyRequestForCourse: false,
25+
userHasLearnerCreditRequest: false,
2526
};
2627

2728
test('resolves user-enrolled, course-started to "to courseware page" type', () => {
@@ -94,6 +95,20 @@ describe('determineEnrollmentType', () => {
9495
expect(determineEnrollmentType(args)).toBe(HIDE_BUTTON);
9596
});
9697

98+
test('prioritizes direct subsidy over a requestable one', () => {
99+
const args = {
100+
...baseArgs,
101+
subsidyData: {
102+
...baseArgs.subsidyData,
103+
userSubsidyApplicableToCourse: { subsidyType: LICENSE_SUBSIDY_TYPE },
104+
},
105+
userCanRequestSubsidyForCourse: true,
106+
userHasSubsidyRequestForCourse: false,
107+
userHasLearnerCreditRequest: false,
108+
};
109+
expect(determineEnrollmentType(args)).toBe(TO_DATASHARING_CONSENT);
110+
});
111+
97112
test.each([
98113
{ hasSubsidyData: true },
99114
{ hasSubsidyData: false },

src/components/course/enrollment/utils.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,20 @@ export function determineEnrollmentType({
5555
isEnrollable,
5656
isCourseStarted,
5757
userHasSubsidyRequestForCourse,
58+
userHasLearnerCreditRequest,
5859
isExecutiveEducation2UCourse,
5960
userCanRequestSubsidyForCourse,
6061
}) {
6162
if (isUserEnrolled) {
6263
return isCourseStarted ? TO_COURSEWARE_PAGE : VIEW_ON_DASHBOARD;
6364
}
6465

65-
// Hide enroll button if learner can request a subsidy for the course, or
66-
// already has an pending subsidy request for the course.
67-
if (userHasSubsidyRequestForCourse || userCanRequestSubsidyForCourse) {
66+
// Hide enroll button if learner can request a subsidy for the course (and has no direct subsidy),
67+
// or already has a pending subsidy request for the course.
68+
if (
69+
(userCanRequestSubsidyForCourse && !userSubsidyApplicableToCourse)
70+
|| userHasLearnerCreditRequest || userHasSubsidyRequestForCourse
71+
) {
6872
return HIDE_BUTTON;
6973
}
7074

0 commit comments

Comments
 (0)