From 12436d262fbe1b61a2448e32b55135c81aefe67d Mon Sep 17 00:00:00 2001
From: dangapay <divin.angapay@lam.fr>
Date: Thu, 20 Oct 2022 15:58:45 +0200
Subject: [PATCH] add test for admin/instance/dataset/components/
 dataset-family

---
 Makefile                                      |  4 +-
 .../criteria/option-list.component.spec.ts    | 15 ++-
 .../general/tr-general.component.spec.ts      |  5 +-
 .../cone-search-config.component.spec.ts      |  2 +
 .../criteria-family-list.component.spec.ts    |  5 +-
 .../dataset-family-card.component.spec.ts     | 58 ++++++++++++
 .../dataset-family-form.component.spec.ts     | 53 +++++++++++
 .../edit-dataset-family.component.spec.ts     | 57 ++++++++++++
 .../components/dataset-family/index.spec.ts   | 19 ++++
 .../dataset/dataset-card.component.spec.ts    | 40 ++++++++
 .../dataset/dataset-form.component.spec.ts    | 93 +++++++++++++++++++
 .../dataset/components/dataset/index.spec.ts  | 19 ++++
 12 files changed, 364 insertions(+), 6 deletions(-)
 create mode 100644 client/src/app/admin/instance/dataset/components/dataset-family/dataset-family-card.component.spec.ts
 create mode 100644 client/src/app/admin/instance/dataset/components/dataset-family/dataset-family-form.component.spec.ts
 create mode 100644 client/src/app/admin/instance/dataset/components/dataset-family/edit-dataset-family.component.spec.ts
 create mode 100644 client/src/app/admin/instance/dataset/components/dataset-family/index.spec.ts
 create mode 100644 client/src/app/admin/instance/dataset/components/dataset/dataset-card.component.spec.ts
 create mode 100644 client/src/app/admin/instance/dataset/components/dataset/dataset-form.component.spec.ts
 create mode 100644 client/src/app/admin/instance/dataset/components/dataset/index.spec.ts

diff --git a/Makefile b/Makefile
index 993b6e2b..d4fb97bc 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
-UID := 1000
-GID := 1000
+UID := 9898
+GID := 4000
 
 
 list:
diff --git a/client/src/app/admin/instance/dataset/components/attribute/criteria/option-list.component.spec.ts b/client/src/app/admin/instance/dataset/components/attribute/criteria/option-list.component.spec.ts
index 91cfaffb..375925ab 100644
--- a/client/src/app/admin/instance/dataset/components/attribute/criteria/option-list.component.spec.ts
+++ b/client/src/app/admin/instance/dataset/components/attribute/criteria/option-list.component.spec.ts
@@ -7,10 +7,21 @@
  * file that was distributed with this source code.
  */
 
+import { Component } from '@angular/core';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ReactiveFormsModule, UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 import { OptionListComponent } from './option-list.component';
+@Component({
+    selector: 'app-option-form',
+})
+class OptionFormComponent {
+    form: UntypedFormGroup = new UntypedFormGroup({});
+}
+@Component({
+    selector: 'app-generate-option-list',
+})
+export class GenerateOptionListComponent {}
 
 describe('[admin][instance][dataset][components][attribute][criteria] OptionListComponent', () => {
     let component: OptionListComponent;
@@ -24,7 +35,9 @@ describe('[admin][instance][dataset][components][attribute][criteria] OptionList
     beforeEach(() => {
         TestBed.configureTestingModule({
             declarations: [
-                OptionListComponent
+                OptionListComponent,
+                OptionFormComponent,
+                GenerateOptionListComponent
             ],
             imports: [
                 BrowserAnimationsModule,
diff --git a/client/src/app/admin/instance/dataset/components/attribute/general/tr-general.component.spec.ts b/client/src/app/admin/instance/dataset/components/attribute/general/tr-general.component.spec.ts
index dbf19c1e..d62a63ba 100644
--- a/client/src/app/admin/instance/dataset/components/attribute/general/tr-general.component.spec.ts
+++ b/client/src/app/admin/instance/dataset/components/attribute/general/tr-general.component.spec.ts
@@ -16,7 +16,10 @@ import { TrGeneralComponent } from './tr-general.component';
 @Component({
     selector: 'app-delete-btn'
 })
-class DeleteBtnComponent { }
+class DeleteBtnComponent {
+    type = ''
+    label = ''
+}
 describe('[admin][instance][dataset][components][attribute][general] TrDetailComponent', () => {
     let component: TrGeneralComponent;
     let fixture: ComponentFixture<TrGeneralComponent>;
diff --git a/client/src/app/admin/instance/dataset/components/cone-search-config/cone-search-config.component.spec.ts b/client/src/app/admin/instance/dataset/components/cone-search-config/cone-search-config.component.spec.ts
index 6f965156..31d0a71d 100644
--- a/client/src/app/admin/instance/dataset/components/cone-search-config/cone-search-config.component.spec.ts
+++ b/client/src/app/admin/instance/dataset/components/cone-search-config/cone-search-config.component.spec.ts
@@ -19,6 +19,8 @@ import { ConeSearchConfigComponent } from './cone-search-config.component';
 })
 class ConeSearchConfigFormComponent {
     form = new UntypedFormGroup({});
+    coneSearchConfig = null;
+    attributeList = []
 }
 describe('[admin][instance][dataset][components][cone-search-config] ConeSearchConfigComponent', () => {
     let component: ConeSearchConfigComponent;
diff --git a/client/src/app/admin/instance/dataset/components/criteria-family/criteria-family-list.component.spec.ts b/client/src/app/admin/instance/dataset/components/criteria-family/criteria-family-list.component.spec.ts
index 078565c1..a0c52bd4 100644
--- a/client/src/app/admin/instance/dataset/components/criteria-family/criteria-family-list.component.spec.ts
+++ b/client/src/app/admin/instance/dataset/components/criteria-family/criteria-family-list.component.spec.ts
@@ -14,9 +14,9 @@ import { CriteriaFamilyListComponent } from './criteria-family-list.component';
 
 @Component({
     selector: 'app-add-criteria-family',
+    templateUrl: 'add-criteria-family.component.html',
 })
-class AddCriteriaFamilyComponent {}
-
+class AddCriteriaFamilyComponent { }
 describe('[admin][instance][dataset][components][criteria-family] CriteriaFamilyListComponent', () => {
     let component: CriteriaFamilyListComponent;
     let fixture: ComponentFixture<CriteriaFamilyListComponent>;
@@ -24,6 +24,7 @@ describe('[admin][instance][dataset][components][criteria-family] CriteriaFamily
         TestBed.configureTestingModule({
             declarations: [
                 CriteriaFamilyListComponent,
+                AddCriteriaFamilyComponent
             ],
             imports: [
                 BrowserAnimationsModule,
diff --git a/client/src/app/admin/instance/dataset/components/dataset-family/dataset-family-card.component.spec.ts b/client/src/app/admin/instance/dataset/components/dataset-family/dataset-family-card.component.spec.ts
new file mode 100644
index 00000000..4c8fe482
--- /dev/null
+++ b/client/src/app/admin/instance/dataset/components/dataset-family/dataset-family-card.component.spec.ts
@@ -0,0 +1,58 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+import { Pipe, PipeTransform } from '@angular/core';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ReactiveFormsModule } from '@angular/forms';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { Dataset } from 'src/app/metamodel/models';
+import { DatasetFamilyCardComponent } from './dataset-family-card.component';
+
+// mock datasetListByFamily
+
+@Pipe({ name: 'datasetListByFamily' })
+class DatasetListByFamilyPipe implements PipeTransform {
+    transform(datasetList: Dataset[], idDatasetFamily: number): Dataset[] {
+        return datasetList.filter(dataset => dataset.id_dataset_family === idDatasetFamily);
+    }
+}
+
+describe('[admin][instance][dataset][components][dataset-family] DatasetFamilyCardComponent', () => {
+    let component: DatasetFamilyCardComponent;
+    let fixture: ComponentFixture<DatasetFamilyCardComponent>;
+
+    beforeEach(() => {
+        TestBed.configureTestingModule({
+            declarations: [
+                DatasetFamilyCardComponent,
+                DatasetListByFamilyPipe
+            ],
+            imports: [
+                BrowserAnimationsModule,
+                ReactiveFormsModule
+            ],
+        });
+        fixture = TestBed.createComponent(DatasetFamilyCardComponent);
+        component = fixture.componentInstance;
+        let dataset: Dataset;
+        component.datasetList = [{ ...dataset, id_dataset_family: 1, label: 'test' }, { ...dataset, id_dataset_family: 2, label: 'test' }]
+        component.datasetFamily = { display: 10, id: 2, label: 'test', opened: false };
+    });
+
+    it('should create the component', () => {
+        expect(component).toBeTruthy();
+    });
+    it('nbDatasetsByDatasetFamily() should return 1', () => {
+
+        let result = component.nbDatasetsByDatasetFamily();
+        expect(result).toEqual(1);
+
+    })
+});
+
+
diff --git a/client/src/app/admin/instance/dataset/components/dataset-family/dataset-family-form.component.spec.ts b/client/src/app/admin/instance/dataset/components/dataset-family/dataset-family-form.component.spec.ts
new file mode 100644
index 00000000..35a2e027
--- /dev/null
+++ b/client/src/app/admin/instance/dataset/components/dataset-family/dataset-family-form.component.spec.ts
@@ -0,0 +1,53 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ReactiveFormsModule } from '@angular/forms';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { DatasetFamilyFormComponent } from './dataset-family-form.component';
+
+describe('[admin][instance][dataset][components][dataset-family] DatasetFamilyFormComponent', () => {
+    let component: DatasetFamilyFormComponent;
+    let fixture: ComponentFixture<DatasetFamilyFormComponent>;
+
+    beforeEach(() => {
+        TestBed.configureTestingModule({
+            declarations: [
+                DatasetFamilyFormComponent,
+            ],
+            imports: [
+                BrowserAnimationsModule,
+                ReactiveFormsModule
+            ],
+        });
+        fixture = TestBed.createComponent(DatasetFamilyFormComponent);
+        component = fixture.componentInstance;
+        component.datasetFamily = { display: 10, id: 1, label: 'test', opened: false };
+        fixture.detectChanges();
+    });
+
+    it('should create the component', () => {
+        expect(component).toBeTruthy();
+    });
+
+    it('submit() should emit databaseFamily and form.value', () => {
+        let spy = jest.spyOn(component.onSubmit, 'emit');
+        component.submit();
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(spy).toHaveBeenCalledWith({ ...component.datasetFamily, ...component.form.value });
+    });
+    it('submit() should emitform.value only', () => {
+        let spy = jest.spyOn(component.onSubmit, 'emit');
+        component.datasetFamily = null;
+        component.submit();
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(spy).toHaveBeenCalledWith({ ...component.form.value });
+    });
+});
+
+
diff --git a/client/src/app/admin/instance/dataset/components/dataset-family/edit-dataset-family.component.spec.ts b/client/src/app/admin/instance/dataset/components/dataset-family/edit-dataset-family.component.spec.ts
new file mode 100644
index 00000000..d8734729
--- /dev/null
+++ b/client/src/app/admin/instance/dataset/components/dataset-family/edit-dataset-family.component.spec.ts
@@ -0,0 +1,57 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+import { TemplateRef } from '@angular/core';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ReactiveFormsModule } from '@angular/forms';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';
+import { EditDatasetFamilyComponent } from './edit-dataset-family.component';
+
+
+describe('[admin][instance][dataset][components][dataset-family] EditDatasetFamilyComponent', () => {
+    let component: EditDatasetFamilyComponent;
+    let fixture: ComponentFixture<EditDatasetFamilyComponent>;
+    const modalServiceStub = {
+        show: jest.fn(),
+    };
+
+    beforeEach(() => {
+        TestBed.configureTestingModule({
+            declarations: [
+                EditDatasetFamilyComponent,
+            ],
+            providers: [
+                BsModalRef,
+                { provide: BsModalService, useValue: modalServiceStub }
+            ],
+            imports: [
+                BrowserAnimationsModule,
+                ReactiveFormsModule
+            ],
+        });
+        fixture = TestBed.createComponent(EditDatasetFamilyComponent);
+        component = fixture.componentInstance;
+        fixture.detectChanges();
+    });
+
+    it('should create the component', () => {
+        expect(component).toBeTruthy();
+    });
+
+    it('should call modalRef.show(template)', () => {
+        let template: TemplateRef<any> = null;
+        let spy = jest.spyOn(modalServiceStub, 'show');
+        component.openModal(template);
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(spy).toHaveBeenCalledWith(template);
+    });
+
+});
+
diff --git a/client/src/app/admin/instance/dataset/components/dataset-family/index.spec.ts b/client/src/app/admin/instance/dataset/components/dataset-family/index.spec.ts
new file mode 100644
index 00000000..210d342c
--- /dev/null
+++ b/client/src/app/admin/instance/dataset/components/dataset-family/index.spec.ts
@@ -0,0 +1,19 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+import { datasetFamilyComponents } from './index';
+
+describe('[admin][instance][dataset][components][dataset-family] index', () => {
+    it('should test dataset index components', () => {
+        expect(datasetFamilyComponents.length).toEqual(3);
+    });
+});
+
+
+
diff --git a/client/src/app/admin/instance/dataset/components/dataset/dataset-card.component.spec.ts b/client/src/app/admin/instance/dataset/components/dataset/dataset-card.component.spec.ts
new file mode 100644
index 00000000..d17e43b9
--- /dev/null
+++ b/client/src/app/admin/instance/dataset/components/dataset/dataset-card.component.spec.ts
@@ -0,0 +1,40 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { Dataset, Instance } from 'src/app/metamodel/models';
+import { DatasetCardComponent } from './dataset-card.component';
+
+describe('[admin][instance][dataset][components][dataset] DatasetCardComponent', () => {
+    let component: DatasetCardComponent;
+    let fixture: ComponentFixture<DatasetCardComponent>;
+    beforeEach(() => {
+        TestBed.configureTestingModule({
+            declarations: [
+                DatasetCardComponent,
+            ],
+            imports: [
+                BrowserAnimationsModule
+            ],
+        });
+        fixture = TestBed.createComponent(DatasetCardComponent);
+        component = fixture.componentInstance;
+        let dataset: Dataset;
+        let instance: Instance;
+        component.dataset = { ...dataset, label: 'test' };
+        component.instance = { ...instance, name: 'test' }
+        fixture.detectChanges();
+    });
+
+    it('should create the component', () => {
+        expect(component).toBeTruthy();
+    });
+
+});
diff --git a/client/src/app/admin/instance/dataset/components/dataset/dataset-form.component.spec.ts b/client/src/app/admin/instance/dataset/components/dataset/dataset-form.component.spec.ts
new file mode 100644
index 00000000..590a3c26
--- /dev/null
+++ b/client/src/app/admin/instance/dataset/components/dataset/dataset-form.component.spec.ts
@@ -0,0 +1,93 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ReactiveFormsModule } from '@angular/forms';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { DatasetFormComponent } from './dataset-form.component';
+import { AccordionModule } from 'ngx-bootstrap/accordion';
+import { Dataset, Instance } from 'src/app/metamodel/models';
+import { SimpleChange } from '@angular/core';
+
+describe('[admin][instance][dataset][components][dataset] DatasetFormComponent', () => {
+    let component: DatasetFormComponent;
+    let fixture: ComponentFixture<DatasetFormComponent>;
+    beforeEach(() => {
+        TestBed.configureTestingModule({
+            declarations: [
+                DatasetFormComponent,
+            ],
+            imports: [
+                BrowserAnimationsModule,
+                ReactiveFormsModule,
+                AccordionModule
+            ],
+        });
+        fixture = TestBed.createComponent(DatasetFormComponent);
+        component = fixture.componentInstance;
+        let dataset: Dataset;
+        let instance: Instance;
+        component.instance = { ...instance, data_path: 'test' };
+        component.dataset = { ...dataset, label: 'test' };
+        component.idDatasetFamily = 1;
+        fixture.detectChanges();
+    });
+
+    it('should create the component', () => {
+        expect(component).toBeTruthy();
+    });
+    it('submit() should emit dataset and form.getRawValue()', () => {
+        let spy = jest.spyOn(component.onSubmit, 'emit');
+        component.submit();
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(spy).toHaveBeenCalledWith({ ...component.dataset, ...component.form.getRawValue() });
+    });
+
+    it('submit() should emit form.getRawValue() only', () => {
+        let spy = jest.spyOn(component.onSubmit, 'emit');
+        component.dataset = null;
+        component.submit();
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(spy).toHaveBeenCalledWith({ ...component.form.getRawValue() });
+    })
+    it('onChangeDatabase() should call disable on form table_ref raw', () => {
+        let spy = jest.spyOn(component.form.controls.table_ref, 'disable');
+        component.onChangeDatabase();
+        expect(spy).toHaveBeenCalledTimes(1);
+    })
+    it('onChangeDatabase() should emit idDatabase', () => {
+        let spy = jest.spyOn(component.changeDatabase, 'emit');
+        component.form.controls.id_database.setValue(1);
+        component.onChangeDatabase();
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(spy).toHaveBeenCalledWith(1);
+    })
+    it('onChangeDataPath(path: string) should emit the instance data_path property', () => {
+        let spy = jest.spyOn(component.loadRootDirectory, 'emit');
+        let path: string = 'test';
+        component.onChangeDataPath(path);
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(spy).toHaveBeenCalledWith(`${component.instance.data_path}${path}`);
+    })
+    it('checkDatatableDisablOpened() should call enable on  form datatable_selectable_rows', () => {
+        let spy = jest.spyOn(component.form.controls.datatable_selectable_rows, 'enable');
+        component.checkDatatableDisablOpened();
+        expect(spy).toHaveBeenCalledTimes(1);
+
+    });
+    it('checkDatatableDisablOpened() should call desable on  form datatable_selectable_rows and set it value to false', () => {
+        let spy = jest.spyOn(component.form.controls.datatable_selectable_rows, 'disable');
+        component.form.controls.datatable_enabled.setValue(false);
+        component.checkDatatableDisablOpened();
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(component.form.controls.datatable_selectable_rows.value).toEqual(false);
+
+    })
+
+});
diff --git a/client/src/app/admin/instance/dataset/components/dataset/index.spec.ts b/client/src/app/admin/instance/dataset/components/dataset/index.spec.ts
new file mode 100644
index 00000000..25adb236
--- /dev/null
+++ b/client/src/app/admin/instance/dataset/components/dataset/index.spec.ts
@@ -0,0 +1,19 @@
+/**
+ * This file is part of Anis Client.
+ *
+ * @copyright Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+import { datasetComponents } from './index';
+
+describe('[admin][instance][dataset][components][dataset] index', () => {
+    it('should test dataset index components', () => {
+        expect(datasetComponents.length).toEqual(2);
+    });
+});
+
+
+
-- 
GitLab