feat: separate no courses and course list into slots

*  this creates a plug-in slot with an ID for each of no courses and course list

FIXES: APER-3304
This commit is contained in:
Deborah Kaplan
2024-04-04 17:22:26 -04:00
committed by GitHub
parent b8e08d8a8f
commit 11bf6f2554
3 changed files with 31 additions and 12 deletions

View File

@@ -18,7 +18,11 @@ exports[`CoursesPanel no courses snapshot 1`] = `
<CourseFilterControls />
</div>
</div>
<NoCoursesView />
<PluginSlot
id="no_courses_view"
>
<NoCoursesView />
</PluginSlot>
</div>
`;
@@ -40,12 +44,16 @@ exports[`CoursesPanel with courses snapshot 1`] = `
<CourseFilterControls />
</div>
</div>
<CourseList
filterOptions={Object {}}
numPages={1}
setPageNumber={[MockFunction setPageNumber]}
showFilters={false}
visibleList={Array []}
/>
<PluginSlot
id="course_list"
>
<CourseList
filterOptions={Object {}}
numPages={1}
setPageNumber={[MockFunction setPageNumber]}
showFilters={false}
visibleList={Array []}
/>
</PluginSlot>
</div>
`;

View File

@@ -1,5 +1,6 @@
import React from 'react';
import { PluginSlot } from '@openedx/frontend-plugin-framework';
import { useIntl } from '@edx/frontend-platform/i18n';
import { reduxHooks } from 'hooks';
@@ -33,12 +34,19 @@ export const CoursesPanel = () => {
<CourseFilterControls {...courseListData.filterOptions} />
</div>
</div>
{hasCourses
? (
{hasCourses ? (
<PluginSlot
id="course_list"
>
<CourseList {...courseListData} />
) : (
</PluginSlot>
) : (
<PluginSlot
id="no_courses_view"
>
<NoCoursesView />
)}
</PluginSlot>
)}
</div>
);
};

View File

@@ -17,6 +17,9 @@ jest.mock('containers/CourseFilterControls', () => ({
ActiveCourseFilters: 'ActiveCourseFilters',
CourseFilterControls: 'CourseFilterControls',
}));
jest.mock('@openedx/frontend-plugin-framework', () => ({
PluginSlot: 'PluginSlot',
}));
jest.mock('./CourseList', () => 'CourseList');
reduxHooks.useHasCourses.mockReturnValue(true);