* fix: downgrade jest to avoid a date bug * chore: add paragon icons and components to mocks * chore: top-level formatDate util * chore: redux transform hooks * chore: add top-level data selectors * chore: redux hooks * refactor: update GradebookHeader component * refactor: update GradebookFilters components * refactor: update BulkManagementControls * refactor: update EditModal component * refactor: update FilterMenuToggle * refactor: update FilteredUsersLabel; * refactor: update GradebookTable * refactor: update ImportSuccessToast * refactor: update PageButtons * refactor: update FilterBadges * refactor: update ScoreViewInput * refactor: update InterventionsReport * refactor: update SearchControls * refactor: update StatusAlerts * chore: fix text name * refactor: update SpinnerIcon * chore: remove stale component * refactor: update GradesView top component * chore: remove old snapshots * chore: update package-lock to node 18
73 lines
2.2 KiB
JavaScript
73 lines
2.2 KiB
JavaScript
import { actions, selectors } from 'data/redux/hooks';
|
|
|
|
import useBulkManagementControlsData from './hooks';
|
|
|
|
jest.mock('data/redux/hooks', () => ({
|
|
actions: {
|
|
grades: {
|
|
useDownloadBulkGradesReport: jest.fn(),
|
|
},
|
|
},
|
|
selectors: {
|
|
root: {
|
|
useGradeExportUrl: jest.fn(),
|
|
useShowBulkManagement: jest.fn(),
|
|
},
|
|
},
|
|
}));
|
|
|
|
const downloadBulkGrades = jest.fn();
|
|
actions.grades.useDownloadBulkGradesReport.mockReturnValue(downloadBulkGrades);
|
|
const gradeExportUrl = 'test-grade-export-url';
|
|
selectors.root.useGradeExportUrl.mockReturnValue(gradeExportUrl);
|
|
selectors.root.useShowBulkManagement.mockReturnValue(true);
|
|
|
|
let hook;
|
|
describe('useBulkManagementControlsData', () => {
|
|
const oldWindowLocation = window.location;
|
|
beforeAll(() => {
|
|
delete window.location;
|
|
window.location = Object.defineProperties(
|
|
{},
|
|
{
|
|
...Object.getOwnPropertyDescriptors(oldWindowLocation),
|
|
assign: { configurable: true, value: jest.fn() },
|
|
},
|
|
);
|
|
});
|
|
beforeEach(() => {
|
|
window.location.assign.mockReset();
|
|
hook = useBulkManagementControlsData();
|
|
});
|
|
afterAll(() => {
|
|
// restore `window.location` to the `jsdom` `Location` object
|
|
window.location = oldWindowLocation;
|
|
});
|
|
describe('initialization', () => {
|
|
it('initializes redux hooks', () => {
|
|
expect(selectors.root.useGradeExportUrl).toHaveBeenCalledWith();
|
|
expect(selectors.root.useShowBulkManagement).toHaveBeenCalledWith();
|
|
expect(actions.grades.useDownloadBulkGradesReport).toHaveBeenCalledWith();
|
|
});
|
|
});
|
|
describe('output', () => {
|
|
it('forwards show from showBulkManagement', () => {
|
|
expect(hook.show).toEqual(true);
|
|
selectors.root.useShowBulkManagement.mockReturnValue(false);
|
|
hook = useBulkManagementControlsData();
|
|
expect(hook.show).toEqual(false);
|
|
});
|
|
describe('handleClickExportGrades', () => {
|
|
beforeEach(() => {
|
|
hook.handleClickExportGrades();
|
|
});
|
|
it('downloads bulk grades report', () => {
|
|
expect(downloadBulkGrades).toHaveBeenCalledWith();
|
|
});
|
|
it('sets window location to grade export url', () => {
|
|
expect(window.location.assign).toHaveBeenCalledWith(gradeExportUrl);
|
|
});
|
|
});
|
|
});
|
|
});
|