From 4d8d1019fc6256361c1f7a44ff0a9d957bc0d8ce Mon Sep 17 00:00:00 2001
From: Tifenn Guillas <tifenn.guillas@gmail.com>
Date: Tue, 3 Aug 2021 11:15:52 +0200
Subject: [PATCH] WIP: Tests en documentation components

---
 .../dataset-card-doc.component.spec.ts.snap   |  70 ++++++++++++
 .../dataset-card-doc.component.spec.ts        | 106 ++++++++++++++++++
 .../components/dataset-card-doc.component.ts  |   7 +-
 .../components/output-list.component.spec.ts  |   2 +-
 4 files changed, 183 insertions(+), 2 deletions(-)
 create mode 100644 client/src/app/instance/documentation/components/__snapshots__/dataset-card-doc.component.spec.ts.snap
 create mode 100644 client/src/app/instance/documentation/components/dataset-card-doc.component.spec.ts

diff --git a/client/src/app/instance/documentation/components/__snapshots__/dataset-card-doc.component.spec.ts.snap b/client/src/app/instance/documentation/components/__snapshots__/dataset-card-doc.component.spec.ts.snap
new file mode 100644
index 00000000..e60a4c81
--- /dev/null
+++ b/client/src/app/instance/documentation/components/__snapshots__/dataset-card-doc.component.spec.ts.snap
@@ -0,0 +1,70 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`DatasetCardDocComponent should information in HTML file 1`] = `
+<app-dataset-card-doc
+  dataset={[Function Object]}
+  instanceSelected={[Function String]}
+  router={[Function Router]}
+  survey={[Function Object]}
+>
+  <div
+    class="card border-0"
+  >
+    <div
+      class="card-body py-2"
+    >
+      <div
+        class="row"
+      >
+        <div
+          class="col"
+        >
+          <div
+            class="row"
+          >
+            <p
+              class="lead m-0 d-inline"
+            >
+               my dataset 
+            </p>
+          </div>
+          <div
+            class="row"
+          >
+            <p
+              class="my-3"
+            >
+              This is my dataset
+            </p>
+          </div>
+          <div
+            class="row"
+          >
+            <button
+              class="btn btn-link p-0"
+              placement="bottom"
+              triggers="mouseenter:mouseleave"
+            >
+              <small>
+                 More about my Survey survey 
+                <span
+                  class="fas fa-question-circle"
+                />
+              </small>
+            </button>
+          </div>
+        </div>
+        <div
+          class="col-auto"
+        >
+          <button
+            class="btn btn-outline-secondary"
+          >
+             Select 
+          </button>
+        </div>
+      </div>
+    </div>
+  </div>
+</app-dataset-card-doc>
+`;
diff --git a/client/src/app/instance/documentation/components/dataset-card-doc.component.spec.ts b/client/src/app/instance/documentation/components/dataset-card-doc.component.spec.ts
new file mode 100644
index 00000000..7911b704
--- /dev/null
+++ b/client/src/app/instance/documentation/components/dataset-card-doc.component.spec.ts
@@ -0,0 +1,106 @@
+import { TestBed, waitForAsync, ComponentFixture  } from '@angular/core/testing';
+import { RouterTestingModule } from '@angular/router/testing';
+
+import { PopoverModule } from 'ngx-bootstrap/popover';
+
+import { DatasetCardDocComponent } from './dataset-card-doc.component';
+import { Dataset, Survey } from '../../../metamodel/models';
+
+const SURVEY: Survey = {
+    name: 'mySurvey',
+    label: 'my Survey',
+    description: 'This is my survey',
+    link: 'http://my-survey.com',
+    manager: 'me',
+    id_database: 1,
+    nb_datasets: 2
+};
+const DATASET: Dataset = {
+    name: 'myDataset',
+    table_ref: 'table',
+    label: 'my dataset',
+    description: 'This is my dataset',
+    display: 1,
+    data_path: 'path',
+    survey_name: 'mySurvey',
+    id_dataset_family: 1,
+    public: true,
+    config: {
+        images: ['image1'],
+        cone_search: {
+            cone_search_enabled: true,
+            cone_search_opened: true,
+            cone_search_column_ra: 1,
+            cone_search_column_dec: 2,
+            cone_search_plot_enabled: true,
+            cone_search_sdss_enabled: true,
+            cone_search_sdss_display: 1,
+            cone_search_background: [{ id: 1, enabled: true, display: 1 }]
+        },
+        download: {
+            download_enabled: true,
+            download_opened: true,
+            download_csv: true,
+            download_ascii: true,
+            download_vo: true,
+            download_archive: true
+        },
+        summary: {
+            summary_enabled: true,
+            summary_opened: true
+        },
+        server_link: {
+            server_link_enabled: true,
+            server_link_opened: true
+        },
+        samp: {
+            samp_enabled: true,
+            samp_opened: true
+        },
+        datatable: {
+            datatable_enabled: true,
+            datatable_opened: true,
+            datatable_selectable_rows: true
+        }
+    }
+};
+
+describe('DatasetCardDocComponent', () => {
+    let component: DatasetCardDocComponent;
+    let fixture: ComponentFixture<DatasetCardDocComponent>;
+    let router: RouterTestingModule;
+
+    beforeEach(waitForAsync(() => {
+        TestBed.configureTestingModule({
+            imports: [
+                RouterTestingModule,
+                PopoverModule.forRoot()
+            ],
+            declarations: [DatasetCardDocComponent],
+
+        }).compileComponents();
+        fixture = TestBed.createComponent(DatasetCardDocComponent);
+        component = fixture.componentInstance;
+        router = TestBed.inject(RouterTestingModule);
+
+        component.survey = SURVEY;
+        component.dataset = DATASET;
+        component.instanceSelected = 'myInstance';
+    }));
+
+    it('should create the component', () => {
+        expect(component).toBeDefined();
+    });
+
+    // it('#selectDataset() should navigate to the right page', () => {
+    //     const spy = jest.spyOn(router, 'navigate');
+    //     component.selectDataset('myDataset');
+    //     expect(spy).toHaveBeenCalledTimes(1);
+    //     expect(spy).toHaveBeenCalledWith(['/instance/myInstance/documentation/myDataset']);
+    // });
+
+    it('should display information in HTML file', () => {
+        fixture.detectChanges();
+        expect(fixture).toMatchSnapshot();
+    });
+});
diff --git a/client/src/app/instance/documentation/components/dataset-card-doc.component.ts b/client/src/app/instance/documentation/components/dataset-card-doc.component.ts
index adcfcf40..58b4592f 100644
--- a/client/src/app/instance/documentation/components/dataset-card-doc.component.ts
+++ b/client/src/app/instance/documentation/components/dataset-card-doc.component.ts
@@ -28,7 +28,12 @@ export class DatasetCardDocComponent {
 
     constructor(private router: Router) { }
 
-    selectDataset(datasetName: string) {
+    /**
+     * Navigates to the documentation page for the given dataset.
+     *
+     * @param  {string} datasetName - The dataset name.
+     */
+    selectDataset(datasetName: string): void {
         this.router.routeReuseStrategy.shouldReuseRoute = () => false;
         this.router.navigate([`/instance/${this.instanceSelected}/documentation/${datasetName}`]);
     }
diff --git a/client/src/app/instance/documentation/components/output-list.component.spec.ts b/client/src/app/instance/documentation/components/output-list.component.spec.ts
index c3c72d48..967a841d 100644
--- a/client/src/app/instance/documentation/components/output-list.component.spec.ts
+++ b/client/src/app/instance/documentation/components/output-list.component.spec.ts
@@ -52,7 +52,7 @@ describe('OutputListComponent', () => {
         expect(component).toBeDefined();
     });
 
-    it('should information in HTML file', () => {
+    it('should display information in HTML file', () => {
         component.datasetSelected = 'myTestDataset';
         component.attributeList = ATTRIBUTE_LIST;
         fixture.detectChanges();
-- 
GitLab