From a5eb5acf5d352415a7e87fc47e0546ba4fa9e67c Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Fri, 5 Mar 2021 07:44:23 +0000 Subject: [PATCH] [AAE-4749] process filter notification fixes (#6773) * process filter notification fixes * exclude flaky e2e --- e2e/protractor.excludes.json | 3 ++- .../edit-process-filter-cloud.component.spec.ts | 11 +++++++++++ .../edit-process-filter-cloud.component.ts | 17 ++++++++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/e2e/protractor.excludes.json b/e2e/protractor.excludes.json index 8d99496401..af5630ab90 100644 --- a/e2e/protractor.excludes.json +++ b/e2e/protractor.excludes.json @@ -8,5 +8,6 @@ "C279931": "login problem APS not basic", "C279930": "login problem APS not basic", "C260241": "ADF-5335- this will exclude 2 tests", - "C587515": "https://alfresco.atlassian.net/browse/ADF-5340" + "C587515": "https://alfresco.atlassian.net/browse/ADF-5340", + "C311290": "fix is in the progress by Vito" } diff --git a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.spec.ts index c33720939b..bbd94602b7 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.spec.ts @@ -107,6 +107,17 @@ describe('EditProcessFilterCloudComponent', () => { fixture.destroy(); }); + it('should not raise filter change events if filter remains the same', () => { + let count = 0; + component.filterChange.subscribe(() => count++); + + component.processFilter = fakeFilter; + component.processFilter = fakeFilter; + component.processFilter = fakeFilter; + + expect(count).toBe(1); + }); + it('should fetch process instance filter by id', async(() => { const processFilterIdChange = new SimpleChange(null, 'mock-process-filter-id', true); component.ngOnChanges({ 'id': processFilterIdChange }); 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 6b0c744da9..81fd97c0f3 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 @@ -103,6 +103,8 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes @Input() set processFilter(value: ProcessFilterCloudModel) { + const isChanged = this.isFilterChanged(this._filter, value); + this._filter = value; if (value?.appName) { @@ -118,7 +120,9 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes this.buildForm(this.processFilterProperties); - this.filterChange.emit(value); + if (isChanged) { + this.filterChange.emit(value); + } } status: Array = [ @@ -637,6 +641,17 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes ]; } + private isFilterChanged(oldValue: ProcessFilterCloudModel, newValue: ProcessFilterCloudModel): boolean { + const oldJson = JSON.stringify( + this.processFilterCloudService.writeQueryParams(oldValue || {}, this.filterProperties) + ); + const newJson = JSON.stringify( + this.processFilterCloudService.writeQueryParams(newValue || {}, this.filterProperties) + ); + + return oldJson !== newJson; + } + private createProcessFilterProperties(filterModel: ProcessFilterCloudModel): ProcessFilterProperties[] { const appVersionMultiple = [];