From aaa5a64223f214ae954560002a2cb8a260c4516d Mon Sep 17 00:00:00 2001
From: fsdavid <daviti1@mail.com>
Date: Tue, 2 Feb 2021 13:01:14 +0100
Subject: [PATCH] Add tests to prevent regression

---
 .../connectivityBrowser.component.spec.ts     | 91 +++++++++++++++++++
 .../connectivityBrowser.component.ts          | 11 ++-
 2 files changed, 97 insertions(+), 5 deletions(-)
 create mode 100644 src/ui/connectivityBrowser/connectivityBrowser.component.spec.ts

diff --git a/src/ui/connectivityBrowser/connectivityBrowser.component.spec.ts b/src/ui/connectivityBrowser/connectivityBrowser.component.spec.ts
new file mode 100644
index 000000000..0886c26fe
--- /dev/null
+++ b/src/ui/connectivityBrowser/connectivityBrowser.component.spec.ts
@@ -0,0 +1,91 @@
+import {ConnectivityBrowserComponent} from "src/ui/connectivityBrowser/connectivityBrowser.component";
+import {async, ComponentFixture, TestBed} from "@angular/core/testing";
+import {StoreModule} from "@ngrx/store";
+import {
+    ngViewerState,
+    pluginState,
+    uiState,
+    userConfigState,
+    viewerConfigState,
+    viewerState
+} from "src/services/stateStore.service";
+import {viewerStateHelperReducer, viewerStateMetaReducers} from "src/services/state/viewerState.store.helper";
+import {datasetPreviewMetaReducer} from "src/glue";
+import {HttpClientModule} from "@angular/common/http";
+import {CUSTOM_ELEMENTS_SCHEMA} from "@angular/core";
+import {DatabrowserModule} from "src/ui/databrowserModule";
+
+fdescribe('ConnectivityComponent', () => {
+
+    let component: ConnectivityBrowserComponent;
+    let fixture: ComponentFixture<ConnectivityBrowserComponent>;
+
+    let datasetList = [
+        {
+            id: 'id1',
+            name: 'n1',
+            description: 'd1',
+            kgId: 'kgId1',
+            kgschema: 'kgschema1'
+        }, {
+            id: 'id2',
+            name: 'n2',
+            description: 'd2',
+            kgId: 'kgId2',
+            kgschema: 'kgschema2'
+        }
+    ]
+
+    beforeEach(async (() => {
+        TestBed.configureTestingModule({
+            imports: [StoreModule.forRoot({
+                pluginState,
+                viewerConfigState,
+                ngViewerState,
+                viewerState,
+                viewerStateHelper: viewerStateHelperReducer,
+                uiState,
+                userConfigState,
+            }, {
+                metaReducers: [
+                    // debug,
+                    ...viewerStateMetaReducers,
+                    datasetPreviewMetaReducer,
+                ]
+            }),
+                HttpClientModule,
+                DatabrowserModule
+            ],
+            declarations: [ConnectivityBrowserComponent],
+            schemas: [
+                CUSTOM_ELEMENTS_SCHEMA,
+            ],
+        }).compileComponents()
+    }));
+
+    it('> component can be created', async () => {
+        fixture = TestBed.createComponent(ConnectivityBrowserComponent)
+        component = fixture.componentInstance
+        expect(component).toBeTruthy()
+    })
+
+    it('> change dataset changes description, kgId and kgschema', () => {
+        fixture = TestBed.createComponent(ConnectivityBrowserComponent)
+        component = fixture.componentInstance
+
+        component.datasetList = datasetList
+
+        component.changeDataset({value: 'n1'})
+
+        expect(component.selectedDatasetDescription).toEqual('d1')
+        expect(component.selectedDatasetKgId).toEqual('kgId1')
+        expect(component.selectedDatasetKgSchema).toEqual('kgschema1')
+
+        component.changeDataset({value: 'n2'})
+
+        expect(component.selectedDatasetDescription).toEqual('d2')
+        expect(component.selectedDatasetKgId).toEqual('kgId2')
+        expect(component.selectedDatasetKgSchema).toEqual('kgschema2')
+    })
+
+});
\ No newline at end of file
diff --git a/src/ui/connectivityBrowser/connectivityBrowser.component.ts b/src/ui/connectivityBrowser/connectivityBrowser.component.ts
index 12d4fd22e..5e1996b84 100644
--- a/src/ui/connectivityBrowser/connectivityBrowser.component.ts
+++ b/src/ui/connectivityBrowser/connectivityBrowser.component.ts
@@ -212,7 +212,7 @@ export class ConnectivityBrowserComponent implements OnInit, AfterViewInit, OnDe
           this.setColorMap$.pipe(
             distinctUntilChanged()
           ),
-          fromEvent(this.connectivityComponentElement.nativeElement, 'connectivityDataReceived').pipe(
+          fromEvent(this.connectivityComponentElement?.nativeElement, 'connectivityDataReceived').pipe(
             map((e: CustomEvent) => e.detail)
           )
         ).subscribe(([flag, connectedAreas]) => {
@@ -300,9 +300,10 @@ export class ConnectivityBrowserComponent implements OnInit, AfterViewInit, OnDe
     changeDataset(event = null) {
       if (event) {
         this.selectedDataset = event.value
-        this.selectedDatasetDescription = this.datasetList.find(d => d.name === this.selectedDataset).description
-        this.selectedDatasetKgId = this.datasetList.find(d => d.name === this.selectedDataset).kgId || null
-        this.selectedDatasetKgSchema = this.datasetList.find(d => d.name === this.selectedDataset).kgschema || null
+        const foundDataset = this.datasetList.find(d => d.name === this.selectedDataset)
+        this.selectedDatasetDescription = foundDataset?.description
+        this.selectedDatasetKgId = foundDataset?.kgId || null
+        this.selectedDatasetKgSchema = foundDataset?.kgschema || null
       }
       if (this.datasetList.length && this.selectedDataset) {
         const selectedDatasetId = this.datasetList.find(d => d.name === this.selectedDataset).id
@@ -405,7 +406,7 @@ export class ConnectivityBrowserComponent implements OnInit, AfterViewInit, OnDe
     }
 
     public exportFullConnectivity() {
-      this.fullConnectivityGridElement.nativeElement['downloadCSV']()
+      this.fullConnectivityGridElement?.nativeElement['downloadCSV']()
     }
 
 }
-- 
GitLab