diff --git a/Makefile b/Makefile index 993b6e2b78b97b8deea0c5bdc64e393bdf9612f5..d4fb97bc85d38a9d3bc20038fc43ad40fe35e291 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 91cfaffb1b39095d8abd7d6e77be9a7c49dd34a4..375925abb6d2049d7e6b841e6e080c5e1ad7f4e8 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 dbf19c1e8536716505bf99a2730c83224207362f..d62a63ba1daf4cc266f8cdd4872e1cccf8f6664f 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 6f965156e98e2812b8def777ba3d98943eced7a0..31d0a71d53637a8ce77650cc15ebdcee451ceadf 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 078565c133085c6fd46fbc33eb25aa0498402855..a0c52bd4ee5d5678a110bae22433d4820f1c6408 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 0000000000000000000000000000000000000000..4c8fe4826db81c8962791852d895e68102792091 --- /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 0000000000000000000000000000000000000000..35a2e02725d7f5014c7a2c5c9b444b1efbea2593 --- /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 0000000000000000000000000000000000000000..d87347295087320f03d95a3068dad4fe94215775 --- /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 0000000000000000000000000000000000000000..210d342cc55ba991ff4f34841d38f3d2664ce67c --- /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 0000000000000000000000000000000000000000..d17e43b9f5a1430a84d3c074c473adad8482285a --- /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 0000000000000000000000000000000000000000..590a3c2643ffe29c16c1621bf8903e8089987c25 --- /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 0000000000000000000000000000000000000000..25adb236bbf598beca776b8bedf28002055855bf --- /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); + }); +}); + + +