diff --git a/src/app/search-multiple/search-multiple-routing.module.ts b/src/app/search-multiple/search-multiple-routing.module.ts index 072e305ba015e8f985d954a97c4e4b683951f6e1..00b8ea741d1839204f962e39f24badc7392be61e 100644 --- a/src/app/search-multiple/search-multiple-routing.module.ts +++ b/src/app/search-multiple/search-multiple-routing.module.ts @@ -2,9 +2,9 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { SearchMultipleComponent } from './containers/search-multiple.component'; -import { PositionComponent } from "./containers/position.component"; -import { DatasetsComponent } from "./containers/datasets.component"; -import { ResultMultipleComponent } from "./containers/result-multiple.component"; +import { PositionComponent } from './containers/position.component'; +import { DatasetsComponent } from './containers/datasets.component'; +import { ResultMultipleComponent } from './containers/result-multiple.component'; const routes: Routes = [ { diff --git a/src/app/search-multiple/store/search-multiple.action.ts b/src/app/search-multiple/store/search-multiple.action.ts index 14dc67a33d41a68ed547ec76ad2bc580722da9e6..81a9ead037f63e953a4dd165c5de1daa1d7c2504 100644 --- a/src/app/search-multiple/store/search-multiple.action.ts +++ b/src/app/search-multiple/store/search-multiple.action.ts @@ -10,13 +10,11 @@ export const INIT_SELECTED_DATASETS = '[SearchMultiple] Init Selected Datasets'; export const CHANGE_STEP = '[SearchMultiple] Change Step'; export const POSITION_CHECKED = '[SearchMultiple] Position Checked'; export const DATASETS_CHECKED = '[SearchMultiple] Datasets Checked'; +export const RESULTS_CHECKED = '[SearchMultiple] Results Checked'; export const UPDATE_SELECTED_DATASETS = '[SearchMultiple] Update Selected Datasets'; export const RETRIEVE_DATASETS_COUNT = '[SearchMultiple] Retrieve Datasets Count'; export const RETRIEVE_DATASETS_COUNT_SUCCESS = '[SearchMultiple] Retrieve Datasets Count Success'; export const RETRIEVE_DATASETS_COUNT_FAIL = '[SearchMultiple] Retrieve Datasets Count Fail'; -export const RETRIEVE_ATTRIBUTE_LIST = '[SearchMultiple] Retrieve Attribute List'; -export const RETRIEVE_ATTRIBUTE_LIST_SUCCESS = '[SearchMultiple] Retrieve Attribute List Success'; -export const RETRIEVE_ATTRIBUTE_LIST_FAIL = '[SearchMultiple] Retrieve Attribute List Fail'; export const RETRIEVE_DATA = '[SearchMultiple] Retrieve Data'; export const RETRIEVE_DATA_SUCCESS = '[SearchMultiple] Retrieve Data Success'; export const RETRIEVE_DATA_FAIL = '[SearchMultiple] Retrieve Data Fail'; @@ -55,6 +53,12 @@ export class DatasetsCheckedAction implements Action { constructor(public payload: {} = null) { } } +export class ResultsCheckedAction implements Action { + readonly type = RESULTS_CHECKED; + + constructor(public payload: {} = null) { } +} + export class UpdateSelectedDatasetsAction implements Action { readonly type = UPDATE_SELECTED_DATASETS; @@ -79,24 +83,6 @@ export class RetrieveDatasetsCountFailAction implements Action { constructor(public payload: {} = null) { } } -export class RetrieveAttributeListAction implements Action { - readonly type = RETRIEVE_ATTRIBUTE_LIST; - - constructor(public payload: string) { } -} - -export class RetrieveAttributeListSuccessAction implements Action { - readonly type = RETRIEVE_ATTRIBUTE_LIST_SUCCESS; - - constructor(public payload: { dname: string, attributeList: Attribute[] }) { } -} - -export class RetrieveAttributeListFailAction implements Action { - readonly type = RETRIEVE_ATTRIBUTE_LIST_FAIL; - - constructor(public payload: {} = null ) { } -} - export class RetrieveDataAction implements Action { readonly type = RETRIEVE_DATA; @@ -139,13 +125,11 @@ export type Actions | ChangeStepAction | PositionCheckedAction | DatasetsCheckedAction + | ResultsCheckedAction | UpdateSelectedDatasetsAction | RetrieveDatasetsCountAction | RetrieveDatasetsCountSuccessAction | RetrieveDatasetsCountFailAction - | RetrieveAttributeListAction - | RetrieveAttributeListSuccessAction - | RetrieveAttributeListFailAction | RetrieveDataAction | RetrieveDataSuccessAction | RetrieveDataFailAction diff --git a/src/app/search-multiple/store/search-multiple.reducer.spec.ts b/src/app/search-multiple/store/search-multiple.reducer.spec.ts index b42588ff2c97123472a4447d6cb2ea99dd81234f..68fdf41bff7654db6b33c4025d8401175685d7df 100644 --- a/src/app/search-multiple/store/search-multiple.reducer.spec.ts +++ b/src/app/search-multiple/store/search-multiple.reducer.spec.ts @@ -1,651 +1,993 @@ -// import * as fromSearch from './search.reducer'; -// import * as searchActions from './search.action'; -// import { CRITERIA_LIST } from '../../../settings/test-data' -// import { FieldCriterion } from './model'; -// -// describe('[Search] Reducer', () => { -// it('should return init state', () => { -// const { initialState } = fromSearch; -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(state).toBe(initialState); -// }); -// -// it('should change the currentStep', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.ChangeStepAction('toto'); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toEqual('toto'); -// expect(state.datasetName).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.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should set the datasetName and change pristine', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.SelectDatasetAction('toto'); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeFalsy(); -// expect(state.currentStep).toBeNull(); -// expect(state.datasetName).toBe('toto'); -// 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.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should set currentStep to "dataset"', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.NewSearchAction('toto'); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toEqual('dataset'); -// expect(state.datasetName).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.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should set criteriaStepChecked to true', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.CriteriaChecked(); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should set outputStepChecked to true', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.OutputChecked(); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should set resultStepChecked to true', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.ResultChecked(); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should set coneSearchAdded to true', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.IsConeSearchAddedAction(true); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).toBeNull(); -// expect(state.criteriaStepChecked).toBeFalsy(); -// expect(state.outputStepChecked).toBeFalsy(); -// expect(state.resultStepChecked).toBeFalsy(); -// expect(state.coneSearchAdded).toBeTruthy(); -// expect(state.criteriaList.length).toEqual(0); -// expect(state.outputList.length).toEqual(0); -// expect(state.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// -// it('should set criteriaList', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.UpdateCriteriaListAction(CRITERIA_LIST); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).toBeNull(); -// expect(state.criteriaStepChecked).toBeFalsy(); -// expect(state.outputStepChecked).toBeFalsy(); -// expect(state.resultStepChecked).toBeFalsy(); -// expect(state.coneSearchAdded).toBeFalsy(); -// expect(state.criteriaList.length).toEqual(2); -// expect(state.outputList.length).toEqual(0); -// expect(state.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should add criterion to criteriaList', () => { -// const criterion: FieldCriterion = { id: 3, type: 'field', operator: 'eq', value: 'fd_crit_3' }; -// const { initialState } = fromSearch; -// const action = new searchActions.AddCriterionAction(criterion); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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[0].id).toEqual(3); -// expect(state.outputList.length).toEqual(0); -// expect(state.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should remove criterion to criteriaList', () => { -// const criterion: FieldCriterion = { id: 2, type: 'field', operator: 'eq', value: 'fd_crit_2' }; -// const initialState = { ...fromSearch.initialState, criteriaList: CRITERIA_LIST }; -// const action = new searchActions.DeleteCriterionAction(criterion.id); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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[0].id).toEqual(1); -// expect(state.outputList.length).toEqual(0); -// expect(state.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should set outputList', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.UpdateOutputListAction([1, 2]); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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(2); -// expect(state.outputList).toContain(1); -// expect(state.outputList).toContain(2); -// expect(state.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should set outputListEmpty to false', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.OutputListEmptyAction(false); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeFalsy(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should set searchData', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.RetrieveDataSuccessAction(['data_1', 'data_2']); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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.searchData.length).toBe(2); -// expect(state.searchData).toContain('data_1'); -// expect(state.searchData).toContain('data_2'); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should set dataLength', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.GetDataLengthSuccessAction(12); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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.searchData).toBeNull(); -// expect(state.dataLength).toBe(12); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should add data to selectedData', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.AddSelectedDataAction(1); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(1); -// expect(state.selectedData).toContain(1); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should remove data to selectedData', () => { -// const initialState = { ...fromSearch.initialState, selectedData: ['data_1', 'data_2'] }; -// const action = new searchActions.DeleteSelectedDataAction('data_2'); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(1); -// expect(state.selectedData).toContain('data_1'); -// expect(state.selectedData).not.toContain('data_2'); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should set processWip to true and processDone to false', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.ExecuteProcessAction('process_type'); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeTruthy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should set processId', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.ExecuteProcessWipAction('toto'); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBe('toto'); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should set processWip to false and processDone to true', () => { -// const { initialState } = fromSearch; -// const action = new searchActions.ExecuteProcessSuccessAction('toto'); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeTruthy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should unset processId and set processWip and processDone to false', () => { -// const initialState = { -// ...fromSearch.initialState, -// processId: 'toto', -// processWip: true, -// processDone: true -// }; -// const action = new searchActions.ExecuteProcessFailAction(); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should unset searchData and dataLength', () => { -// const initialState = { -// ...fromSearch.initialState, -// searchData: ['toto', 'titi', 'tutu'], -// dataLength: 3 -// }; -// const action = new searchActions.DestroyResultsAction(); -// const state = fromSearch.reducer(initialState, action); -// -// expect(state.pristine).toBeTruthy(); -// expect(state.currentStep).toBeNull() -// expect(state.datasetName).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.searchData).toBeNull(); -// expect(state.dataLength).toBeNull(); -// expect(state.selectedData.length).toEqual(0); -// expect(state.processWip).toBeFalsy(); -// expect(state.processDone).toBeFalsy(); -// expect(state.processId).toBeNull(); -// expect(state.outputListEmpty).toBeNull(); -// expect(state).not.toEqual(initialState); -// }); -// -// it('should get pristine', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getPristine(state)).toBeTruthy(); -// }); -// -// it('should get currentStep', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getCurrentStep(state)).toBeNull(); -// }); -// -// it('should get datasetName', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getDatasetName(state)).toBeNull(); -// }); -// -// it('should get criteriaStepChecked', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getCriteriaStepChecked(state)).toBeFalsy(); -// }); -// -// it('should get outputStepChecked', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getOutputStepChecked(state)).toBeFalsy(); -// }); -// -// it('should get resultStepChecked', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getResultStepChecked(state)).toBeFalsy(); -// }); -// -// it('should get coneSearchAdded', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getIsConeSearchAdded(state)).toBeFalsy(); -// }); -// -// it('should get criteriaList', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getCriteriaList(state).length).toEqual(0); -// }); -// -// it('should get outputList', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getOutputList(state).length).toEqual(0); -// }); -// -// it('should get outputListEmpty', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getOutputListEmpty(state)).toBeNull(); -// }); -// -// it('should get searchData', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getSearchData(state)).toBeNull(); -// }); -// -// it('should get dataLength', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getDataLength(state)).toBeNull(); -// }); -// -// it('should get selectedData', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getSelectedData(state).length).toEqual(0); -// }); -// -// it('should get processWip', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getProcessWip(state)).toBeFalsy(); -// }); -// -// it('should get processDone', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getProcessDone(state)).toBeFalsy(); -// }); -// -// it('should get processId', () => { -// const action = {} as searchActions.Actions; -// const state = fromSearch.reducer(undefined, action); -// -// expect(fromSearch.getProcessId(state)).toBeNull(); -// }); -// }); +import * as fromSearchMultiple from './search-multiple.reducer'; +import * as searchMultipleActions from './search-multiple.action'; +import {DataByDataset, DatasetCount} from './model'; +import {Pagination, PaginationOrder} from "../../shared/datatable/model"; + +fdescribe('[SearchMultiple] Reducer', () => { + it('should return init state', () => { + const { initialState } = fromSearchMultiple; + const action = {} as searchMultipleActions.Actions; + const state = fromSearchMultiple.reducer(undefined, action); + + expect(state).toBe(initialState); + }); + + it('should init selectedDatasets', () => { + const { initialState } = fromSearchMultiple; + const action = new searchMultipleActions.InitSelectedDatasetsAction(['toto', 'tutu']); + const state = fromSearchMultiple.reducer(initialState, action); + + expect(state.ids.length).toEqual(0); + expect(state.entities).toEqual({}); + expect(state.pristine).toBeTruthy(); + expect(state.currentStep).toBeNull(); + expect(state.positionStepChecked).toBeFalsy(); + expect(state.datasetsStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.selectedDatasets.length).toEqual(2); + expect(state.selectedDatasets.includes('toto')).toBeTruthy(); + expect(state.selectedDatasets.includes('tutu')).toBeTruthy(); + expect(state.datasetsCountIsLoading).toBeFalsy(); + expect(state.datasetsCountIsLoaded).toBeFalsy(); + expect(state.datasetsCount.length).toEqual(0); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toEqual(initialState); + }); + + it('should set currentStep to "position"', () => { + const { initialState } = fromSearchMultiple; + const action = new searchMultipleActions.ChangeStepAction('position'); + const state = fromSearchMultiple.reducer(initialState, action); + + expect(state.ids.length).toEqual(0); + expect(state.entities).toEqual({}); + expect(state.pristine).toBeTruthy(); + expect(state.currentStep).toEqual('position'); + expect(state.positionStepChecked).toBeFalsy(); + expect(state.datasetsStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.selectedDatasets.length).toEqual(0); + expect(state.datasetsCountIsLoading).toBeFalsy(); + expect(state.datasetsCountIsLoaded).toBeFalsy(); + expect(state.datasetsCount.length).toEqual(0); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toEqual(initialState); + }); + + it('should set positionStepChecked to true', () => { + const { initialState } = fromSearchMultiple; + const action = new searchMultipleActions.PositionCheckedAction(); + const state = fromSearchMultiple.reducer(initialState, action); + + expect(state.ids.length).toEqual(0); + expect(state.entities).toEqual({}); + expect(state.pristine).toBeFalsy(); + expect(state.currentStep).toBeNull(); + expect(state.positionStepChecked).toBeTruthy(); + expect(state.datasetsStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.selectedDatasets.length).toEqual(0); + expect(state.datasetsCountIsLoading).toBeFalsy(); + expect(state.datasetsCountIsLoaded).toBeFalsy(); + expect(state.datasetsCount.length).toEqual(0); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toEqual(initialState); + }); + + it('should set datasetsStepChecked to true', () => { + const { initialState } = fromSearchMultiple; + const action = new searchMultipleActions.DatasetsCheckedAction(); + const state = fromSearchMultiple.reducer(initialState, action); + + expect(state.ids.length).toEqual(0); + expect(state.entities).toEqual({}); + expect(state.pristine).toBeTruthy(); + expect(state.currentStep).toBeNull(); + expect(state.positionStepChecked).toBeFalsy(); + expect(state.datasetsStepChecked).toBeTruthy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.selectedDatasets.length).toEqual(0); + expect(state.datasetsCountIsLoading).toBeFalsy(); + expect(state.datasetsCountIsLoaded).toBeFalsy(); + expect(state.datasetsCount.length).toEqual(0); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toEqual(initialState); + }); + + it('should set resultStepChecked to true', () => { + const { initialState } = fromSearchMultiple; + const action = new searchMultipleActions.ResultsCheckedAction(); + const state = fromSearchMultiple.reducer(initialState, action); + + expect(state.ids.length).toEqual(0); + expect(state.entities).toEqual({}); + expect(state.pristine).toBeTruthy(); + expect(state.currentStep).toBeNull(); + expect(state.positionStepChecked).toBeFalsy(); + expect(state.datasetsStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeTruthy(); + expect(state.selectedDatasets.length).toEqual(0); + expect(state.datasetsCountIsLoading).toBeFalsy(); + expect(state.datasetsCountIsLoaded).toBeFalsy(); + expect(state.datasetsCount.length).toEqual(0); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toEqual(initialState); + }); + + it('should change selectedDatasets', () => { + const { initialState } = fromSearchMultiple; + const action = new searchMultipleActions.UpdateSelectedDatasetsAction(['toto', 'tutu']); + const state = fromSearchMultiple.reducer(initialState, action); + + expect(state.ids.length).toEqual(0); + expect(state.entities).toEqual({}); + expect(state.pristine).toBeTruthy(); + expect(state.currentStep).toBeNull(); + expect(state.positionStepChecked).toBeFalsy(); + expect(state.datasetsStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.selectedDatasets.length).toEqual(2); + expect(state.selectedDatasets.includes('toto')).toBeTruthy(); + expect(state.selectedDatasets.includes('tutu')).toBeTruthy(); + expect(state.datasetsCountIsLoading).toBeFalsy(); + expect(state.datasetsCountIsLoaded).toBeFalsy(); + expect(state.datasetsCount.length).toEqual(0); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toEqual(initialState); + }); + + it('should set datasetsCountIsLoading to true', () => { + const { initialState } = fromSearchMultiple; + const action = new searchMultipleActions.RetrieveDatasetsCountAction(); + const state = fromSearchMultiple.reducer(initialState, action); + + expect(state.ids.length).toEqual(0); + expect(state.entities).toEqual({}); + expect(state.pristine).toBeTruthy(); + expect(state.currentStep).toBeNull(); + expect(state.positionStepChecked).toBeFalsy(); + expect(state.datasetsStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.selectedDatasets.length).toEqual(0); + expect(state.datasetsCountIsLoading).toBeTruthy(); + expect(state.datasetsCountIsLoaded).toBeFalsy(); + expect(state.datasetsCount.length).toEqual(0); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toEqual(initialState); + }); + + it('should set datasetsCountIsLoading to false, set datasetsCountIsLoaded to true and set datasetsCount', () => { + const datasetsCount: DatasetCount[] = [{ dname: 'toto', count: 2}]; + const initialState = { ...fromSearchMultiple.initialState, datasetsCountIsLoading: true }; + const action = new searchMultipleActions.RetrieveDatasetsCountSuccessAction(datasetsCount); + const state = fromSearchMultiple.reducer(initialState, action); + + expect(state.ids.length).toEqual(0); + expect(state.entities).toEqual({}); + expect(state.pristine).toBeTruthy(); + expect(state.currentStep).toBeNull(); + expect(state.positionStepChecked).toBeFalsy(); + expect(state.datasetsStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.selectedDatasets.length).toEqual(0); + expect(state.datasetsCountIsLoading).toBeFalsy(); + expect(state.datasetsCountIsLoaded).toBeTruthy(); + expect(state.datasetsCount).toEqual(datasetsCount); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toEqual(initialState); + }); + + it('should set datasetsCountIsLoading to false', () => { + const initialState = { ...fromSearchMultiple.initialState, datasetsCountIsLoading: true }; + const action = new searchMultipleActions.RetrieveDatasetsCountFailAction(); + const state = fromSearchMultiple.reducer(initialState, action); + + expect(state.ids.length).toEqual(0); + expect(state.entities).toEqual({}); + expect(state.pristine).toBeTruthy(); + expect(state.currentStep).toBeNull(); + expect(state.positionStepChecked).toBeFalsy(); + expect(state.datasetsStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.selectedDatasets.length).toEqual(0); + expect(state.datasetsCountIsLoading).toBeFalsy(); + expect(state.datasetsCountIsLoaded).toBeFalsy(); + expect(state.datasetsCount.length).toEqual(0); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toEqual(initialState); + }); + + it('should set data', () => { + const pagination: Pagination = { dname: 'toto', nbItems: 10, page: 1, sortedCol: 1, order: PaginationOrder.a }; + const expectedEntity: DataByDataset = { datasetName: 'toto', isLoading: true, isLoaded: false, data: [] }; + const { initialState } = fromSearchMultiple; + const action = new searchMultipleActions.RetrieveDataAction(pagination); + const state = fromSearchMultiple.reducer(initialState, action); + + expect(state.ids.length).toEqual(1); + expect(state.ids).toContain('toto'); + expect(state.entities['toto']).toEqual(expectedEntity); + expect(state.pristine).toBeTruthy(); + expect(state.currentStep).toBeNull(); + expect(state.positionStepChecked).toBeFalsy(); + expect(state.datasetsStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.selectedDatasets.length).toEqual(0); + expect(state.datasetsCountIsLoading).toBeFalsy(); + expect(state.datasetsCountIsLoaded).toBeFalsy(); + expect(state.datasetsCount.length).toEqual(0); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toEqual(initialState); + }); + + it('should update data when success', () => { + const expectedEntity: DataByDataset = { datasetName: 'toto', isLoading: false, isLoaded: true, data: [1, 2] }; + const initialState = { + ...fromSearchMultiple.initialState, + ids: ['toto'], + entities: { 'toto': { datasetName: 'toto', isLoading: true, isLoaded: false, data: [] }} + }; + const action = new searchMultipleActions.RetrieveDataSuccessAction({ datasetName: 'toto', data: [1, 2] }); + const state = fromSearchMultiple.reducer(initialState, action); + + expect(state.ids.length).toEqual(1); + expect(state.ids).toContain('toto'); + expect(state.entities['toto']).toEqual(expectedEntity); + expect(state.pristine).toBeTruthy(); + expect(state.currentStep).toBeNull(); + expect(state.positionStepChecked).toBeFalsy(); + expect(state.datasetsStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.selectedDatasets.length).toEqual(0); + expect(state.datasetsCountIsLoading).toBeFalsy(); + expect(state.datasetsCountIsLoaded).toBeFalsy(); + expect(state.datasetsCount.length).toEqual(0); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toEqual(initialState); + }); + + it('should update data when fail', () => { + const expectedEntity: DataByDataset = { datasetName: 'toto', isLoading: false, isLoaded: false, data: [] }; + const initialState = { + ...fromSearchMultiple.initialState, + ids: ['toto'], + entities: { 'toto': { datasetName: 'toto', isLoading: true, isLoaded: false, data: [] }} + }; + const action = new searchMultipleActions.RetrieveDataFailAction('toto'); + const state = fromSearchMultiple.reducer(initialState, action); + + expect(state.ids.length).toEqual(1); + expect(state.ids).toContain('toto'); + expect(state.entities['toto']).toEqual(expectedEntity); + expect(state.pristine).toBeTruthy(); + expect(state.currentStep).toBeNull(); + expect(state.positionStepChecked).toBeFalsy(); + expect(state.datasetsStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.selectedDatasets.length).toEqual(0); + expect(state.datasetsCountIsLoading).toBeFalsy(); + expect(state.datasetsCountIsLoaded).toBeFalsy(); + expect(state.datasetsCount.length).toEqual(0); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toEqual(initialState); + }); + + it('should change selectedData', () => { + const { initialState } = fromSearchMultiple; + const action = new searchMultipleActions.UpdateSelectedDataAction([{ dname: 'toto', data:[1, 2] }]); + const state = fromSearchMultiple.reducer(initialState, action); + + expect(state.ids.length).toEqual(0); + expect(state.entities).toEqual({}); + expect(state.pristine).toBeTruthy(); + expect(state.currentStep).toBeNull(); + expect(state.positionStepChecked).toBeFalsy(); + expect(state.datasetsStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.selectedDatasets.length).toEqual(0); + expect(state.datasetsCountIsLoading).toBeFalsy(); + expect(state.datasetsCountIsLoaded).toBeFalsy(); + expect(state.datasetsCount.length).toEqual(0); + expect(state.selectedData.length).toEqual(1); + expect(state.selectedData).toContain({ dname: 'toto', data:[1, 2] }); + expect(state).not.toEqual(initialState); + }); + + it('should destroy results', () => { + const initialState = { + ...fromSearchMultiple.initialState, + ids: ['toto'], + entities: { 'toto': { datasetName: 'toto', isLoading: false, isLoaded: true, data: [1, 2] }}, + datasetsCountIsLoaded: true, + datasetsCount: [{ dname: 'toto', count: 2}], + selectedData: [{ dname: 'toto', data:[1, 2] }] + }; + const action = new searchMultipleActions.DestroyResultsAction(); + const state = fromSearchMultiple.reducer(initialState, action); + + expect(state.ids.length).toEqual(0); + expect(state.entities).toEqual({}); + expect(state.pristine).toBeTruthy(); + expect(state.currentStep).toBeNull(); + expect(state.positionStepChecked).toBeFalsy(); + expect(state.datasetsStepChecked).toBeFalsy(); + expect(state.resultStepChecked).toBeFalsy(); + expect(state.selectedDatasets.length).toEqual(0); + expect(state.datasetsCountIsLoading).toBeFalsy(); + expect(state.datasetsCountIsLoaded).toBeFalsy(); + expect(state.datasetsCount.length).toEqual(0); + expect(state.selectedData.length).toEqual(0); + expect(state).not.toEqual(initialState); + }); + + it('should reset search multiple', () => { + const initialState = { + ...fromSearchMultiple.initialState, + ids: ['toto'], + entities: { 'toto': { datasetName: 'toto', isLoading: false, isLoaded: true, data: [1, 2] }}, + pristine: false, + currentStep: 'datasets', + positionStepChecked: true, + datasetsStepChecked: true, + resultStepChecked: true, + selectedDatasets: ['toto'], + datasetsCountIsLoading: true, + datasetsCountIsLoaded: true, + datasetsCount: [{ dname: 'toto', count: 2}], + selectedData: [{ dname: 'toto', data:[1, 2] }] + }; + const action = new searchMultipleActions.DestroyResultsAction(); + const state = fromSearchMultiple.reducer(initialState, action); + + expect(state.ids.length).toEqual(0); + expect(state.entities).toEqual({}); + expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull(); + // expect(state.positionStepChecked).toBeFalsy(); + // expect(state.datasetsStepChecked).toBeFalsy(); + // expect(state.resultStepChecked).toBeFalsy(); + // expect(state.selectedDatasets.length).toEqual(0); + // expect(state.datasetsCountIsLoading).toBeFalsy(); + // expect(state.datasetsCountIsLoaded).toBeFalsy(); + // expect(state.datasetsCount.length).toEqual(0); + // expect(state.selectedData.length).toEqual(0); + expect(state).not.toEqual(initialState); + }); + + // it('should change the currentStep', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.ChangeStepAction('toto'); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toEqual('toto'); + // expect(state.datasetName).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.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + + // it('should set the datasetName and change pristine', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.SelectDatasetAction('toto'); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeFalsy(); + // expect(state.currentStep).toBeNull(); + // expect(state.datasetName).toBe('toto'); + // 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.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should set currentStep to "dataset"', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.NewSearchAction('toto'); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toEqual('dataset'); + // expect(state.datasetName).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.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should set criteriaStepChecked to true', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.CriteriaChecked(); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should set outputStepChecked to true', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.OutputChecked(); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should set resultStepChecked to true', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.ResultChecked(); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should set coneSearchAdded to true', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.IsConeSearchAddedAction(true); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).toBeNull(); + // expect(state.criteriaStepChecked).toBeFalsy(); + // expect(state.outputStepChecked).toBeFalsy(); + // expect(state.resultStepChecked).toBeFalsy(); + // expect(state.coneSearchAdded).toBeTruthy(); + // expect(state.criteriaList.length).toEqual(0); + // expect(state.outputList.length).toEqual(0); + // expect(state.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // + // it('should set criteriaList', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.UpdateCriteriaListAction(CRITERIA_LIST); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).toBeNull(); + // expect(state.criteriaStepChecked).toBeFalsy(); + // expect(state.outputStepChecked).toBeFalsy(); + // expect(state.resultStepChecked).toBeFalsy(); + // expect(state.coneSearchAdded).toBeFalsy(); + // expect(state.criteriaList.length).toEqual(2); + // expect(state.outputList.length).toEqual(0); + // expect(state.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should add criterion to criteriaList', () => { + // const criterion: FieldCriterion = { id: 3, type: 'field', operator: 'eq', value: 'fd_crit_3' }; + // const { initialState } = fromSearch; + // const action = new searchActions.AddCriterionAction(criterion); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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[0].id).toEqual(3); + // expect(state.outputList.length).toEqual(0); + // expect(state.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should remove criterion to criteriaList', () => { + // const criterion: FieldCriterion = { id: 2, type: 'field', operator: 'eq', value: 'fd_crit_2' }; + // const initialState = { ...fromSearch.initialState, criteriaList: CRITERIA_LIST }; + // const action = new searchActions.DeleteCriterionAction(criterion.id); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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[0].id).toEqual(1); + // expect(state.outputList.length).toEqual(0); + // expect(state.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should set outputList', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.UpdateOutputListAction([1, 2]); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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(2); + // expect(state.outputList).toContain(1); + // expect(state.outputList).toContain(2); + // expect(state.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should set outputListEmpty to false', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.OutputListEmptyAction(false); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeFalsy(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should set searchData', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.RetrieveDataSuccessAction(['data_1', 'data_2']); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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.searchData.length).toBe(2); + // expect(state.searchData).toContain('data_1'); + // expect(state.searchData).toContain('data_2'); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should set dataLength', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.GetDataLengthSuccessAction(12); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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.searchData).toBeNull(); + // expect(state.dataLength).toBe(12); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should add data to selectedData', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.AddSelectedDataAction(1); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(1); + // expect(state.selectedData).toContain(1); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should remove data to selectedData', () => { + // const initialState = { ...fromSearch.initialState, selectedData: ['data_1', 'data_2'] }; + // const action = new searchActions.DeleteSelectedDataAction('data_2'); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(1); + // expect(state.selectedData).toContain('data_1'); + // expect(state.selectedData).not.toContain('data_2'); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should set processWip to true and processDone to false', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.ExecuteProcessAction('process_type'); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeTruthy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should set processId', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.ExecuteProcessWipAction('toto'); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBe('toto'); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should set processWip to false and processDone to true', () => { + // const { initialState } = fromSearch; + // const action = new searchActions.ExecuteProcessSuccessAction('toto'); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeTruthy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should unset processId and set processWip and processDone to false', () => { + // const initialState = { + // ...fromSearch.initialState, + // processId: 'toto', + // processWip: true, + // processDone: true + // }; + // const action = new searchActions.ExecuteProcessFailAction(); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should unset searchData and dataLength', () => { + // const initialState = { + // ...fromSearch.initialState, + // searchData: ['toto', 'titi', 'tutu'], + // dataLength: 3 + // }; + // const action = new searchActions.DestroyResultsAction(); + // const state = fromSearch.reducer(initialState, action); + // + // expect(state.pristine).toBeTruthy(); + // expect(state.currentStep).toBeNull() + // expect(state.datasetName).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.searchData).toBeNull(); + // expect(state.dataLength).toBeNull(); + // expect(state.selectedData.length).toEqual(0); + // expect(state.processWip).toBeFalsy(); + // expect(state.processDone).toBeFalsy(); + // expect(state.processId).toBeNull(); + // expect(state.outputListEmpty).toBeNull(); + // expect(state).not.toEqual(initialState); + // }); + // + // it('should get pristine', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getPristine(state)).toBeTruthy(); + // }); + // + // it('should get currentStep', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getCurrentStep(state)).toBeNull(); + // }); + // + // it('should get datasetName', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getDatasetName(state)).toBeNull(); + // }); + // + // it('should get criteriaStepChecked', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getCriteriaStepChecked(state)).toBeFalsy(); + // }); + // + // it('should get outputStepChecked', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getOutputStepChecked(state)).toBeFalsy(); + // }); + // + // it('should get resultStepChecked', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getResultStepChecked(state)).toBeFalsy(); + // }); + // + // it('should get coneSearchAdded', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getIsConeSearchAdded(state)).toBeFalsy(); + // }); + // + // it('should get criteriaList', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getCriteriaList(state).length).toEqual(0); + // }); + // + // it('should get outputList', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getOutputList(state).length).toEqual(0); + // }); + // + // it('should get outputListEmpty', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getOutputListEmpty(state)).toBeNull(); + // }); + // + // it('should get searchData', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getSearchData(state)).toBeNull(); + // }); + // + // it('should get dataLength', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getDataLength(state)).toBeNull(); + // }); + // + // it('should get selectedData', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getSelectedData(state).length).toEqual(0); + // }); + // + // it('should get processWip', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getProcessWip(state)).toBeFalsy(); + // }); + // + // it('should get processDone', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getProcessDone(state)).toBeFalsy(); + // }); + // + // it('should get processId', () => { + // const action = {} as searchActions.Actions; + // const state = fromSearch.reducer(undefined, action); + // + // expect(fromSearch.getProcessId(state)).toBeNull(); + // }); +}); diff --git a/src/app/search-multiple/store/search-multiple.reducer.ts b/src/app/search-multiple/store/search-multiple.reducer.ts index c17241d76f286f29e4a0164580fa5ce28776d8dc..62e6f02ba8b9bc332642dad0f20ee0973b721339 100644 --- a/src/app/search-multiple/store/search-multiple.reducer.ts +++ b/src/app/search-multiple/store/search-multiple.reducer.ts @@ -1,7 +1,7 @@ +import { createEntityAdapter, EntityAdapter, EntityState, Update } from '@ngrx/entity'; + import * as actions from './search-multiple.action'; -import { Attribute } from "../../metamodel/model"; -import { DataByDataset, DatasetCount, SearchMultipleQueryParams } from "./model"; -import {createEntityAdapter, EntityAdapter, EntityState, Update} from "@ngrx/entity"; +import { DataByDataset, DatasetCount } from './model'; export interface State extends EntityState<DataByDataset> { @@ -10,12 +10,10 @@ export interface State extends EntityState<DataByDataset> { positionStepChecked: boolean; datasetsStepChecked: boolean; resultStepChecked: boolean; - queryParams: SearchMultipleQueryParams; selectedDatasets: string[]; datasetsCountIsLoading: boolean; datasetsCountIsLoaded: boolean; datasetsCount: DatasetCount[]; - attributeList: { dname: string, attributeList: Attribute[] }[]; selectedData: { dname: string, data: (string | number)[] }[]; } @@ -33,12 +31,10 @@ export const initialState: State = adapter.getInitialState({ positionStepChecked: false, datasetsStepChecked: false, resultStepChecked: false, - queryParams: null, selectedDatasets: [], datasetsCountIsLoading: false, datasetsCountIsLoaded: false, datasetsCount: [], - attributeList: [], selectedData: [] }); @@ -69,36 +65,36 @@ export function reducer(state: State = initialState, action: actions.Actions): S datasetsStepChecked: true }; - case actions.RETRIEVE_DATASETS_COUNT: + case actions.RESULTS_CHECKED: return { ...state, - datasetsCountIsLoading: true + resultStepChecked: true }; - case actions.RETRIEVE_DATASETS_COUNT_SUCCESS: + case actions.UPDATE_SELECTED_DATASETS: return { ...state, - datasetsCountIsLoading: false, - datasetsCountIsLoaded: true, - datasetsCount: action.payload + selectedDatasets: action.payload }; - case actions.RETRIEVE_DATASETS_COUNT_FAIL: + case actions.RETRIEVE_DATASETS_COUNT: return { ...state, - datasetsCountIsLoading: false + datasetsCountIsLoading: true }; - case actions.UPDATE_SELECTED_DATASETS: + case actions.RETRIEVE_DATASETS_COUNT_SUCCESS: return { ...state, - selectedDatasets: action.payload + datasetsCountIsLoading: false, + datasetsCountIsLoaded: true, + datasetsCount: action.payload }; - case actions.RETRIEVE_ATTRIBUTE_LIST_SUCCESS: + case actions.RETRIEVE_DATASETS_COUNT_FAIL: return { ...state, - attributeList: [...state.attributeList, action.payload] + datasetsCountIsLoading: false }; case actions.RETRIEVE_DATA: @@ -158,10 +154,8 @@ export const getCurrentStep = (state: State) => state.currentStep; export const getPositionStepChecked = (state: State) => state.positionStepChecked; export const getDatasetsStepChecked = (state: State) => state.datasetsStepChecked; export const getResultStepChecked = (state: State) => state.resultStepChecked; -export const getQueryParams = (state: State) => state.queryParams; export const getSelectedDatasets = (state: State) => state.selectedDatasets; export const getDatasetsCountIsLoading = (state: State) => state.datasetsCountIsLoading; export const getDatasetsCountIsLoaded = (state: State) => state.datasetsCountIsLoaded; export const getDatasetsCount = (state: State) => state.datasetsCount; -export const getAttributeList = (state: State) => state.attributeList; export const getSelectedData = (state: State) => state.selectedData; diff --git a/src/app/search-multiple/store/search-multiple.selector.spec.ts b/src/app/search-multiple/store/search-multiple.selector.spec.ts index 648e516cda78c5e39ed772c6ca601b6d46afb029..e72120ea74f4996e1442275b3d16cf7aca629bec 100644 --- a/src/app/search-multiple/store/search-multiple.selector.spec.ts +++ b/src/app/search-multiple/store/search-multiple.selector.spec.ts @@ -1,158 +1,104 @@ -// import * as searchSelector from './search.selector'; -// import * as fromSearch from './search.reducer'; -// import * as fromConeSearch from '../../shared/cone-search/store/cone-search.reducer'; -// import { Criterion } from './model'; -// import { CRITERIA_LIST } from 'src/settings/test-data'; -// import { ConeSearch } from "../../shared/cone-search/store/model"; -// -// describe('[Search] Selector', () => { -// it('should get pristine', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getPristine(state)).toBeTruthy(); -// }); -// -// it('should get currentStep', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getCurrentStep(state)).toBeNull(); -// }); -// -// it('should get datasetName', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getDatasetName(state)).toBeNull(); -// }); -// -// it('should get criteriaStepChecked', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getCriteriaStepChecked(state)).toBeFalsy(); -// }); -// -// it('should get outputStepChecked', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getOutputStepChecked(state)).toBeFalsy(); -// }); -// -// it('should get resultStepChecked', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getResultStepChecked(state)).toBeFalsy(); -// }); -// -// it('should get coneSearchAdded', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getIsConeSearchAdded(state)).toBeFalsy(); -// }); -// -// it('should get criteriaList', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getCriteriaList(state).length).toEqual(0); -// }); -// -// it('should get outputList', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getOutputList(state).length).toEqual(0); -// }); -// -// it('should get searchData', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getSearchData(state)).toBeNull(); -// }); -// -// it('should get dataLength', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getDataLength(state)).toBeNull(); -// }); -// -// it('should get selectedData', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getSelectedData(state).length).toEqual(0); -// }); -// -// it('should get queryParams without criteria', () => { -// const outputList: number[] = [1, 2]; -// const state = { -// search: { -// ...fromSearch.initialState, -// outputList -// }, -// coneSearch: { ...fromConeSearch.initialState } -// }; -// const expected = { s: '000', a: '1;2' }; -// -// expect(searchSelector.getQueryParams(state)).toEqual(expected); -// }); -// -// it('should get queryParams with criteria', () => { -// const outputList: number[] = [1, 2]; -// const criteriaList: Criterion[] = CRITERIA_LIST; -// const state = { -// search: { -// ...fromSearch.initialState, -// outputList, -// criteriaList -// }, -// coneSearch: { ...fromConeSearch.initialState } -// }; -// const expected = { s: '000', a: '1;2', c: '1::eq::fd_crit_1;2::eq::fd_crit_2' }; -// -// expect(searchSelector.getQueryParams(state)).toEqual(expected); -// }); -// -// it('should get queryParams with cone search', () => { -// const outputList: number[] = [1, 2]; -// const coneSearchAdded: boolean = true; -// const coneSearch: ConeSearch = { ra: 3, dec: 4, radius: 5 }; -// const state = { -// search: { -// ...fromSearch.initialState, -// outputList, -// coneSearchAdded -// }, -// coneSearch: { -// ...fromConeSearch.initialState, -// coneSearch -// } -// }; -// const expected = { s: '000', a: '1;2', cs: '3:4:5' }; -// -// expect(searchSelector.getQueryParams(state)).toEqual(expected); -// }); -// -// it('should get queryParams with checked steps', () => { -// const criteriaStepChecked: boolean = true; -// const outputStepChecked: boolean = true; -// const resultStepChecked: boolean = true; -// const outputList: number[] = [1, 2]; -// const state = { -// search: { -// ...fromSearch.initialState, -// criteriaStepChecked, -// outputStepChecked, -// resultStepChecked, -// outputList -// }, -// coneSearch: { ...fromConeSearch.initialState } -// }; -// const expected = { s: '111', a: '1;2' }; -// -// expect(searchSelector.getQueryParams(state)).toEqual(expected); -// }); -// -// it('should get processWip', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getProcessWip(state)).toBeFalsy(); -// }); -// -// it('should get processDone', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getProcessDone(state)).toBeFalsy(); -// }); -// -// it('should get processId', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getProcessId(state)).toBeNull(); -// }); -// -// it('should get outputListEmpty', () => { -// const state = { search: { ...fromSearch.initialState }}; -// expect(searchSelector.getOutputListEmpty(state)).toBeNull(); -// }); -// }); \ No newline at end of file +import * as searchMultipleSelector from './search-multiple.selector'; +import * as fromSearchMultiple from './search-multiple.reducer'; +import * as fromConeSearch from '../../shared/cone-search/store/cone-search.reducer'; +import { ConeSearch } from '../../shared/cone-search/store/model'; +import { SearchMultipleQueryParams } from './model'; + +describe('[SearchMultiple] Selector', () => { + it('should get current step', () => { + const state = { searchMultiple: { ...fromSearchMultiple.initialState }}; + expect(searchMultipleSelector.getCurrentStep(state)).toBeNull(); + }); + + it('should get positionStepChecked', () => { + const state = { searchMultiple: { ...fromSearchMultiple.initialState }}; + expect(searchMultipleSelector.getPositionStepChecked(state)).toBeFalsy(); + }); + + it('should get datasetsStepChecked', () => { + const state = { searchMultiple: { ...fromSearchMultiple.initialState }}; + expect(searchMultipleSelector.getDatasetsStepChecked(state)).toBeFalsy(); + }); + + it('should get resultsStepChecked', () => { + const state = { searchMultiple: { ...fromSearchMultiple.initialState }}; + expect(searchMultipleSelector.getResultStepChecked(state)).toBeFalsy(); + }); + + it('should get selectedDatasets', () => { + const state = { searchMultiple: { ...fromSearchMultiple.initialState }}; + expect(searchMultipleSelector.getSelectedDatasets(state).length).toEqual(0); + }); + + it('should get noSelectedDatasets', () => { + const state = { searchMultiple: { ...fromSearchMultiple.initialState }}; + expect(searchMultipleSelector.getNoSelectedDatasets(state)).toBeTruthy(); + }); + + it('should get queryParams without cone search and selected datasets', () => { + const state = { + searchMultiple: { ...fromSearchMultiple.initialState }, + coneSearch: { ...fromConeSearch.initialState } + }; + + expect(searchMultipleSelector.getQueryParams(state)).toEqual({}); + }); + + it('should get queryParams with cone search', () => { + const coneSearch: ConeSearch = { ra: 1, dec: 2, radius: 3 }; + const state = { + searchMultiple: { ...fromSearchMultiple.initialState }, + coneSearch: { + ...fromConeSearch.initialState, + coneSearch + } + }; + const expectedQueryParams: SearchMultipleQueryParams = { cs: '1:2:3' }; + + expect(searchMultipleSelector.getQueryParams(state)).toEqual(expectedQueryParams); + }); + + it('should get queryParams with selected datasets', () => { + const selectedDatasets: string[] = ['toto', 'tutu']; + const state = { + searchMultiple: { + ...fromSearchMultiple.initialState, + selectedDatasets + }, + coneSearch: { ...fromConeSearch.initialState } + }; + const expectedQueryParams: SearchMultipleQueryParams = { d: 'toto;tutu' }; + + expect(searchMultipleSelector.getQueryParams(state)).toEqual(expectedQueryParams); + }); + + it('should get datasetsCountIsLoading', () => { + const state = { searchMultiple: { ...fromSearchMultiple.initialState }}; + expect(searchMultipleSelector.getDatasetsCountIsLoading(state)).toBeFalsy(); + }); + + it('should get datasetsCountIsLoaded', () => { + const state = { searchMultiple: { ...fromSearchMultiple.initialState }}; + expect(searchMultipleSelector.getDatasetsCountIsLoaded(state)).toBeFalsy(); + }); + + it('should get datasetsCount', () => { + const state = { searchMultiple: { ...fromSearchMultiple.initialState }}; + expect(searchMultipleSelector.getDatasetsCount(state).length).toEqual(0); + }); + + it('should get datasetsWithData', () => { + const state = { searchMultiple: { ...fromSearchMultiple.initialState }}; + expect(searchMultipleSelector.getDatasetsWithData(state).length).toEqual(0); + }); + + it('should get allData', () => { + const state = { searchMultiple: { ...fromSearchMultiple.initialState }}; + expect(searchMultipleSelector.getAllData(state)).toEqual({}); + }); + + it('should get sSelectedData', () => { + const state = { searchMultiple: { ...fromSearchMultiple.initialState }}; + expect(searchMultipleSelector.getSelectedData(state).length).toEqual(0); + }); +}); \ No newline at end of file diff --git a/src/app/search-multiple/store/search-multiple.selector.ts b/src/app/search-multiple/store/search-multiple.selector.ts index a15e49defee586090df47a6b7205b894c7f4c719..9c1457f60a60a8fcab2b76552e884b936c8fcf06 100644 --- a/src/app/search-multiple/store/search-multiple.selector.ts +++ b/src/app/search-multiple/store/search-multiple.selector.ts @@ -1,11 +1,10 @@ import { createSelector, createFeatureSelector } from '@ngrx/store'; import * as searchMultiple from './search-multiple.reducer'; -import { getConeSearch, getIsValidConeSearch } from "../../shared/cone-search/store/cone-search.selector"; -import { ConeSearch } from "../../shared/cone-search/store/model"; -import { SearchMultipleQueryParams } from "./model"; -import * as att from "../../metamodel/reducers/att.reducer"; -import {getAttState} from "../../metamodel/selectors"; +import { getConeSearch, getIsValidConeSearch } from '../../shared/cone-search/store/cone-search.selector'; +import { ConeSearch } from '../../shared/cone-search/store/model'; +import { SearchMultipleQueryParams } from './model'; + export const getSearchMultipleState = createFeatureSelector<searchMultiple.State>('searchMultiple'); @@ -83,11 +82,6 @@ export const getDatasetsCount = createSelector( searchMultiple.getDatasetsCount ); -export const getAttributeList = createSelector( - getSearchMultipleState, - searchMultiple.getAttributeList -); - export const getDatasetsWithData = createSelector( getSearchMultipleState, searchMultiple.selectIds @@ -98,11 +92,6 @@ export const getAllData = createSelector( searchMultiple.selectEntities ); -// export const getData = createSelector( -// getSearchMultipleState, -// searchMultiple.getData -// ); - export const getSelectedData = createSelector( getSearchMultipleState, searchMultiple.getSelectedData diff --git a/src/app/search-multiple/store/search-multiple.service.ts b/src/app/search-multiple/store/search-multiple.service.ts index 9b48e8fe11b3f3274a9273d7f5d58e2045eaacdc..505db16e5dc5e0b6d14b2d4a3938b07155ade4b8 100644 --- a/src/app/search-multiple/store/search-multiple.service.ts +++ b/src/app/search-multiple/store/search-multiple.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + import { environment } from '../../../environments/environment'; -import { Observable } from "rxjs"; -import { Attribute } from "../../metamodel/model"; -import { map, tap, switchMap, withLatestFrom, catchError, delay } from 'rxjs/operators'; -import { DatasetCount } from "./model"; +import { DatasetCount } from './model'; @Injectable() @@ -23,14 +23,6 @@ export class SearchMultipleService { ); } - // retrieveAttributeList(dname: string): Observable<{ dname: string, attributeList: Attribute[] }> { - // return this.http.get<Attribute[]>(this.API_PATH + '/dataset/' + dname + '/attribute').pipe( - // map(res => { - // return { dname: dname, attributeList: res }; - // }) - // ); - // } - retrieveData(dname: string, query: string): Observable<{ datasetName: string, data: any[] }> { return this.http.get<any[]>(this.API_PATH + '/search/' + query).pipe( map(res => { diff --git a/src/app/shared/cone-search/store/cone-search.effects.ts b/src/app/shared/cone-search/store/cone-search.effects.ts index 583065fe18bf30c806a3d13219ca5cab3ae1e6c2..7b38db05dc3bcb458cfe61605f8234e7ff4e2b4b 100644 --- a/src/app/shared/cone-search/store/cone-search.effects.ts +++ b/src/app/shared/cone-search/store/cone-search.effects.ts @@ -1,19 +1,19 @@ import { Injectable } from '@angular/core'; import { FormControl, Validators } from '@angular/forms'; +import * as fromRouter from '@ngrx/router-store'; import { Effect, Actions, ofType } from '@ngrx/effects'; import { Action, Store } from '@ngrx/store'; import { of } from 'rxjs'; import { map, tap, switchMap, withLatestFrom, catchError } from 'rxjs/operators'; - import { ToastrService } from 'ngx-toastr'; + import * as coneSearchActions from './cone-search.action'; -import * as fromRouter from '@ngrx/router-store'; import * as fromConeSearch from './cone-search.reducer'; import * as utils from '../../utils'; import { ConeSearchService } from './cone-search.service'; import { nanValidator, rangeValidator } from '../../validator'; -import {ConeSearch} from "./model"; +import { ConeSearch } from './model'; @Injectable() @@ -94,7 +94,6 @@ export class ConeSearchEffects { if (!raForm.errors && !decForm.errors && !radiusForm.errors) { const actions: Action[] = []; actions.push(new coneSearchActions.AddConeSearchAction(addConeSearchFromUrlAction.payload)); - // actions.push(new coneSearchActions.IsValidConeSearchAction(true)); return actions; } else { this.toastr.error('Cone search from URL is not valid', 'Not valid position!');