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!');