feat: [FC-0056] create course outline sidebar (#1375)
This commit is contained in:
@@ -25,6 +25,7 @@ import { UserMessagesProvider } from './generic/user-messages';
|
||||
|
||||
import messages from './i18n';
|
||||
import { fetchCourse, fetchSequence } from './courseware/data';
|
||||
import { getCourseOutlineStructure } from './courseware/data/thunks';
|
||||
import { appendBrowserTimezoneToUrl, executeThunk } from './utils';
|
||||
import buildSimpleCourseAndSequenceMetadata from './courseware/data/__factories__/sequenceMetadata.factory';
|
||||
import { buildOutlineFromBlocks } from './courseware/data/__factories__/learningSequencesOutline.factory';
|
||||
@@ -152,7 +153,7 @@ export async function initializeTestStore(options = {}, overrideStore = true) {
|
||||
axiosMock.reset();
|
||||
|
||||
const {
|
||||
courseBlocks, sequenceBlocks, courseMetadata, sequenceMetadata, courseHomeMetadata,
|
||||
courseBlocks, sequenceBlocks, unitBlocks, courseMetadata, sequenceMetadata, courseHomeMetadata,
|
||||
} = buildSimpleCourseAndSequenceMetadata(options);
|
||||
|
||||
let courseMetadataUrl = `${getConfig().LMS_BASE_URL}/api/courseware/course/${courseMetadata.id}`;
|
||||
@@ -161,14 +162,29 @@ export async function initializeTestStore(options = {}, overrideStore = true) {
|
||||
const learningSequencesUrlRegExp = new RegExp(`${getConfig().LMS_BASE_URL}/api/learning_sequences/v1/course_outline/*`);
|
||||
let courseHomeMetadataUrl = `${getConfig().LMS_BASE_URL}/api/course_home/course_metadata/${courseMetadata.id}`;
|
||||
const discussionConfigUrl = new RegExp(`${getConfig().LMS_BASE_URL}/api/discussion/v1/courses/*`);
|
||||
const coursewareSidebarSettingsUrl = `${getConfig().LMS_BASE_URL}/courses/${courseMetadata.id}/courseware-navigation-sidebar/toggles/`;
|
||||
const outlineSidebarUrl = `${getConfig().LMS_BASE_URL}/api/course_home/v1/navigation/${courseMetadata.id}`;
|
||||
courseHomeMetadataUrl = appendBrowserTimezoneToUrl(courseHomeMetadataUrl);
|
||||
|
||||
const provider = options?.provider || 'legacy';
|
||||
const enableNavigationSidebar = options.enableNavigationSidebar || { enable_navigation_sidebar: true };
|
||||
const alwaysOpenAuxiliarySidebar = options.alwaysOpenAuxiliarySidebar || { always_open_auxiliary_sidebar: true };
|
||||
|
||||
axiosMock.onGet(courseMetadataUrl).reply(200, courseMetadata);
|
||||
axiosMock.onGet(courseHomeMetadataUrl).reply(200, courseHomeMetadata);
|
||||
axiosMock.onGet(learningSequencesUrlRegExp).reply(200, buildOutlineFromBlocks(courseBlocks));
|
||||
axiosMock.onGet(discussionConfigUrl).reply(200, { provider });
|
||||
axiosMock.onGet(coursewareSidebarSettingsUrl).reply(200, {
|
||||
...enableNavigationSidebar,
|
||||
...alwaysOpenAuxiliarySidebar,
|
||||
});
|
||||
|
||||
axiosMock.onGet(outlineSidebarUrl).reply(200, {
|
||||
...courseBlocks,
|
||||
...sequenceBlocks,
|
||||
...unitBlocks,
|
||||
});
|
||||
|
||||
sequenceMetadata.forEach(metadata => {
|
||||
const sequenceMetadataUrl = `${getConfig().LMS_BASE_URL}/api/courseware/sequence/${metadata.item_id}`;
|
||||
axiosMock.onGet(sequenceMetadataUrl).reply(200, metadata);
|
||||
@@ -181,6 +197,12 @@ export async function initializeTestStore(options = {}, overrideStore = true) {
|
||||
// eslint-disable-next-line no-unused-expressions
|
||||
!options.excludeFetchCourse && await executeThunk(fetchCourse(courseMetadata.id), store.dispatch);
|
||||
|
||||
// eslint-disable-next-line no-unused-expressions
|
||||
!options.excludeFetchOutlineSidebar && await executeThunk(
|
||||
getCourseOutlineStructure(courseMetadata.id),
|
||||
store.dispatch,
|
||||
);
|
||||
|
||||
if (!options.excludeFetchSequence) {
|
||||
await Promise.all(sequenceBlocks
|
||||
.map(block => executeThunk(fetchSequence(block.id), store.dispatch)));
|
||||
|
||||
Reference in New Issue
Block a user