* chore: rename apiHooks.jsx to apihooks.js * refactor: consolidate taxonomy API code * fix: was not invalidating tags after import * fix: UI was freezing while computing plan for large import files
80 lines
2.0 KiB
JavaScript
80 lines
2.0 KiB
JavaScript
// @ts-check
|
|
import MockAdapter from 'axios-mock-adapter';
|
|
import { initializeMockApp } from '@edx/frontend-platform';
|
|
import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
|
|
|
|
import { taxonomyListMock } from '../__mocks__';
|
|
|
|
import {
|
|
apiUrls,
|
|
getTaxonomyExportFile,
|
|
getTaxonomyListData,
|
|
getTaxonomy,
|
|
deleteTaxonomy,
|
|
} from './api';
|
|
|
|
let axiosMock;
|
|
|
|
describe('taxonomy api calls', () => {
|
|
beforeEach(() => {
|
|
initializeMockApp({
|
|
authenticatedUser: {
|
|
userId: 3,
|
|
username: 'abc123',
|
|
administrator: true,
|
|
roles: [],
|
|
},
|
|
});
|
|
|
|
axiosMock = new MockAdapter(getAuthenticatedHttpClient());
|
|
});
|
|
|
|
afterEach(() => {
|
|
jest.clearAllMocks();
|
|
});
|
|
|
|
it.each([
|
|
undefined,
|
|
'All taxonomies',
|
|
'Unassigned',
|
|
'testOrg',
|
|
])('should get taxonomy list data for \'%s\' org filter', async (org) => {
|
|
axiosMock.onGet(apiUrls.taxonomyList(org)).reply(200, taxonomyListMock);
|
|
const result = await getTaxonomyListData(org);
|
|
|
|
expect(axiosMock.history.get[0].url).toEqual(apiUrls.taxonomyList(org));
|
|
expect(result).toEqual(taxonomyListMock);
|
|
});
|
|
|
|
it('should delete a taxonomy', async () => {
|
|
const taxonomyId = 123;
|
|
axiosMock.onDelete(apiUrls.taxonomy(taxonomyId)).reply(200);
|
|
await deleteTaxonomy(taxonomyId);
|
|
|
|
expect(axiosMock.history.delete[0].url).toEqual(apiUrls.taxonomy(taxonomyId));
|
|
});
|
|
|
|
it('should call get taxonomy', async () => {
|
|
axiosMock.onGet(apiUrls.taxonomy(1)).reply(200);
|
|
await getTaxonomy(1);
|
|
|
|
expect(axiosMock.history.get[0].url).toEqual(apiUrls.taxonomy(1));
|
|
});
|
|
|
|
it('Export should set window.location.href correctly', () => {
|
|
const origLocation = window.location;
|
|
// @ts-ignore
|
|
delete window.location;
|
|
// @ts-ignore
|
|
window.location = { href: '' };
|
|
|
|
const pk = 1;
|
|
const format = 'json';
|
|
getTaxonomyExportFile(pk, format);
|
|
expect(window.location.href).toEqual(apiUrls.exportTaxonomy(pk, format));
|
|
|
|
// Restore the location object of window:
|
|
window.location = origLocation;
|
|
});
|
|
});
|