From 76c211d40a9428644577942928eae07d10a3dce1 Mon Sep 17 00:00:00 2001 From: Wojciech Duda <69160975+wojd0@users.noreply.github.com> Date: Thu, 1 Aug 2024 09:49:48 +0200 Subject: [PATCH] AAE-23830 fix tests and add a loop tracker --- .../edit-process-filter-cloud.component.html | 2 +- ...dit-process-filter-cloud.component.spec.ts | 55 +++++++++++++++++++ .../edit-process-filter-cloud.component.ts | 13 +++-- 3 files changed, 63 insertions(+), 7 deletions(-) diff --git a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html index f55b2a9e2fa..574de460ea7 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html +++ b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html @@ -24,7 +24,7 @@
- + {{processFilterProperty.label | translate}} { expect(await options[0].getText()).toEqual('ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.PROCESS_NAME'); }); + it('should not reset process definitions instance after filter update', () => { + const getProcessDefinitionsSpy = spyOn(processService, 'getProcessDefinitions').and.returnValue( + of([new ProcessDefinitionCloud({ id: 'fake-id', name: 'fake-name' })]) + ); + component.filterProperties = ['processDefinitionName']; + + const processFilterIdChange = new SimpleChange(null, 'changed-mock-process-filter-id', true); + component.ngOnChanges({ id: processFilterIdChange }); + fixture.detectChanges(); + + const formerProcessDefinitions = component.processDefinitionNames; + const processFilterIdChange2 = new SimpleChange(null, 'changed-mock-process-filter-id', true); + component.ngOnChanges({ id: processFilterIdChange2 }); + fixture.detectChanges(); + + expect(getProcessDefinitionsSpy).toHaveBeenCalledTimes(2); + expect(component.processDefinitionNames).toBeTruthy(); + expect(component.processDefinitionNames).toBe(formerProcessDefinitions); + }); + + it('should not reset application names instance after filter update', () => { + component.filterProperties = ['appName']; + + const processFilterIdChange = new SimpleChange(null, 'changed-mock-process-filter-id', true); + component.ngOnChanges({ id: processFilterIdChange }); + fixture.detectChanges(); + + const formerProcessDefinitions = component.applicationNames; + const processFilterIdChange2 = new SimpleChange(null, 'changed-mock-process-filter-id', true); + component.ngOnChanges({ id: processFilterIdChange2 }); + fixture.detectChanges(); + + expect(getRunningApplicationsSpy).toHaveBeenCalledTimes(2); + expect(component.applicationNames).toBeTruthy(); + expect(component.applicationNames).toBe(formerProcessDefinitions); + }); + + it('should not reset application versions instance after filter update', () => { + const getApplicationVersionsSpy = spyOn(processService, 'getApplicationVersions').and.returnValue(of(mockAppVersions)); + component.filterProperties = ['appVersionMultiple']; + + const processFilterIdChange = new SimpleChange(null, 'changed-mock-process-filter-id', true); + component.ngOnChanges({ id: processFilterIdChange }); + fixture.detectChanges(); + + const formerProcessDefinitions = component.appVersionOptions; + const processFilterIdChange2 = new SimpleChange(null, 'changed-mock-process-filter-id', true); + component.ngOnChanges({ id: processFilterIdChange2 }); + fixture.detectChanges(); + + expect(getApplicationVersionsSpy).toHaveBeenCalledTimes(2); + expect(component.appVersionOptions).toBeTruthy(); + expect(component.appVersionOptions).toBe(formerProcessDefinitions); + }); + describe('edit filter actions', () => { beforeEach(() => { const processFilterIdChange = new SimpleChange(null, 'mock-process-filter-id', true); diff --git a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.ts b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.ts index b3110e35404..de509a93c67 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.ts @@ -218,6 +218,10 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes this.onDestroy$.complete(); } + filterTracker(_index: number, item: ProcessFilterProperties) { + return item.key; + } + buildForm(processFilterProperties: ProcessFilterProperties[]) { this.editProcessFilterForm = this.formBuilder.group(this.getFormControlsConfig(processFilterProperties)); this.onFilterChange(); @@ -349,9 +353,8 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes } getAppVersionOptions() { - this.appVersionOptions = []; - this.processCloudService.getApplicationVersions(this.appName).subscribe((appVersions) => { + this.appVersionOptions.length = 0; appVersions.forEach((appVersion) => { this.appVersionOptions.push({ label: appVersion.entry.version, value: appVersion.entry.version }); }); @@ -432,10 +435,9 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes } getRunningApplications() { - this.applicationNames = []; - this.appsProcessCloudService.getDeployedApplicationsByStatus('RUNNING', this.role).subscribe((applications) => { if (applications && applications.length > 0) { + this.applicationNames.length = 0; applications.map((application) => { this.applicationNames.push({ label: this.appsProcessCloudService.getApplicationLabel(application, this.environmentList), @@ -447,10 +449,9 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes } getProcessDefinitions() { - this.processDefinitionNames = []; - this.processCloudService.getProcessDefinitions(this.appName).subscribe((processDefinitions) => { if (processDefinitions && processDefinitions.length > 0) { + this.processDefinitionNames.length = 0; this.processDefinitionNames.push(this.allProcessDefinitionNamesOption); processDefinitions.map((processDefinition) => { this.processDefinitionNames.push({ label: processDefinition.name, value: processDefinition.name });