From 878b49fea1e264b5ee5c961b6c1917d209d1eb87 Mon Sep 17 00:00:00 2001 From: arditdomi <32884230+arditdomi@users.noreply.github.com> Date: Tue, 12 Nov 2019 15:04:01 +0000 Subject: [PATCH] [ADF-4979] TaskHeaderCloudComponent Add error emit when appName or taskId is not provided (#5236) * [ADF-4979] Add error emit when appName or taskId are not provided in TaskHeaderCloudComponent * [ADF-4979] Modify @Output description * [ADF-4979] Remove unused onObservable complete code --- .../task-header-cloud-demo.component.html | 12 ++---- .../cloud/task-header-cloud-demo.component.ts | 2 +- .../task-header-cloud.component.spec.ts | 42 ++++++++++++++++--- .../components/task-header-cloud.component.ts | 8 ++-- 4 files changed, 46 insertions(+), 18 deletions(-) diff --git a/demo-shell/src/app/components/cloud/task-header-cloud-demo.component.html b/demo-shell/src/app/components/cloud/task-header-cloud-demo.component.html index a301978d77..521dfd0436 100644 --- a/demo-shell/src/app/components/cloud/task-header-cloud-demo.component.html +++ b/demo-shell/src/app/components/cloud/task-header-cloud-demo.component.html @@ -4,22 +4,18 @@ {{ 'APP_LAYOUT.TASK_HEADER_CLOUD.APP_NAME_INPUT' | translate }} + [formControl]="appNameFormControl" + (change)="updateTaskHeader()"> {{ 'APP_LAYOUT.TASK_HEADER_CLOUD.TASK_ID_INPUT' | translate }} + [formControl]="taskIdFormControl" + (change)="updateTaskHeader()"> - - {{errorMessage}}
diff --git a/demo-shell/src/app/components/cloud/task-header-cloud-demo.component.ts b/demo-shell/src/app/components/cloud/task-header-cloud-demo.component.ts index e35803e404..f43eccdfbd 100644 --- a/demo-shell/src/app/components/cloud/task-header-cloud-demo.component.ts +++ b/demo-shell/src/app/components/cloud/task-header-cloud-demo.component.ts @@ -44,6 +44,6 @@ export class TaskHeaderCloudDemoComponent { } onError(error) { - this.errorMessage = error.message; + this.errorMessage = error; } } diff --git a/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.spec.ts index a30859d75d..c1fafbe984 100644 --- a/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.spec.ts @@ -260,15 +260,45 @@ describe('TaskHeaderCloudComponent', () => { fixture = TestBed.createComponent(TaskHeaderCloudComponent); component = fixture.componentInstance; service = TestBed.get(TaskCloudService); - spyOn(service, 'getTaskById').and.returnValue(throwError('Task not found error')); }); - it('should emit an error when getTaskById returns an error', async(() => { - const taskErrorSpy = spyOn(component.taskError, 'emit'); - component.loadTaskDetailsById(component.appName, component.taskId); - fixture.detectChanges(); - expect(taskErrorSpy).toHaveBeenCalledWith('Task not found error'); + it('should emit an error when task can not be found', async(() => { + spyOn(service, 'getTaskById').and.returnValue(throwError('Task not found')); + component.error.subscribe((error) => { + expect(error).toEqual('Task not found'); + }); + + component.appName = 'appName'; + component.taskId = 'taskId'; + component.ngOnChanges(); + })); + + it('should emit an error when app name and/or task id are not provided', async(() => { + + component.error.subscribe((error) => { + expect(error).toEqual('App Name and Task Id are mandatory'); + }); + + component.appName = ''; + component.taskId = ''; + component.ngOnChanges(); + + component.appName = 'app'; + component.ngOnChanges(); + + component.appName = ''; + component.taskId = 'taskId'; + component.ngOnChanges(); + })); + + it('should call the loadTaskDetailsById when both app name and task id are provided', async(() => { + spyOn(component, 'loadTaskDetailsById'); + component.appName = 'appName'; + component.taskId = 'taskId'; + component.ngOnChanges(); + fixture.detectChanges(); + expect(component.loadTaskDetailsById).toHaveBeenCalledWith(component.appName, component.taskId); })); }); }); diff --git a/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.ts b/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.ts index 873874224b..74803d0f40 100644 --- a/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.ts @@ -57,9 +57,9 @@ export class TaskHeaderCloudComponent implements OnInit, OnDestroy, OnChanges { @Output() unclaim: EventEmitter = new EventEmitter(); - /** Emitted when the task has not been found. */ + /** Emitted when the given task has errors. */ @Output() - taskError: EventEmitter = new EventEmitter(); + error: EventEmitter = new EventEmitter(); taskDetails: TaskDetailsCloudModel = new TaskDetailsCloudModel(); properties: CardViewItem[]; @@ -99,6 +99,8 @@ export class TaskHeaderCloudComponent implements OnInit, OnDestroy, OnChanges { this.taskDetails = new TaskDetailsCloudModel(); if (this.appName && this.taskId) { this.loadTaskDetailsById(this.appName, this.taskId); + } else { + this.error.emit('App Name and Task Id are mandatory'); } } @@ -112,7 +114,7 @@ export class TaskHeaderCloudComponent implements OnInit, OnDestroy, OnChanges { this.refreshData(); } }, - (err) => this.taskError.emit(err), () => {}); + (err) => this.error.emit(err)); } private initDefaultProperties() {