From 47d0224358d746f8a290a9c132580a4d46041495 Mon Sep 17 00:00:00 2001 From: elinuxhenrik Date: Wed, 10 Feb 2021 16:42:43 +0100 Subject: [PATCH] Make ei-coordinator tests work Change-Id: I5e88af5ae1b7df62cd68b5c0353154b1dbe06478 Signed-off-by: elinuxhenrik Issue-ID: NONRTRIC-389 --- .../ei-coordinator.component.spec.ts | 14 +++++-------- .../app/ei-coordinator/ei-coordinator.component.ts | 11 +++++----- .../app/ei-coordinator/ei-job.datasource.spec.ts | 9 ++++---- .../src/app/ei-coordinator/ei-job.datasource.ts | 21 +++++++------------ .../ei-coordinator/ei-producer.datasource.spec.ts | 7 +++---- .../app/ei-coordinator/ei-producer.datasource.ts | 24 +++++++--------------- 6 files changed, 31 insertions(+), 55 deletions(-) diff --git a/webapp-frontend/src/app/ei-coordinator/ei-coordinator.component.spec.ts b/webapp-frontend/src/app/ei-coordinator/ei-coordinator.component.spec.ts index 3e0fbf5..f1518ce 100644 --- a/webapp-frontend/src/app/ei-coordinator/ei-coordinator.component.spec.ts +++ b/webapp-frontend/src/app/ei-coordinator/ei-coordinator.component.spec.ts @@ -23,8 +23,6 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { FormBuilder, ReactiveFormsModule } from '@angular/forms'; import { MatIconModule, MatTableModule } from '@angular/material'; -import { of } from 'rxjs'; - import { EICoordinatorComponent } from './ei-coordinator.component'; import { EIJobDataSource } from './ei-job.datasource'; import { EIProducerDataSource } from './ei-producer.datasource'; @@ -35,14 +33,12 @@ describe('EICoordinatorComponent', () => { let fixture: ComponentFixture; beforeEach(async(() => { - const jobDataSourceSpy = jasmine.createSpyObj('EIJobDataSource', [ 'connect', 'getJobs', 'disconnect' ]); - const producerDataSourceSpy = jasmine.createSpyObj('EIProducerDataSource', [ 'connect', 'loadTable', 'loadProducers', 'disconnect' ]); + const jobDataSourceSpy = jasmine.createSpyObj('EIJobDataSource', [ 'loadJobs', 'eiJobs' ]); + const producerDataSourceSpy = jasmine.createSpyObj('EIProducerDataSource', [ 'loadProducers', 'eiProducers' ]); + + jobDataSourceSpy.eiJobs.and.returnValue([]); - jobDataSourceSpy.connect.and.returnValue(of([])); - jobDataSourceSpy.disconnect(); - producerDataSourceSpy.connect.and.returnValue(of([])); - producerDataSourceSpy.loadProducers.and.returnValue(of([])); - producerDataSourceSpy.disconnect(); + producerDataSourceSpy.eiProducers.and.returnValue([]); TestBed.configureTestingModule({ imports: [ diff --git a/webapp-frontend/src/app/ei-coordinator/ei-coordinator.component.ts b/webapp-frontend/src/app/ei-coordinator/ei-coordinator.component.ts index 711b86f..fbd0be6 100644 --- a/webapp-frontend/src/app/ei-coordinator/ei-coordinator.component.ts +++ b/webapp-frontend/src/app/ei-coordinator/ei-coordinator.component.ts @@ -51,7 +51,6 @@ class EIJobInfo { }) export class EICoordinatorComponent implements OnInit { - producers$: Observable; @ViewChild(MatSort, { static: true }) sort: MatSort; @ViewChild('producersTable', { static: true }) table: MatTable; @@ -86,10 +85,10 @@ export class EICoordinatorComponent implements OnInit { } ngOnInit() { - this.eiJobsDataSource.getJobs(); - this.producers$ = this.eiProducersDataSource.loadProducers(); - this.jobsDataSource = new MatTableDataSource(this.eiJobsDataSource.eiJobsSubject.value); - this.producersDataSource = new MatTableDataSource(this.eiProducersDataSource.producerSubject.value) + this.eiJobsDataSource.loadJobs(); + this.eiProducersDataSource.loadProducers(); + this.jobsDataSource = new MatTableDataSource(this.eiJobsDataSource.eiJobs()); + this.producersDataSource = new MatTableDataSource(this.eiProducersDataSource.eiProducers()); this.jobsFormControl.valueChanges.subscribe(value => { const filter = {...value, id: value.id.trim().toLowerCase()} as string; @@ -182,7 +181,7 @@ export class EICoordinatorComponent implements OnInit { } refreshTables() { - this.eiJobsDataSource.getJobs(); + this.eiJobsDataSource.loadJobs(); this.eiProducersDataSource.loadProducers(); } } diff --git a/webapp-frontend/src/app/ei-coordinator/ei-job.datasource.spec.ts b/webapp-frontend/src/app/ei-coordinator/ei-job.datasource.spec.ts index e52ae6f..a891d5f 100644 --- a/webapp-frontend/src/app/ei-coordinator/ei-job.datasource.spec.ts +++ b/webapp-frontend/src/app/ei-coordinator/ei-job.datasource.spec.ts @@ -18,7 +18,7 @@ * ========================LICENSE_END=================================== */ import { TestBed } from '@angular/core/testing'; -import { BehaviorSubject, of } from 'rxjs'; +import { of } from 'rxjs'; import { EIJobDataSource } from './ei-job.datasource'; import { EIService } from '../services/ei/ei.service'; @@ -50,10 +50,9 @@ describe('EIJobDataSource', () => { }); it('#getJobs', () => { - dataSource.getJobs(); - const jobsSubject: BehaviorSubject = dataSource.eiJobsSubject; - const value = jobsSubject.getValue(); - expect(value).toEqual([ job, job ]); + dataSource.loadJobs(); + const actualJobs: EIJob[] = dataSource.eiJobs(); + expect(actualJobs).toEqual([ job, job ]); expect(dataSource.rowCount).toEqual(2); }); }); diff --git a/webapp-frontend/src/app/ei-coordinator/ei-job.datasource.ts b/webapp-frontend/src/app/ei-coordinator/ei-job.datasource.ts index 64c948c..5fc64fc 100644 --- a/webapp-frontend/src/app/ei-coordinator/ei-job.datasource.ts +++ b/webapp-frontend/src/app/ei-coordinator/ei-job.datasource.ts @@ -19,7 +19,6 @@ */ import { Injectable } from '@angular/core'; -import { MatTableDataSource } from '@angular/material'; import { BehaviorSubject } from 'rxjs/BehaviorSubject'; @@ -30,9 +29,13 @@ import { EIService } from '../services/ei/ei.service'; providedIn: 'root' }) -export class EIJobDataSource extends MatTableDataSource { +export class EIJobDataSource { - eiJobsSubject = new BehaviorSubject([]); + private eiJobsSubject = new BehaviorSubject([]); + + public eiJobs(): EIJob[] { + return this.eiJobsSubject.value; + } private loadingSubject = new BehaviorSubject(false); @@ -42,10 +45,9 @@ export class EIJobDataSource extends MatTableDataSource { constructor( private eiSvc: EIService) { - super(); } - getJobs() { + loadJobs() { this.loadingSubject.next(true); this.eiSvc.getProducerIds() .subscribe((producerIds: string[]) => { @@ -68,13 +70,4 @@ export class EIJobDataSource extends MatTableDataSource { const updatedValue = [...currentValue, ...jobs]; this.eiJobsSubject.next(updatedValue); } - - connect(): BehaviorSubject { - return this.eiJobsSubject; - } - - disconnect(): void { - this.eiJobsSubject.complete(); - this.loadingSubject.complete(); - } } diff --git a/webapp-frontend/src/app/ei-coordinator/ei-producer.datasource.spec.ts b/webapp-frontend/src/app/ei-coordinator/ei-producer.datasource.spec.ts index d5ab614..b3b2f4f 100644 --- a/webapp-frontend/src/app/ei-coordinator/ei-producer.datasource.spec.ts +++ b/webapp-frontend/src/app/ei-coordinator/ei-producer.datasource.spec.ts @@ -18,7 +18,7 @@ * ========================LICENSE_END=================================== */ import { TestBed } from '@angular/core/testing'; -import { BehaviorSubject, of } from 'rxjs'; +import { of } from 'rxjs'; import { EIService } from '../services/ei/ei.service'; import { ToastrModule } from 'ngx-toastr'; @@ -74,9 +74,8 @@ describe('EIProducerDataSource', () => { it('#loadProducers', () => { dataSource.loadProducers(); - const jobsSubject: BehaviorSubject = dataSource.producerSubject; - const value = jobsSubject.getValue(); - expect(value).toEqual([ expectedProducer1, expectedProducer2 ]); + const actualProducers: EIProducer[] = dataSource.eiProducers(); + expect(actualProducers).toEqual([ expectedProducer1, expectedProducer2 ]); expect(dataSource.rowCount).toEqual(2); }); }); diff --git a/webapp-frontend/src/app/ei-coordinator/ei-producer.datasource.ts b/webapp-frontend/src/app/ei-coordinator/ei-producer.datasource.ts index f04d9c5..255c555 100644 --- a/webapp-frontend/src/app/ei-coordinator/ei-producer.datasource.ts +++ b/webapp-frontend/src/app/ei-coordinator/ei-producer.datasource.ts @@ -19,11 +19,8 @@ */ import { Injectable } from '@angular/core'; -import { MatTableDataSource } from '@angular/material'; -import { Observable } from 'rxjs/Observable'; import { BehaviorSubject } from 'rxjs/BehaviorSubject'; -import { of } from 'rxjs/observable/of'; import { EIProducer } from '../interfaces/ei.types'; import { EIService } from '../services/ei/ei.service'; @@ -32,9 +29,13 @@ import { EIService } from '../services/ei/ei.service'; providedIn: 'root' }) -export class EIProducerDataSource extends MatTableDataSource { +export class EIProducerDataSource { - producerSubject = new BehaviorSubject([]); + private producerSubject = new BehaviorSubject([]); + + public eiProducers(): EIProducer[] { + return this.producerSubject.value; + } private loadingSubject = new BehaviorSubject(false); @@ -44,10 +45,9 @@ export class EIProducerDataSource extends MatTableDataSource { constructor( private eiSvc: EIService) { - super(); } - loadProducers(): Observable { + loadProducers() { this.loadingSubject.next(true); let producers: Array = []; this.eiSvc.getProducerIds() @@ -67,7 +67,6 @@ export class EIProducerDataSource extends MatTableDataSource { }); this.rowCount = this.producerSubject.value.length; }); - return of(producers); } private addProducerToSubject(producer: EIProducer) { @@ -75,13 +74,4 @@ export class EIProducerDataSource extends MatTableDataSource { const updatedValue = [...currentValue, producer]; this.producerSubject.next(updatedValue); } - - connect(): BehaviorSubject { - return this.producerSubject; - } - - disconnect(): void { - this.producerSubject.complete(); - this.loadingSubject.complete(); - } } \ No newline at end of file -- 2.16.6