96 lines
3.4 KiB
JavaScript
96 lines
3.4 KiB
JavaScript
import MockAdapter from 'axios-mock-adapter';
|
|
import { initializeMockApp } from '@edx/frontend-platform';
|
|
import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
|
|
|
|
import {
|
|
getStudioHomeApiUrl,
|
|
getRequestCourseCreatorUrl,
|
|
getCourseNotificationUrl,
|
|
getStudioHomeData,
|
|
handleCourseNotification,
|
|
sendRequestForCourseCreator,
|
|
getApiBaseUrl,
|
|
getStudioHomeCourses,
|
|
getStudioHomeCoursesV2,
|
|
getStudioHomeLibraries,
|
|
} from './api';
|
|
import { generateGetStudioCoursesApiResponse, generateGetStudioHomeDataApiResponse, generateGetStuioHomeLibrariesApiResponse } from '../factories/mockApiResponses';
|
|
|
|
let axiosMock;
|
|
|
|
describe('studio-home api calls', () => {
|
|
beforeEach(() => {
|
|
initializeMockApp({
|
|
authenticatedUser: {
|
|
userId: 3,
|
|
username: 'abc123',
|
|
administrator: true,
|
|
roles: [],
|
|
},
|
|
});
|
|
axiosMock = new MockAdapter(getAuthenticatedHttpClient());
|
|
});
|
|
|
|
afterEach(() => {
|
|
jest.clearAllMocks();
|
|
});
|
|
|
|
it('should get studio home data', async () => {
|
|
axiosMock.onGet(getStudioHomeApiUrl()).reply(200, generateGetStudioHomeDataApiResponse());
|
|
const result = await getStudioHomeData();
|
|
const expected = generateGetStudioHomeDataApiResponse();
|
|
|
|
expect(axiosMock.history.get[0].url).toEqual(getStudioHomeApiUrl());
|
|
expect(result).toEqual(expected);
|
|
});
|
|
|
|
fit('should get studio courses data', async () => {
|
|
const apiLink = `${getApiBaseUrl()}/api/contentstore/v1/home/courses`;
|
|
axiosMock.onGet(apiLink).reply(200, generateGetStudioCoursesApiResponse());
|
|
const result = await getStudioHomeCourses('');
|
|
const expected = generateGetStudioCoursesApiResponse();
|
|
|
|
expect(axiosMock.history.get[0].url).toEqual(apiLink);
|
|
expect(result).toEqual(expected);
|
|
});
|
|
|
|
fit('should get studio courses data v2', async () => {
|
|
const apiLink = `${getApiBaseUrl()}/api/contentstore/v2/home/courses`;
|
|
axiosMock.onGet(apiLink).reply(200, generateGetStudioCoursesApiResponse());
|
|
const result = await getStudioHomeCoursesV2('');
|
|
const expected = generateGetStudioCoursesApiResponse();
|
|
|
|
expect(axiosMock.history.get[0].url).toEqual(apiLink);
|
|
expect(result).toEqual(expected);
|
|
});
|
|
|
|
it('should get studio libraries data', async () => {
|
|
const apiLink = `${getApiBaseUrl()}/api/contentstore/v1/home/libraries`;
|
|
axiosMock.onGet(apiLink).reply(200, generateGetStuioHomeLibrariesApiResponse());
|
|
const result = await getStudioHomeLibraries();
|
|
const expected = generateGetStuioHomeLibrariesApiResponse();
|
|
|
|
expect(axiosMock.history.get[0].url).toEqual(apiLink);
|
|
expect(result).toEqual(expected);
|
|
});
|
|
|
|
it('should handle course notification request', async () => {
|
|
const dismissLink = 'to://dismiss-link';
|
|
const successResponse = { status: 'OK' };
|
|
axiosMock.onDelete(getCourseNotificationUrl(dismissLink)).reply(200, successResponse);
|
|
const result = await handleCourseNotification(dismissLink);
|
|
|
|
expect(axiosMock.history.delete[0].url).toEqual(getCourseNotificationUrl(dismissLink));
|
|
expect(result).toEqual(successResponse);
|
|
});
|
|
|
|
it('should send request to course creating access', async () => {
|
|
const successResponse = { status: 'OK' };
|
|
axiosMock.onPost(getRequestCourseCreatorUrl()).reply(200, successResponse);
|
|
const result = await sendRequestForCourseCreator();
|
|
|
|
expect(axiosMock.history.post[0].url).toEqual(getRequestCourseCreatorUrl());
|
|
expect(result).toEqual(successResponse);
|
|
});
|
|
});
|