From 8d43155c144a308aae56909dc8795a011e8f1db5 Mon Sep 17 00:00:00 2001
From: Mercy Chrysolite <48274621+mcchrys@users.noreply.github.com>
Date: Mon, 27 Jul 2020 02:43:18 +0530
Subject: [PATCH] [ACA-3678] Disable save & delete buttons for default process
filters (#5896)
* [ACA-3678] Disable save & delete buttons for default process filters
* Added unit test
* Added types for params
* Updated e2e
* Updated test
---
.../edit-process-filters-component.e2e.ts | 2 +-
.../edit-process-filter-cloud.component.html | 2 +-
...dit-process-filter-cloud.component.spec.ts | 44 +++++++++++++++++++
.../edit-process-filter-cloud.component.ts | 17 ++++++-
.../process-filter-cloud.service.spec.ts | 8 ++++
.../services/process-filter-cloud.service.ts | 18 ++++++--
6 files changed, 84 insertions(+), 7 deletions(-)
diff --git a/e2e/process-services-cloud/edit-process-filters-component.e2e.ts b/e2e/process-services-cloud/edit-process-filters-component.e2e.ts
index 57eb200fb3..04b9c8074c 100644
--- a/e2e/process-services-cloud/edit-process-filters-component.e2e.ts
+++ b/e2e/process-services-cloud/edit-process-filters-component.e2e.ts
@@ -81,7 +81,7 @@ describe('Edit process filters cloud', () => {
await processCloudDemoPage.editProcessFilterCloudComponent().checkDeleteButtonIsDisplayed();
await expect(await processCloudDemoPage.editProcessFilterCloudComponent().checkSaveButtonIsEnabled()).toEqual(false);
await expect(await processCloudDemoPage.editProcessFilterCloudComponent().checkSaveAsButtonIsEnabled()).toEqual(false);
- await expect(await processCloudDemoPage.editProcessFilterCloudComponent().checkDeleteButtonIsEnabled()).toEqual(true);
+ await expect(await processCloudDemoPage.editProcessFilterCloudComponent().checkDeleteButtonIsEnabled()).toEqual(false);
await processCloudDemoPage.editProcessFilterCloudComponent().openFilter();
});
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 7b27d0feef..e502036de6 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
@@ -7,7 +7,7 @@
{{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.TITLE' | translate}}
-
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 803694cb16..359430782d 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
@@ -153,6 +153,50 @@ describe('EditProcessFilterCloudComponent', () => {
});
}));
+ it('should disable save and delete button for default process filters', () => {
+ getProcessFilterByIdSpy.and.returnValue(of({
+ id: 'filter-id',
+ processName: 'ADF_CLOUD_PROCESS_FILTERS.RUNNING_PROCESSES',
+ sort: 'my-custom-sort',
+ processDefinitionId: 'process-definition-id',
+ priority: '12'
+ }));
+
+ const processFilterIdChange = new SimpleChange(null, 'filter-id', true);
+ component.ngOnChanges({ 'id': processFilterIdChange });
+ fixture.detectChanges();
+
+ component.toggleFilterActions = true;
+ const expansionPanel = fixture.debugElement.nativeElement.querySelector('mat-expansion-panel-header');
+ expansionPanel.click();
+ fixture.detectChanges();
+ fixture.whenStable().then(() => {
+ const saveButton = fixture.debugElement.nativeElement.querySelector('[data-automation-id="adf-filter-action-save"]');
+ expect(saveButton.disabled).toEqual(true);
+ const deleteButton = fixture.debugElement.nativeElement.querySelector('[data-automation-id="adf-filter-action-delete"]');
+ expect(deleteButton.disabled).toEqual(true);
+ });
+ });
+
+ it('should enable save and delete button for custom process filters', () => {
+ const disableCheckSpy = spyOn(component, 'isDisabledAction');
+ const processFilterIdChange = new SimpleChange(null, 'mock-process-filter-id', true);
+ component.ngOnChanges({ 'id': processFilterIdChange });
+ fixture.detectChanges();
+
+ component.toggleFilterActions = true;
+ const expansionPanel = fixture.debugElement.nativeElement.querySelector('mat-expansion-panel-header');
+ expansionPanel.click();
+ fixture.detectChanges();
+ expect(disableCheckSpy).toHaveBeenCalled();
+ fixture.whenStable().then(() => {
+ const saveButton = fixture.debugElement.nativeElement.querySelector('[data-automation-id="adf-filter-action-save"]');
+ expect(saveButton.disabled).toEqual(false);
+ const deleteButton = fixture.debugElement.nativeElement.querySelector('[data-automation-id="adf-filter-action-delete"]');
+ expect(deleteButton.disabled).toEqual(false);
+ });
+ });
+
describe('EditProcessFilter form', () => {
beforeEach(() => {
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 9b1e22ba57..d0efe7dae0 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,10 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes
];
directions = [{ label: 'ASC', value: 'ASC' }, { label: 'DESC', value: 'DESC' }];
+ actionDisabledForDefault = [
+ EditProcessFilterCloudComponent.ACTION_SAVE,
+ EditProcessFilterCloudComponent.ACTION_DELETE
+ ];
applicationNames: any[] = [];
formHasBeenChanged = false;
editProcessFilterForm: FormGroup;
@@ -433,7 +437,18 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes
return property.type === 'number';
}
- hasFormChanged(action: any): boolean {
+ isDisabledAction(action: ProcessFilterAction): boolean {
+ return this.isDisabledForDefaultFilters(action) ? true : this.hasFormChanged(action);
+ }
+
+ isDisabledForDefaultFilters(action: ProcessFilterAction): boolean {
+ return (
+ this.processFilterCloudService.isDefaultFilter(this.processFilter.name) &&
+ this.actionDisabledForDefault.includes(action.actionType)
+ );
+ }
+
+ hasFormChanged(action: ProcessFilterAction): boolean {
if (action.actionType === EditProcessFilterCloudComponent.ACTION_SAVE) {
return !this.formHasBeenChanged;
}
diff --git a/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.spec.ts b/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.spec.ts
index 63f7613a73..ebb7b0e4b6 100644
--- a/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.spec.ts
+++ b/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.spec.ts
@@ -381,4 +381,12 @@ describe('ProcessFilterCloudService', () => {
});
expect(updatePreferenceSpy).toHaveBeenCalled();
});
+
+ it('should check if given filter is a default filter', () => {
+ const fakeFilterName = 'fake-process-filter';
+ const defaultFilterName = 'ADF_CLOUD_PROCESS_FILTERS.RUNNING_PROCESSES';
+
+ expect(service.isDefaultFilter(defaultFilterName)).toBe(true);
+ expect(service.isDefaultFilter(fakeFilterName)).toBe(false);
+ });
});
diff --git a/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts b/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts
index 6ba09630e3..aab24f5f05 100644
--- a/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts
+++ b/lib/process-services-cloud/src/lib/process/process-filters/services/process-filter-cloud.service.ts
@@ -170,6 +170,16 @@ export class ProcessFilterCloudService {
);
}
+ /**
+ * Checks if given filter is a default filter
+ * @param filterName Name of the target process filter
+ * @returns Boolean value for whether the filter is a default filter
+ */
+ isDefaultFilter(filterName: string): boolean {
+ const defaultFilters = this.defaultProcessFilters();
+ return defaultFilters.findIndex((filter) => filterName === filter.name) !== -1;
+ }
+
/**
* Checks user preference are empty or not
* @param preferences User preferences of the target app
@@ -256,13 +266,13 @@ export class ProcessFilterCloudService {
* @param appName Name of the target app
* @returns Array of ProcessFilterCloudModel
*/
- private defaultProcessFilters(appName: string): ProcessFilterCloudModel[] {
+ private defaultProcessFilters(appName?: string): ProcessFilterCloudModel[] {
return [
new ProcessFilterCloudModel({
name: 'ADF_CLOUD_PROCESS_FILTERS.RUNNING_PROCESSES',
icon: 'inbox',
key: 'running-processes',
- appName: appName,
+ appName,
sort: 'startDate',
status: 'RUNNING',
order: 'DESC'
@@ -271,7 +281,7 @@ export class ProcessFilterCloudService {
name: 'ADF_CLOUD_PROCESS_FILTERS.COMPLETED_PROCESSES',
icon: 'done',
key: 'completed-processes',
- appName: appName,
+ appName,
sort: 'startDate',
status: 'COMPLETED',
order: 'DESC'
@@ -280,7 +290,7 @@ export class ProcessFilterCloudService {
name: 'ADF_CLOUD_PROCESS_FILTERS.ALL_PROCESSES',
key: 'all-processes',
icon: 'adjust',
- appName: appName,
+ appName,
sort: 'startDate',
status: '',
order: 'DESC'