From 5fa59bbd9ac8b4eb66a460566168d71b6f3d6a39 Mon Sep 17 00:00:00 2001 From: Ben Warzeski Date: Tue, 5 Oct 2021 09:19:30 -0400 Subject: [PATCH] fix rubric selector tests and add app thunkAction tests --- src/data/selectors/app.test.js | 8 ++--- src/data/thunkActions/app.js | 2 +- src/data/thunkActions/app.test.js | 53 +++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 src/data/thunkActions/app.test.js diff --git a/src/data/selectors/app.test.js b/src/data/selectors/app.test.js index 9807274..dd37a55 100644 --- a/src/data/selectors/app.test.js +++ b/src/data/selectors/app.test.js @@ -109,7 +109,7 @@ describe('app selectors unit tests', () => { testOraSelector(selectors.ora.type, oraMetadata.type); }); test('rubricConfig selector returns rubricConfig from oraMetadata', () => { - testOraSelector(selectors.rubricConfig, oraMetadata.rubricConfig); + testOraSelector(selectors.rubric.config, oraMetadata.rubricConfig); }); }); describe('rubricConfig selectors', () => { @@ -117,7 +117,7 @@ describe('app selectors unit tests', () => { const testRubricSelector = (selector, expected, args = null) => ( testReselect({ selector, - preSelectors: [selectors.rubricConfig], + preSelectors: [selectors.rubric.config], args: args === null ? rubricConfig : args, expected, }) @@ -125,13 +125,13 @@ describe('app selectors unit tests', () => { test('hasConfig', () => { testReselect({ selector: rubric.hasConfig, - preSelectors: [selectors.rubricConfig], + preSelectors: [selectors.rubric.config], args: rubricConfig, expected: true, }); testReselect({ selector: rubric.hasConfig, - preSelectors: [selectors.rubricConfig], + preSelectors: [selectors.rubric.config], args: undefined, expected: false, }); diff --git a/src/data/thunkActions/app.js b/src/data/thunkActions/app.js index 78c9802..3335e67 100644 --- a/src/data/thunkActions/app.js +++ b/src/data/thunkActions/app.js @@ -2,7 +2,7 @@ import { StrictDict } from 'utils'; import actions from 'data/actions'; import api from 'data/services/lms/api'; -import { locationId } from '../constants/app'; +import { locationId } from 'data/constants/app'; /** * initialize the app, loading ora and course metadata from the api, and loading the initial diff --git a/src/data/thunkActions/app.test.js b/src/data/thunkActions/app.test.js new file mode 100644 index 0000000..cd3124a --- /dev/null +++ b/src/data/thunkActions/app.test.js @@ -0,0 +1,53 @@ +import api from 'data/services/lms/api'; +import { locationId } from 'data/constants/app'; + +import actions from 'data/actions'; +import thunkActions from './app'; + +jest.mock('data/services/lms/api', () => { + const response = { + oraMetadata: { some: 'ora-metadata' }, + courseMetadata: { some: 'course-metadata' }, + submissions: { some: 'submissions' }, + }; + return { + response, + initializeApp: jest.fn(() => new Promise((resolve) => resolve(response))), + }; +}); +jest.mock('data/constants/app', () => ({ + locationId: 'fake-location-id', +})); +jest.mock('data/actions', () => ({ + app: { + loadOraMetadata: (data) => ({ loadOraMetadata: data }), + loadCourseMetadata: (data) => ({ loadCourseMetadata: data }), + }, + submissions: { + loadList: (data) => ({ loadList: data }), + }, +})); + +describe('app thunkActions', () => { + let dispatch; + beforeEach(() => { + dispatch = jest.fn((action) => ({ dispatch: action })); + }); + describe('initialize', () => { + beforeEach(() => { + thunkActions.initialize()(dispatch); + }); + test('it is called with location id from constants/app', () => { + expect(api.initializeApp).toHaveBeenCalledWith(locationId); + }); + describe('on success', () => { + test('loads oraMetadata, courseMetadata and list data', () => { + expect(dispatch.mock.calls).toEqual([ + [actions.app.loadOraMetadata(api.response.oraMetadata)], + [actions.app.loadCourseMetadata(api.response.courseMetadata)], + [actions.submissions.loadList(api.response.submissions)], + ]); + }); + }); + }); +});