Skip to content

Commit 2cd4bf1

Browse files
committed
feat: add support to hasUnmetPrerequisitesList in CourseBanner
1 parent a3e2c80 commit 2cd4bf1

File tree

3 files changed

+39
-4
lines changed

3 files changed

+39
-4
lines changed

src/containers/CourseCard/components/CourseCardBanners/CourseBanner.jsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@ export const CourseBanner = ({ cardId }) => {
1818
const { formatMessage } = useIntl();
1919
const formatDate = utilHooks.useFormatDate();
2020

21-
const { hasUnmetPrerequisites, isStaff, isTooEarly } = coursewareAccess;
21+
const {
22+
hasUnmetPrerequisites,
23+
isStaff,
24+
isTooEarly,
25+
hasUnmetPrerequisitesList,
26+
} = coursewareAccess;
2227

2328
if (isVerified) { return null; }
2429

@@ -44,7 +49,15 @@ export const CourseBanner = ({ cardId }) => {
4449
)}
4550

4651
{(!isStaff && hasUnmetPrerequisites) && (
47-
<Banner>{formatMessage(messages.prerequisitesNotMet)}</Banner>
52+
<Banner>
53+
{formatMessage(messages.prerequisitesNotMet)}
54+
{hasUnmetPrerequisitesList.length > 0 && hasUnmetPrerequisitesList.map((prerequisite, index) => (
55+
<>
56+
<span>{index > 0 ? ', ' : ' '}</span>
57+
<a href={prerequisite.about_url}>{prerequisite.display}</a>
58+
</>
59+
))}
60+
</Banner>
4861
)}
4962
</>
5063
);

src/containers/CourseCard/components/CourseCardBanners/CourseBanner.test.jsx

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,31 @@ describe('CourseBanner', () => {
7171
});
7272
describe('unmet prerequisites', () => {
7373
it('should display correct message', () => {
74-
renderCourseBanner({ enrollment: { coursewareAccess: { hasUnmetPrerequisites: true } } });
74+
renderCourseBanner({
75+
enrollment: {
76+
coursewareAccess: {
77+
hasUnmetPrerequisites: true,
78+
hasUnmetPrerequisitesList: [
79+
{
80+
display: 'Prereq Course 1',
81+
about_url: 'https://example.com/about-1',
82+
},
83+
{
84+
display: 'Prereq Course 2',
85+
about_url: 'https://example.com/about-2',
86+
},
87+
],
88+
},
89+
},
90+
});
7591
const preReqText = screen.getByText(formatMessage(messages.prerequisitesNotMet));
7692
expect(preReqText).toBeInTheDocument();
93+
const preReqList1 = screen.getByText('Prereq Course 1');
94+
const preReqList2 = screen.getByText('Prereq Course 2');
95+
expect(preReqList1).toBeInTheDocument();
96+
expect(preReqList2).toBeInTheDocument();
97+
expect(preReqList1).toHaveAttribute('href', 'https://example.com/about-1');
98+
expect(preReqList2).toHaveAttribute('href', 'https://example.com/about-2');
7799
});
78100
});
79101
describe('too early', () => {

src/containers/CourseCard/components/CourseCardBanners/messages.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ const messages = defineMessages({
9494
prerequisitesNotMet: {
9595
id: 'learner-dash.courseCard.banners.prerequisitesNotMet',
9696
description: 'Message to learners with unmet prerequisites',
97-
defaultMessage: 'You can\'t access this course just yet because you have not met the pre-requisites.',
97+
defaultMessage: 'You can\'t access this course just yet because you have not met the following pre-requisites:',
9898
},
9999
courseHasNotStarted: {
100100
id: 'learner-dash.courseCard.banners.courseHasNotStarted',

0 commit comments

Comments
 (0)