From 0dafa30da067831e4ff71d5110000eebb932a2e5 Mon Sep 17 00:00:00 2001 From: Tifenn Guillas <tifenn.guillas@gmail.com> Date: Wed, 15 Sep 2021 22:51:57 +0200 Subject: [PATCH] WIP: Tests on search reducer --- .../store/reducers/detail.reducer.spec.ts | 157 +++++ .../store/reducers/samp.reducer.spec.ts | 41 ++ .../store/reducers/search.reducer.spec.ts | 597 ++++++++++++++++++ 3 files changed, 795 insertions(+) create mode 100644 client/src/app/instance/store/reducers/detail.reducer.spec.ts create mode 100644 client/src/app/instance/store/reducers/samp.reducer.spec.ts create mode 100644 client/src/app/instance/store/reducers/search.reducer.spec.ts diff --git a/client/src/app/instance/store/reducers/detail.reducer.spec.ts b/client/src/app/instance/store/reducers/detail.reducer.spec.ts new file mode 100644 index 00000000..d10671dc --- /dev/null +++ b/client/src/app/instance/store/reducers/detail.reducer.spec.ts @@ -0,0 +1,157 @@ +import * as fromDetail from './detail.reducer'; +import * as detailActions from '../actions/detail.actions'; +import { Action } from '@ngrx/store'; + +describe('Detail reducer', () => { + it('unknown action should return the default state', () => { + const { initialState } = fromDetail; + const action = { type: 'Unknown' }; + const state = fromDetail.detailReducer(initialState, action); + + expect(state).toBe(initialState); + }); + + it('retrieveObject action should set objectIsLoading to true and objectIsLoaded to false', () => { + const initialState = { + ...fromDetail.initialState, + objectIsLoaded: false + }; + const action = detailActions.retrieveObject(); + const state = fromDetail.detailReducer(initialState, action); + + expect(state.object).toBeNull(); + expect(state.objectIsLoading).toBeTruthy(); + expect(state.objectIsLoaded).toBeFalsy(); + expect(state.spectraCSV).toBeNull(); + expect(state.spectraIsLoading).toBeFalsy(); + expect(state.spectraIsLoaded).toBeFalsy(); + expect(state).not.toBe(initialState); + }); + + it('retrieveObjectSuccess action should add object, set objectIsLoading to false and objectIsLoaded to true', () => { + const initialState = { + ...fromDetail.initialState, + objectIsLoading: true + }; + const action = detailActions.retrieveObjectSuccess({ object: 'myObject' }); + const state = fromDetail.detailReducer(initialState, action); + + expect(state.object).toBe('myObject'); + expect(state.objectIsLoading).toBeFalsy(); + expect(state.objectIsLoaded).toBeTruthy(); + expect(state.spectraCSV).toBeNull(); + expect(state.spectraIsLoading).toBeFalsy(); + expect(state.spectraIsLoaded).toBeFalsy(); + expect(state).not.toBe(initialState); + }); + + it('retrieveObjectFail action should set objectIsLoading to false', () => { + const initialState = { + ...fromDetail.initialState, + objectIsLoading: true + }; + const action = detailActions.retrieveObjectFail(); + const state = fromDetail.detailReducer(initialState, action); + + expect(state.object).toBeNull(); + expect(state.objectIsLoading).toBeFalsy(); + expect(state.objectIsLoaded).toBeFalsy(); + expect(state.spectraCSV).toBeNull(); + expect(state.spectraIsLoading).toBeFalsy(); + expect(state.spectraIsLoaded).toBeFalsy(); + expect(state).not.toBe(initialState); + }); + + it('retrieveSpectra action should set spectraIsLoading to true and spectraIsLoaded to false', () => { + const initialState = { + ...fromDetail.initialState, + spectraIsLoaded: true + }; + const action = detailActions.retrieveSpectra({ filename: 'mySpectra' }); + const state = fromDetail.detailReducer(initialState, action); + + expect(state.object).toBeNull(); + expect(state.objectIsLoading).toBeFalsy(); + expect(state.objectIsLoaded).toBeFalsy(); + expect(state.spectraCSV).toBeNull(); + expect(state.spectraIsLoading).toBeTruthy(); + expect(state.spectraIsLoaded).toBeFalsy(); + expect(state).not.toBe(initialState); + }); + + it('retrieveSpectraSuccess action should add spectraCSV, set spectraIsLoading to false and spectraIsLoaded to true', () => { + const initialState = { + ...fromDetail.initialState, + spectraIsLoading: true + }; + const action = detailActions.retrieveSpectraSuccess({ spectraCSV: 'mySpectra' }); + const state = fromDetail.detailReducer(initialState, action); + + expect(state.object).toBeNull(); + expect(state.objectIsLoading).toBeFalsy(); + expect(state.objectIsLoaded).toBeFalsy(); + expect(state.spectraCSV).toBe('mySpectra'); + expect(state.spectraIsLoading).toBeFalsy(); + expect(state.spectraIsLoaded).toBeTruthy(); + expect(state).not.toBe(initialState); + }); + + it('retrieveSpectraFail action should set spectraIsLoading to false', () => { + const initialState = { + ...fromDetail.initialState, + spectraIsLoading: true + }; + const action = detailActions.retrieveSpectraFail(); + const state = fromDetail.detailReducer(initialState, action); + + expect(state.object).toBeNull(); + expect(state.objectIsLoading).toBeFalsy(); + expect(state.objectIsLoaded).toBeFalsy(); + expect(state.spectraCSV).toBeNull(); + expect(state.spectraIsLoading).toBeFalsy(); + expect(state.spectraIsLoaded).toBeFalsy(); + expect(state).not.toBe(initialState); + }); + + it('should get object', () => { + const action = {} as Action; + const state = fromDetail.detailReducer(undefined, action); + + expect(fromDetail.selectObject(state)).toBeNull(); + }); + + it('should get objectIsLoading', () => { + const action = {} as Action; + const state = fromDetail.detailReducer(undefined, action); + + expect(fromDetail.selectObjectIsLoading(state)).toBeFalsy(); + }); + + it('should get objectIsLoaded', () => { + const action = {} as Action; + const state = fromDetail.detailReducer(undefined, action); + + expect(fromDetail.selectObjectIsLoaded(state)).toBeFalsy(); + }); + + it('should get spectraCSV', () => { + const action = {} as Action; + const state = fromDetail.detailReducer(undefined, action); + + expect(fromDetail.selectSpectraCSV(state)).toBeNull(); + }); + + it('should get spectraIsLoading', () => { + const action = {} as Action; + const state = fromDetail.detailReducer(undefined, action); + + expect(fromDetail.selectSpectraIsLoading(state)).toBeFalsy(); + }); + + it('should get spectraIsLoaded', () => { + const action = {} as Action; + const state = fromDetail.detailReducer(undefined, action); + + expect(fromDetail.selectSpectraIsLoaded(state)).toBeFalsy(); + }); +}); diff --git a/client/src/app/instance/store/reducers/samp.reducer.spec.ts b/client/src/app/instance/store/reducers/samp.reducer.spec.ts new file mode 100644 index 00000000..cb682d7b --- /dev/null +++ b/client/src/app/instance/store/reducers/samp.reducer.spec.ts @@ -0,0 +1,41 @@ +import * as fromSamp from './samp.reducer'; +import * as sampActions from '../actions/samp.actions'; +import { Action } from '@ngrx/store'; + +describe('Samp reducer', () => { + it('unknown action should return the default state', () => { + const { initialState } = fromSamp; + const action = { type: 'Unknown' }; + const state = fromSamp.sampReducer(initialState, action); + + expect(state).toBe(initialState); + }); + + it('registerSuccess action should set registered to true', () => { + const { initialState } = fromSamp; + const action = sampActions.registerSuccess(); + const state = fromSamp.sampReducer(initialState, action); + + expect(state.registered).toBeTruthy(); + expect(state).not.toBe(initialState); + }); + + it('unregister action should set registered to false', () => { + const initialState = { + ...fromSamp.initialState, + registered: true + }; + const action = sampActions.unregister(); + const state = fromSamp.sampReducer(initialState, action); + + expect(state.registered).toBeFalsy(); + expect(state).not.toBe(initialState); + }); + + it('should get registered', () => { + const action = {} as Action; + const state = fromSamp.sampReducer(undefined, action); + + expect(fromSamp.selectRegistered(state)).toBeFalsy(); + }); +}); diff --git a/client/src/app/instance/store/reducers/search.reducer.spec.ts b/client/src/app/instance/store/reducers/search.reducer.spec.ts new file mode 100644 index 00000000..b5434670 --- /dev/null +++ b/client/src/app/instance/store/reducers/search.reducer.spec.ts @@ -0,0 +1,597 @@ +import * as fromSearch from './search.reducer'; +import * as searchActions from '../actions/search.actions'; +import { Criterion, Pagination, PaginationOrder } from '../models'; + +describe('Search reducer', () => { + it('unknown action should return the default state', () => { + const { initialState } = fromSearch; + const action = { type: 'Unknown' }; + const state = fromSearch.searchReducer(initialState, action); + + expect(state).toBe(initialState); + }); + + it('restartSearch action should set currentStep to \'dataset\'', () => { + const { initialState } = fromSearch; + const action = searchActions.restartSearch(); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBe('dataset'); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('changeStep action should change the currentStep', () => { + const { initialState } = fromSearch; + const action = searchActions.changeStep({ step: 'myStep' }); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBe('myStep'); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('markAsDirty action should set pristine to false', () => { + const { initialState } = fromSearch; + const action = searchActions.markAsDirty(); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeFalsy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('changeCurrentDataset action should set pristine to false', () => { + const { initialState } = fromSearch; + const action = searchActions.changeCurrentDataset({ currentDataset: 'myDataset' }); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBe('myDataset'); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('checkCriteria action should set criteriaStepChecked to true', () => { + const { initialState } = fromSearch; + const action = searchActions.checkCriteria(); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeTruthy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('checkOutput action should set outputStepChecked to true', () => { + const { initialState } = fromSearch; + const action = searchActions.checkOutput(); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeTruthy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('checkResult action should set resultStepChecked to true', () => { + const { initialState } = fromSearch; + const action = searchActions.checkResult(); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeTruthy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('checkResult action should set resultStepChecked to true', () => { + const { initialState } = fromSearch; + const action = searchActions.checkResult(); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeTruthy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('updateCriteriaList action should set criteriaList', () => { + const { initialState } = fromSearch; + const criteriaList: Criterion[] = [{ id: 1, type: 'field' }]; + const action = searchActions.updateCriteriaList({ criteriaList }); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(1); + expect(state.criteriaList).toEqual(criteriaList); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('addCriterion action should add criterion to the criteriaList', () => { + const { initialState } = fromSearch; + const criterion: Criterion = { id: 1, type: 'field' }; + const action = searchActions.addCriterion({ criterion }); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(1); + expect(state.criteriaList).toEqual([criterion]); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('deleteCriterion action should remove criterion to the criteriaList', () => { + const initialState = { + ...fromSearch.initialState, + criteriaList: [{ id: 1, type: 'field' }] + }; + const action = searchActions.deleteCriterion({ idCriterion: 1 }); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('updateOutputList action should set outputList', () => { + const { initialState } = fromSearch; + const outputList: number[] = [1, 2, 3]; + const action = searchActions.updateOutputList({ outputList }); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(3); + expect(state.outputList).toEqual(outputList); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('addSelectedData action should add data id to the selectedData list', () => { + const { initialState } = fromSearch; + const action = searchActions.addSelectedData({ id: 1 }); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(1); + expect(state.selectedData).toEqual([1]); + expect(state).not.toBe(initialState); + }); + + it('deleteSelectedData action should remove data id to the selectedData list', () => { + const initialState = { + ...fromSearch.initialState, + selectedData: [1] + }; + const action = searchActions.deleteSelectedData({ id: 1 }); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('retrieveDataLength action should set dataLengthIsLoading to true and dataLengthIsLoaded to false', () => { + const initialState = { + ...fromSearch.initialState, + dataLengthIsLoaded: true + }; + const action = searchActions.retrieveDataLength(); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeTruthy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('retrieveDataLengthSuccess action should set dataLength, set dataLengthIsLoading to true and dataLengthIsLoaded to false', () => { + const initialState = { + ...fromSearch.initialState, + dataLengthIsLoading: true + }; + const action = searchActions.retrieveDataLengthSuccess({ length: 1 }); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeTruthy(); + expect(state.dataLength).toEqual(1); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('retrieveDataLengthFail action should set dataLengthIsLoading to false', () => { + const initialState = { + ...fromSearch.initialState, + dataLengthIsLoading: true + }; + const action = searchActions.retrieveDataLengthFail(); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('retrieveData action should set dataIsLoading to true and dataIsLoaded to false', () => { + const initialState = { + ...fromSearch.initialState, + dataIsLoaded: true + }; + const pagination: Pagination = { dname: 'myDataset', page: 1, nbItems: 10, sortedCol: 1, order: PaginationOrder.a }; + const action = searchActions.retrieveData({ pagination }); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeTruthy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('retrieveDataSuccess action should set data, set dataIsLoading to false and dataIsLoaded to true', () => { + const initialState = { + ...fromSearch.initialState, + dataIsLoading: true + }; + const action = searchActions.retrieveDataSuccess({ data: ['myData'] }); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(1); + expect(state.data).toEqual(['myData']); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeTruthy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('retrieveDataFail action should set dataIsLoading to false', () => { + const initialState = { + ...fromSearch.initialState, + dataIsLoading: true + }; + const action = searchActions.retrieveDataFail(); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('destroyResults action should reset data and dataLength', () => { + const initialState = { + ...fromSearch.initialState, + data: ['myData'], + dataLength: 1 + }; + const action = searchActions.destroyResults(); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toBeNull(); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + it('resetSearch action should set currentStep to \'dataset\'', () => { + const { initialState } = fromSearch; + const action = searchActions.resetSearch(); + const state = fromSearch.searchReducer(initialState, action); + + expect(state.pristine).toBeTruthy(); + expect(state.currentDataset).toBeNull(); + expect(state.currentStep).toEqual('dataset'); + expect(state.criteriaStepChecked).toBeFalsy(); + expect(state.outputStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.coneSearchAdded).toBeFalsy(); + expect(state.criteriaList.length).toEqual(0); + expect(state.outputList.length).toEqual(0); + expect(state.dataLengthIsLoading).toBeFalsy(); + expect(state.dataLengthIsLoaded).toBeFalsy(); + expect(state.dataLength).toBeNull(); + expect(state.data.length).toEqual(0); + expect(state.dataIsLoading).toBeFalsy(); + expect(state.dataIsLoaded).toBeFalsy(); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toBe(initialState); + }); + + // it('unregister action should set registered to false', () => { + // const initialState = { + // ...fromSearch.initialState, + // registered: true + // }; + // const action = searchActions.unregister(); + // const state = fromSearch.searchReducer(initialState, action); + // + // expect(state.registered).toBeFalsy(); + // expect(state).not.toBe(initialState); + // }); + + // it('should get registered', () => { + // const action = {} as Action; + // const state = fromSearch.searchReducer(undefined, action); + // + // expect(fromSearch.selectRegistered(state)).toBeFalsy(); + // }); +}); -- GitLab