From 43226e701be08a18921d0353f13605fd84c3e0b4 Mon Sep 17 00:00:00 2001
From: Tifenn Guillas <tifenn.guillas@lam.fr>
Date: Thu, 16 Sep 2021 16:16:08 +0200
Subject: [PATCH] Tests on selectors => DONE

---
 client/.editorconfig                          |   2 +-
 .../selectors/cone-search.selector.spec.ts    |  29 +++
 .../store/selectors/detail.selector.spec.ts   |  39 ++++
 .../store/selectors/samp.selector.spec.ts     |   9 +
 .../store/selectors/search.selector.spec.ts   | 182 ++++++++++++++++++
 5 files changed, 260 insertions(+), 1 deletion(-)
 create mode 100644 client/src/app/instance/store/selectors/cone-search.selector.spec.ts
 create mode 100644 client/src/app/instance/store/selectors/detail.selector.spec.ts
 create mode 100644 client/src/app/instance/store/selectors/samp.selector.spec.ts
 create mode 100644 client/src/app/instance/store/selectors/search.selector.spec.ts

diff --git a/client/.editorconfig b/client/.editorconfig
index 59d9a3a3..07926923 100644
--- a/client/.editorconfig
+++ b/client/.editorconfig
@@ -4,7 +4,7 @@ root = true
 [*]
 charset = utf-8
 indent_style = space
-indent_size = 2
+indent_size = 4
 insert_final_newline = true
 trim_trailing_whitespace = true
 
diff --git a/client/src/app/instance/store/selectors/cone-search.selector.spec.ts b/client/src/app/instance/store/selectors/cone-search.selector.spec.ts
new file mode 100644
index 00000000..82b1b318
--- /dev/null
+++ b/client/src/app/instance/store/selectors/cone-search.selector.spec.ts
@@ -0,0 +1,29 @@
+import * as coneSearchSelector from './cone-search.selector';
+import * as fromConeSearch from '../reducers/cone-search.reducer';
+
+describe('Cone search selector', () => {
+    it('should get coneSearch', () => {
+        const state = { instance: { coneSearch: { ...fromConeSearch.initialState }}};
+        expect(coneSearchSelector.selectConeSearch(state)).toBeNull();
+    });
+
+    it('should get resolver', () => {
+        const state = { instance: { coneSearch: { ...fromConeSearch.initialState }}};
+        expect(coneSearchSelector.selectResolver(state)).toBeNull();
+    });
+
+    it('should get resolverIsLoading', () => {
+        const state = { instance: { coneSearch: { ...fromConeSearch.initialState }}};
+        expect(coneSearchSelector.selectResolverIsLoading(state)).toBeFalsy();
+    });
+
+    it('should get resolverIsLoaded', () => {
+        const state = { instance: { coneSearch: { ...fromConeSearch.initialState }}};
+        expect(coneSearchSelector.selectResolverIsLoaded(state)).toBeFalsy();
+    });
+
+    it('should get cone search by route', () => {
+        const state = { router: { state: { queryParams: { cs: 'myConeSearch' }}}};
+        expect(coneSearchSelector.selectConeSearchByRoute(state)).toEqual('myConeSearch');
+    });
+});
diff --git a/client/src/app/instance/store/selectors/detail.selector.spec.ts b/client/src/app/instance/store/selectors/detail.selector.spec.ts
new file mode 100644
index 00000000..b6f0a0ae
--- /dev/null
+++ b/client/src/app/instance/store/selectors/detail.selector.spec.ts
@@ -0,0 +1,39 @@
+import * as detailSelector from './detail.selector';
+import * as fromDetail from '../reducers/detail.reducer';
+
+describe('Detail selector', () => {
+    it('should get object', () => {
+        const state = { instance: { detail: { ...fromDetail.initialState }}};
+        expect(detailSelector.selectObject(state)).toBeNull();
+    });
+
+    it('should get objectIsLoading', () => {
+        const state = { instance: { detail: { ...fromDetail.initialState }}};
+        expect(detailSelector.selectObjectIsLoading(state)).toBeFalsy();
+    });
+
+    it('should get objectIsLoaded', () => {
+        const state = { instance: { detail: { ...fromDetail.initialState }}};
+        expect(detailSelector.selectObjectIsLoaded(state)).toBeFalsy();
+    });
+
+    it('should get spectraCSV', () => {
+        const state = { instance: { detail: { ...fromDetail.initialState }}};
+        expect(detailSelector.selectSpectraCSV(state)).toBeNull();
+    });
+
+    it('should get spectraIsLoading', () => {
+        const state = { instance: { detail: { ...fromDetail.initialState }}};
+        expect(detailSelector.selectSpectraIsLoading(state)).toBeFalsy();
+    });
+
+    it('should get spectraIsLoaded', () => {
+        const state = { instance: { detail: { ...fromDetail.initialState }}};
+        expect(detailSelector.selectSpectraIsLoaded(state)).toBeFalsy();
+    });
+
+    it('should get id object by route', () => {
+        const state = { router: { state: { params: { id: 'myObjectId' }}}};
+        expect(detailSelector.selectIdByRoute(state)).toEqual('myObjectId');
+    });
+});
diff --git a/client/src/app/instance/store/selectors/samp.selector.spec.ts b/client/src/app/instance/store/selectors/samp.selector.spec.ts
new file mode 100644
index 00000000..bf57932e
--- /dev/null
+++ b/client/src/app/instance/store/selectors/samp.selector.spec.ts
@@ -0,0 +1,9 @@
+import * as sampSelector from './samp.selector';
+import * as fromSamp from '../reducers/samp.reducer';
+
+describe('Samp selector', () => {
+    it('should get registered', () => {
+        const state = { instance: { samp: { ...fromSamp.initialState }}};
+        expect(sampSelector.selectRegistered(state)).toBeFalsy();
+    });
+});
diff --git a/client/src/app/instance/store/selectors/search.selector.spec.ts b/client/src/app/instance/store/selectors/search.selector.spec.ts
new file mode 100644
index 00000000..db1a2d18
--- /dev/null
+++ b/client/src/app/instance/store/selectors/search.selector.spec.ts
@@ -0,0 +1,182 @@
+import * as searchSelector from './search.selector';
+import * as fromSearch from '../reducers/search.reducer';
+import * as fromConeSearch from '../reducers/cone-search.reducer';
+import { ConeSearch, Criterion, FieldCriterion } from '../models';
+
+describe('Search selector', () => {
+    it('should get selectPristine', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectPristine(state)).toBeTruthy();
+    });
+
+    it('should get currentDataset', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectCurrentDataset(state)).toBeNull();
+    });
+
+    it('should get currentStep', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectCurrentStep(state)).toBeNull();
+    });
+
+    it('should get criteriaStepChecked', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectCriteriaStepChecked(state)).toBeFalsy();
+    });
+
+    it('should get outputStepChecked', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectOutputStepChecked(state)).toBeFalsy();
+    });
+
+    it('should get resultStepChecked', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectResultStepChecked(state)).toBeFalsy();
+    });
+
+    it('should get coneSearchAdded', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectIsConeSearchAdded(state)).toBeFalsy();
+    });
+
+    it('should get criteriaList', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectCriteriaList(state).length).toEqual(0);
+    });
+
+    it('should get outputList', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectOutputList(state).length).toEqual(0);
+    });
+
+    it('should get dataLengthIsLoading', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectDataLengthIsLoading(state)).toBeFalsy();
+    });
+
+    it('should get dataLengthIsLoaded', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectDataLengthIsLoaded(state)).toBeFalsy();
+    });
+
+    it('should get dataLength', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectDataLength(state)).toBeNull();
+    });
+
+    it('should get data', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectData(state).length).toEqual(0);
+    });
+
+    it('should get dataIsLoading', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectDataIsLoading(state)).toBeFalsy();
+    });
+
+    it('should get dataIsLoaded', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectDataIsLoaded(state)).toBeFalsy();
+    });
+
+    it('should get selectedData', () => {
+        const state = { instance: { search: { ...fromSearch.initialState }}};
+        expect(searchSelector.selectSelectedData(state).length).toEqual(0);
+    });
+
+    it('should get queryParams without criteria', () => {
+        const outputList: number[] = [1, 2];
+        const state = {
+            instance: {
+                search: {
+                    ...fromSearch.initialState,
+                    outputList
+                },
+                coneSearch: { ...fromConeSearch.initialState }
+            }
+        };
+        const expected = { s: '000', a: '1;2' };
+
+        expect(searchSelector.selectQueryParams(state)).toEqual(expected);
+    });
+
+    it('should get queryParams with criteria', () => {
+        const outputList: number[] = [1, 2];
+        const criteriaList: Criterion[] = [
+            { id: 1, type: 'field', operator: 'eq', value: 'one' } as FieldCriterion,
+            { id: 2, type: 'field', operator: 'eq', value: 'two' } as FieldCriterion
+        ];
+        const state = {
+            instance: {
+                search: {
+                    ...fromSearch.initialState,
+                    outputList,
+                    criteriaList
+                },
+                coneSearch: { ...fromConeSearch.initialState }
+            }
+        };
+        const expected = { s: '000', a: '1;2', c: '1::eq::one;2::eq::two' };
+
+        expect(searchSelector.selectQueryParams(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 = {
+            instance: {
+                search: {
+                    ...fromSearch.initialState,
+                    outputList,
+                    coneSearchAdded
+                },
+                coneSearch: {
+                    ...fromConeSearch.initialState,
+                    coneSearch
+                }
+            }
+        };
+        const expected = { s: '000', a: '1;2', cs: '3:4:5' };
+
+        expect(searchSelector.selectQueryParams(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 = {
+            instance: {
+                search: {
+                    ...fromSearch.initialState,
+                    criteriaStepChecked,
+                    outputStepChecked,
+                    resultStepChecked,
+                    outputList
+                },
+                coneSearch: { ...fromConeSearch.initialState }
+            }
+        };
+        const expected = { s: '111', a: '1;2' };
+
+        expect(searchSelector.selectQueryParams(state)).toEqual(expected);
+    });
+
+    it('should get steps by route', () => {
+        const state = { router: { state: { queryParams: { s: 'myParams' }}}};
+        expect(searchSelector.selectStepsByRoute(state)).toEqual('myParams');
+    });
+
+    it('should get criteria by route', () => {
+        const state = { router: { state: { queryParams: { c: 'myParams' }}}};
+        expect(searchSelector.selectCriteriaListByRoute(state)).toEqual('myParams');
+    });
+
+    it('should get output by route', () => {
+        const state = { router: { state: { queryParams: { a: 'myParams' }}}};
+        expect(searchSelector.selectOutputListByRoute(state)).toEqual('myParams');
+    });
+});
-- 
GitLab