Skip to content

Commit 65a545b

Browse files
authored
feat: display saved_for_later course enrollments (#1498)
1 parent 2f6007c commit 65a545b

File tree

3 files changed

+24
-5
lines changed

3 files changed

+24
-5
lines changed

src/components/PeopleManagement/LearnerDetailPage/CourseEnrollments.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const CourseEnrollments = ({ enrollments, isLoading }) => {
1212
description: 'Message displayed when a learner has no course enrollments',
1313
});
1414

15-
const enrollmentTypes = ['assignmentsForDisplay', 'inProgress', 'upcoming', 'completed'];
15+
const enrollmentTypes = ['assignmentsForDisplay', 'inProgress', 'upcoming', 'savedForLater', 'completed'];
1616
const flattenedEnrollments = enrollmentTypes.flatMap(type => enrollments?.[type] || []);
1717
const hasEnrollments = flattenedEnrollments.length > 0;
1818

@@ -60,6 +60,7 @@ CourseEnrollments.propTypes = {
6060
completed: PropTypes.arrayOf(enrollmentShape),
6161
inProgress: PropTypes.arrayOf(enrollmentShape),
6262
upcoming: PropTypes.arrayOf(enrollmentShape),
63+
savedForLater: PropTypes.arrayOf(enrollmentShape),
6364
assignmentsForDisplay: PropTypes.arrayOf(enrollmentShape),
6465
}).isRequired,
6566
isLoading: PropTypes.bool.isRequired,

src/components/PeopleManagement/LearnerDetailPage/EnrollmentCard.jsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ const EnrollmentCard = ({ enrollment, enterpriseSlug }) => {
2323
case 'upcoming': {
2424
return (<Badge variant="info">Upcoming</Badge>);
2525
}
26+
case 'saved_for_later': {
27+
return (<Badge variant="dark">Saved for later</Badge>);
28+
}
2629
default: {
2730
return (<Badge variant="info">Assigned</Badge>);
2831
}

src/components/PeopleManagement/tests/CourseEnrollments.test.jsx

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,14 @@ const mockEnrollments = {
4141
courseRunStatus: 'completed',
4242
},
4343
],
44+
savedForLater: [
45+
{
46+
uuid: '5',
47+
courseKey: 'course-5',
48+
displayName: 'Course 5',
49+
courseRunStatus: 'saved_for_later',
50+
},
51+
],
4452
assignmentsForDisplay: [
4553
{
4654
uuid: '4',
@@ -84,31 +92,38 @@ describe('CourseEnrollments', () => {
8492
it('renders in-progress enrollments', () => {
8593
renderComponent({ enrollments: mockEnrollments, isLoading: false });
8694
const enrollmentCards = screen.getAllByTestId('enrollment-card');
87-
expect(enrollmentCards).toHaveLength(4);
95+
expect(enrollmentCards).toHaveLength(5);
8896
expect(screen.getByText('Course 1')).toBeInTheDocument();
8997
});
9098

9199
it('renders upcoming enrollments', () => {
92100
renderComponent({ enrollments: mockEnrollments, isLoading: false });
93101
const enrollmentCards = screen.getAllByTestId('enrollment-card');
94-
expect(enrollmentCards).toHaveLength(4);
102+
expect(enrollmentCards).toHaveLength(5);
95103
expect(screen.getByText('Course 2')).toBeInTheDocument();
96104
});
97105

98106
it('renders completed enrollments', () => {
99107
renderComponent({ enrollments: mockEnrollments, isLoading: false });
100108
const enrollmentCards = screen.getAllByTestId('enrollment-card');
101-
expect(enrollmentCards).toHaveLength(4);
109+
expect(enrollmentCards).toHaveLength(5);
102110
expect(screen.getByText('Course 3')).toBeInTheDocument();
103111
});
104112

105113
it('renders assigned enrollments', () => {
106114
renderComponent({ enrollments: mockEnrollments, isLoading: false });
107115
const enrollmentCards = screen.getAllByTestId('enrollment-card');
108-
expect(enrollmentCards).toHaveLength(4);
116+
expect(enrollmentCards).toHaveLength(5);
109117
expect(screen.getByText('Course 4')).toBeInTheDocument();
110118
});
111119

120+
it('renders saved for later enrollments', () => {
121+
renderComponent({ enrollments: mockEnrollments, isLoading: false });
122+
const enrollmentCards = screen.getAllByTestId('enrollment-card');
123+
expect(enrollmentCards).toHaveLength(5);
124+
expect(screen.getByText('Course 5')).toBeInTheDocument();
125+
});
126+
112127
it('renders enrollments header', () => {
113128
renderComponent({ enrollments: mockEnrollments, isLoading: false });
114129
expect(screen.getByText('Enrollments')).toBeInTheDocument();

0 commit comments

Comments
 (0)