Skip to content

Commit 9f86d15

Browse files
committed
refactor: Updates in FilesPage
1 parent 0d8b4b5 commit 9f86d15

3 files changed

Lines changed: 57 additions & 67 deletions

File tree

src/CourseAuthoringRoutes.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ const CourseAuthoringRoutes = () => {
6565
/>
6666
<Route
6767
path="assets"
68-
element={<PageWrap><FilesPage courseId={courseId} /></PageWrap>}
68+
element={<PageWrap><FilesPage /></PageWrap>}
6969
/>
7070
<Route
7171
path="videos"

src/files-and-videos/files-page/FilesPage.jsx

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
import { useIntl } from '@edx/frontend-platform/i18n';
2+
23
import { Container } from '@openedx/paragon';
34
import PropTypes from 'prop-types';
4-
import React, { useEffect } from 'react';
5+
import { useEffect } from 'react';
56
import { useDispatch, useSelector } from 'react-redux';
6-
import CourseFilesSlot from '../../plugin-slots/CourseFilesSlot';
7-
import Placeholder from '../../editors/Placeholder';
87

9-
import { RequestStatus } from '../../data/constants';
10-
import { useModel } from '../../generic/model-store';
11-
import getPageHeadTitle from '../../generic/utils';
12-
import EditFileAlertsSlot from '../../plugin-slots/EditFileAlertsSlot';
8+
import { useCourseAuthoringContext } from '@src/CourseAuthoringContext';
9+
import CourseFilesSlot from '@src/plugin-slots/CourseFilesSlot';
10+
import Placeholder from '@src/editors/Placeholder';
11+
import { RequestStatus } from '@src/data/constants';
12+
import getPageHeadTitle from '@src/generic/utils';
13+
import EditFileAlertsSlot from '@src/plugin-slots/EditFileAlertsSlot';
14+
1315
import { EditFileErrors } from '../generic';
1416
import { fetchAssets, resetErrors } from './data/thunks';
1517
import FilesPageProvider from './FilesPageProvider';
1618
import messages from './messages';
1719
import './FilesPage.scss';
1820

19-
const FilesPage = ({
20-
courseId,
21-
}) => {
21+
const FilesPage = () => {
2222
const intl = useIntl();
2323
const dispatch = useDispatch();
24-
const courseDetails = useModel('courseDetails', courseId);
25-
document.title = getPageHeadTitle(courseDetails?.name, intl.formatMessage(messages.heading));
24+
const { courseId, courseDetails } = useCourseAuthoringContext();
25+
document.title = getPageHeadTitle(courseDetails?.name || '', intl.formatMessage(messages.heading));
2626
const {
2727
loadingStatus,
2828
addingStatus: addAssetStatus,

src/files-and-videos/files-page/FilesPage.test.jsx

Lines changed: 44 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,21 @@
1+
2+
import userEvent from '@testing-library/user-event';
3+
import ReactDOM from 'react-dom';
4+
import { saveAs } from 'file-saver';
5+
6+
import { camelCaseObject } from '@edx/frontend-platform';
7+
18
import {
29
render,
310
fireEvent,
411
screen,
512
waitFor,
613
within,
7-
} from '@testing-library/react';
8-
import userEvent from '@testing-library/user-event';
9-
import ReactDOM from 'react-dom';
10-
import { saveAs } from 'file-saver';
11-
12-
import { camelCaseObject, initializeMockApp } from '@edx/frontend-platform';
13-
import MockAdapter from 'axios-mock-adapter';
14-
import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
15-
import { AppProvider } from '@edx/frontend-platform/react';
16-
import { IntlProvider } from '@edx/frontend-platform/i18n';
17-
import { MemoryRouter, Route, Routes } from 'react-router-dom';
18-
19-
import initializeStore from '../../store';
20-
import { executeThunk } from '../../utils';
21-
import { RequestStatus } from '../../data/constants';
14+
initializeMocks,
15+
} from '@src/testUtils';
16+
import { CourseAuthoringProvider } from '@src/CourseAuthoringContext';
17+
import { executeThunk } from '@src/utils';
18+
import { RequestStatus } from '@src/data/constants';
2219
import FilesPage from './FilesPage';
2320
import {
2421
generateFetchAssetApiResponse,
@@ -51,20 +48,16 @@ jest.mock('file-saver');
5148

5249
const renderComponent = () => {
5350
render(
54-
<IntlProvider locale="en">
55-
<AppProvider store={store} wrapWithRouter={false}>
56-
<MemoryRouter initialEntries={[`/course/${courseId}/videos`]}>
57-
<Routes>
58-
<Route
59-
path="/course/:courseId/*"
60-
element={
61-
<FilesPage courseId={courseId} />
62-
}
63-
/>
64-
</Routes>
65-
</MemoryRouter>
66-
</AppProvider>
67-
</IntlProvider>,
51+
<CourseAuthoringProvider courseId={courseId}>
52+
<FilesPage />,
53+
</CourseAuthoringProvider>,
54+
{
55+
path: '/course/:courseId/*',
56+
routerProps: {
57+
initialEntries: [`/course/${courseId}/videos`],
58+
},
59+
params: { courseId },
60+
},
6861
);
6962
};
7063

@@ -91,24 +84,19 @@ const emptyMockStore = async (status) => {
9184

9285
describe('FilesAndUploads', () => {
9386
describe('empty state', () => {
94-
beforeEach(async () => {
95-
initializeMockApp({
96-
authenticatedUser: {
97-
userId: 3,
98-
username: 'abc123',
99-
administrator: false,
100-
roles: [],
101-
},
102-
});
103-
store = initializeStore({
104-
...initialState,
105-
assets: {
106-
...initialState.assets,
107-
assetIds: [],
87+
beforeEach(() => {
88+
const mocks = initializeMocks({
89+
initialState: {
90+
...initialState,
91+
assets: {
92+
...initialState.assets,
93+
assetIds: [],
94+
},
95+
models: {},
10896
},
109-
models: {},
11097
});
111-
axiosMock = new MockAdapter(getAuthenticatedHttpClient());
98+
store = mocks.reduxStore;
99+
axiosMock = mocks.axiosMock;
112100
file = new File(['(⌐□_□)'], 'download.png', { type: 'image/png' });
113101
});
114102

@@ -152,17 +140,19 @@ describe('FilesAndUploads', () => {
152140
});
153141

154142
describe('valid assets', () => {
155-
beforeEach(async () => {
156-
initializeMockApp({
157-
authenticatedUser: {
158-
userId: 3,
159-
username: 'abc123',
160-
administrator: false,
161-
roles: [],
143+
beforeEach(() => {
144+
const mocks = initializeMocks({
145+
initialState: {
146+
...initialState,
147+
assets: {
148+
...initialState.assets,
149+
assetIds: [],
150+
},
151+
models: {},
162152
},
163153
});
164-
store = initializeStore(initialState);
165-
axiosMock = new MockAdapter(getAuthenticatedHttpClient());
154+
store = mocks.reduxStore;
155+
axiosMock = mocks.axiosMock;
166156
file = new File(['(⌐□_□)'], 'download.png', { type: 'image/png' });
167157
global.localStorage.clear();
168158
});

0 commit comments

Comments
 (0)