From 247df324ff8bcb803fc46777f55bd7cd5f54fc88 Mon Sep 17 00:00:00 2001
From: dangapay <divin.angapay@lam.fr>
Date: Thu, 20 Oct 2022 17:14:30 +0200
Subject: [PATCH] add test for admin/instance/dataset/components/ detail-page

---
 .../cone-search-config.component.spec.ts      |  2 +-
 .../dataset-family-card.component.spec.ts     | 15 +++-
 .../dataset/dataset-card.component.spec.ts    | 13 +++-
 .../detail-config-form.component.spec.ts      | 55 +++++++++++++++
 .../detail-config.component.spec.ts           | 69 +++++++++++++++++++
 .../components/detail-page/index.spec.ts      | 19 +++++
 6 files changed, 168 insertions(+), 5 deletions(-)
 create mode 100644 client/src/app/admin/instance/dataset/components/detail-page/detail-config-form.component.spec.ts
 create mode 100644 client/src/app/admin/instance/dataset/components/detail-page/detail-config.component.spec.ts
 create mode 100644 client/src/app/admin/instance/dataset/components/detail-page/index.spec.ts

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 31d0a71d..e639e1ed 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,8 +19,8 @@ import { ConeSearchConfigComponent } from './cone-search-config.component';
 })
 class ConeSearchConfigFormComponent {
     form = new UntypedFormGroup({});
-    coneSearchConfig = null;
     attributeList = []
+    coneSearchConfig: ConeSearchConfig;
 }
 describe('[admin][instance][dataset][components][cone-search-config] ConeSearchConfigComponent', () => {
     let component: ConeSearchConfigComponent;
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
index 4c8fe482..b6ceccc6 100644
--- 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
@@ -6,7 +6,7 @@
  * 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 { Component, Pipe, PipeTransform } from '@angular/core';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ReactiveFormsModule } from '@angular/forms';
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
@@ -22,6 +22,15 @@ class DatasetListByFamilyPipe implements PipeTransform {
     }
 }
 
+@Component({
+    selector: 'app-edit-dataset-family',
+})
+export class EditDatasetFamilyComponent { }
+
+@Component({
+    selector: 'app-delete-btn',
+})
+export class DeleteBtnComponent { }
 describe('[admin][instance][dataset][components][dataset-family] DatasetFamilyCardComponent', () => {
     let component: DatasetFamilyCardComponent;
     let fixture: ComponentFixture<DatasetFamilyCardComponent>;
@@ -30,7 +39,9 @@ describe('[admin][instance][dataset][components][dataset-family] DatasetFamilyCa
         TestBed.configureTestingModule({
             declarations: [
                 DatasetFamilyCardComponent,
-                DatasetListByFamilyPipe
+                DatasetListByFamilyPipe,
+                EditDatasetFamilyComponent,
+                DeleteBtnComponent
             ],
             imports: [
                 BrowserAnimationsModule,
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
index d17e43b9..ed303d90 100644
--- 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
@@ -7,11 +7,16 @@
  * file that was distributed with this source code.
  */
 
+import { Component } from '@angular/core';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { RouterTestingModule } from '@angular/router/testing';
 import { Dataset, Instance } from 'src/app/metamodel/models';
 import { DatasetCardComponent } from './dataset-card.component';
-
+@Component({
+    selector: 'app-delete-btn',
+})
+export class DeleteBtnComponent { }
 describe('[admin][instance][dataset][components][dataset] DatasetCardComponent', () => {
     let component: DatasetCardComponent;
     let fixture: ComponentFixture<DatasetCardComponent>;
@@ -19,9 +24,13 @@ describe('[admin][instance][dataset][components][dataset] DatasetCardComponent',
         TestBed.configureTestingModule({
             declarations: [
                 DatasetCardComponent,
+                DeleteBtnComponent
             ],
             imports: [
-                BrowserAnimationsModule
+                BrowserAnimationsModule,
+                RouterTestingModule.withRoutes([
+                    { path: 'test', component: DeleteBtnComponent }
+                   ])
             ],
         });
         fixture = TestBed.createComponent(DatasetCardComponent);
diff --git a/client/src/app/admin/instance/dataset/components/detail-page/detail-config-form.component.spec.ts b/client/src/app/admin/instance/dataset/components/detail-page/detail-config-form.component.spec.ts
new file mode 100644
index 00000000..ccda8667
--- /dev/null
+++ b/client/src/app/admin/instance/dataset/components/detail-page/detail-config-form.component.spec.ts
@@ -0,0 +1,55 @@
+/**
+ * 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 { Component } from '@angular/core';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { DetailConfigFormComponent } from './detail-config-form.component';
+@Component({
+    selector: 'app-webpage-form-content'
+})
+class WebpageFormContentComponent {
+    form: UntypedFormGroup;
+}
+describe('[admin][instance][dataset][components][detail-page] DetailConfigFormComponent', () => {
+    let component: DetailConfigFormComponent;
+    let fixture: ComponentFixture<DetailConfigFormComponent>;
+
+    beforeEach(() => {
+        TestBed.configureTestingModule({
+            declarations: [
+                DetailConfigFormComponent,
+                WebpageFormContentComponent
+            ],
+            imports: [
+                BrowserAnimationsModule,
+                ReactiveFormsModule
+            ],
+        });
+        fixture = TestBed.createComponent(DetailConfigFormComponent);
+        component = fixture.componentInstance;
+        component.detailConfig = { content: '', id: 1, style_sheet: 'test' };
+        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');
+        let spyOnForm = jest.spyOn(component.form, 'markAsPristine');
+        component.submit();
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(spyOnForm).toHaveBeenCalledTimes(1);
+        expect(spy).toHaveBeenCalledWith({ ...component.form.getRawValue() });
+    });
+});
+
+
diff --git a/client/src/app/admin/instance/dataset/components/detail-page/detail-config.component.spec.ts b/client/src/app/admin/instance/dataset/components/detail-page/detail-config.component.spec.ts
new file mode 100644
index 00000000..7c83be87
--- /dev/null
+++ b/client/src/app/admin/instance/dataset/components/detail-page/detail-config.component.spec.ts
@@ -0,0 +1,69 @@
+/**
+ * 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 { Component } from '@angular/core';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations'
+import { DetailConfig } from 'src/app/metamodel/models';
+import { DetailConfigComponent } from './detail-config.component';
+
+@Component({
+    selector: 'app-detail-config-form',
+    templateUrl: 'detail-config-form.component.html',
+})
+class DetailConfigFormComponent  {
+    form = new UntypedFormGroup({
+        content: new UntypedFormControl(),
+        style_sheet: new UntypedFormControl(null)
+    });
+}
+describe('[admin][instance][dataset][components][detail-page] DetailConfigComponent', () => {
+    let component: DetailConfigComponent;
+    let fixture: ComponentFixture<DetailConfigComponent>;
+
+    beforeEach(() => {
+        TestBed.configureTestingModule({
+            declarations: [
+                DetailConfigComponent,
+                DetailConfigFormComponent
+            ],
+            imports: [
+                BrowserAnimationsModule,
+                ReactiveFormsModule
+            ],
+        });
+        fixture = TestBed.createComponent(DetailConfigComponent);
+        component = fixture.componentInstance;
+        component.detailConfig = { content: '', id: 1, style_sheet: 'test' };
+        fixture.detectChanges();
+    });
+
+    it('should create the component', () => {
+        expect(component).toBeTruthy();
+    });
+
+    it('save(detailConfig) should emit component.detailConfig and detaiConfig', () => {
+        let spy = jest.spyOn(component.editDetailConfig, 'emit');
+        let detailConfig: DetailConfig = { content: '', id: 1, style_sheet: 'test2' };
+        component.save(detailConfig);
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(spy).toHaveBeenCalledWith({ ...component.detailConfig, ...detailConfig });
+    });
+    it('save(detailConfig) should emit  detaiConfig only', () => {
+        let spy = jest.spyOn(component.addDetailConfig, 'emit');
+        let detailConfig: DetailConfig = { content: '', id: 1, style_sheet: 'test2' };
+        component.detailConfig = null;
+        component.save(detailConfig);
+        expect(spy).toHaveBeenCalledTimes(1);
+        expect(spy).toHaveBeenCalledWith({ ...detailConfig });
+    });
+    
+});
+
+
diff --git a/client/src/app/admin/instance/dataset/components/detail-page/index.spec.ts b/client/src/app/admin/instance/dataset/components/detail-page/index.spec.ts
new file mode 100644
index 00000000..72fd080b
--- /dev/null
+++ b/client/src/app/admin/instance/dataset/components/detail-page/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 { detailConfigComponents } from './index';
+
+describe('[admin][instance][dataset][components]detail-page] index', () => {
+    it('should test detail-page index components', () => {
+        expect(detailConfigComponents.length).toEqual(2);
+    });
+});
+
+
+
-- 
GitLab