From ef73d812c4421eb6ad90df5732ae9aaeca3ff126 Mon Sep 17 00:00:00 2001
From: Mercy Chrysolite <48274621+mcchrys@users.noreply.github.com>
Date: Mon, 27 Jul 2020 02:42:45 +0530
Subject: [PATCH] [ACA-3751] Disable save & delete buttons for default task
filters (#5897)
* [ACA-3751] Disable save & delete buttons for default task filters
* Added unit tests
* Added param types
* Updated e2e
* Updated e2e title
---
.../edit-task-filters-component.e2e.ts | 4 +-
.../edit-task-filter-cloud.component.html | 2 +-
.../edit-task-filter-cloud.component.spec.ts | 44 +++++++++++++++++++
.../edit-task-filter-cloud.component.ts | 17 ++++++-
.../task-filter-cloud.service.spec.ts | 8 ++++
.../services/task-filter-cloud.service.ts | 18 ++++++--
6 files changed, 85 insertions(+), 8 deletions(-)
diff --git a/e2e/process-services-cloud/edit-task-filters-component.e2e.ts b/e2e/process-services-cloud/edit-task-filters-component.e2e.ts
index 8f0d6288f4..14b283f4a9 100644
--- a/e2e/process-services-cloud/edit-task-filters-component.e2e.ts
+++ b/e2e/process-services-cloud/edit-task-filters-component.e2e.ts
@@ -97,7 +97,7 @@ describe('Edit task filters cloud', () => {
await tasksCloudDemoPage.editTaskFilterCloudComponent().openFilter();
});
- it('[C306896] Delete Save and Save as actions should be displayed when clicking on custom filter header', async () => {
+ it('[C306896] Delete Save and Save as actions should be displayed and disabled when clicking on default filter header', async () => {
await tasksCloudDemoPage.taskFilterCloudComponent.clickTaskFilter('my-tasks');
await tasksCloudDemoPage.editTaskFilterCloudComponent().openFilter();
await tasksCloudDemoPage.taskFilterCloudComponent.clickTaskFilter('my-tasks');
@@ -110,7 +110,7 @@ describe('Edit task filters cloud', () => {
await expect(await tasksCloudDemoPage.editTaskFilterCloudComponent().checkSaveButtonIsEnabled()).toEqual(false);
await expect(await tasksCloudDemoPage.editTaskFilterCloudComponent().checkSaveAsButtonIsEnabled()).toEqual(false);
- await expect(await tasksCloudDemoPage.editTaskFilterCloudComponent().checkDeleteButtonIsEnabled()).toEqual(true);
+ await expect(await tasksCloudDemoPage.editTaskFilterCloudComponent().checkDeleteButtonIsEnabled()).toEqual(false);
await tasksCloudDemoPage.editTaskFilterCloudComponent().openFilter();
});
diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.html b/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.html
index 8075347f84..9441c33b8f 100644
--- a/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.html
+++ b/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.html
@@ -7,7 +7,7 @@
{{ 'ADF_CLOUD_EDIT_TASK_FILTER.TITLE' | translate}}
-
diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.spec.ts
index 74acc2d20c..c4577da30f 100644
--- a/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.spec.ts
+++ b/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.spec.ts
@@ -127,6 +127,50 @@ describe('EditTaskFilterCloudComponent', () => {
});
}));
+ it('should disable save and delete button for default task filters', () => {
+ getTaskFilterSpy.and.returnValue(of({
+ name: 'ADF_CLOUD_TASK_FILTERS.MY_TASKS',
+ id: 'filter-id',
+ key: 'all-fake-task',
+ icon: 'adjust',
+ sort: 'startDate',
+ status: 'ALL',
+ order: 'DESC'
+ }));
+
+ const taskFilterIdChange = new SimpleChange(null, 'filter-id', true);
+ component.ngOnChanges({ 'id': taskFilterIdChange });
+ 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).toBe(true);
+ const deleteButton = fixture.debugElement.nativeElement.querySelector('[data-automation-id="adf-filter-action-delete"]');
+ expect(deleteButton.disabled).toBe(true);
+ });
+ });
+
+ it('should enable save and delete button for custom task filters', () => {
+ const taskFilterIdChange = new SimpleChange(null, 'mock-task-filter-id', true);
+ component.ngOnChanges({ 'id': taskFilterIdChange });
+ 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).toBe(true);
+ const deleteButton = fixture.debugElement.nativeElement.querySelector('[data-automation-id="adf-filter-action-delete"]');
+ expect(deleteButton.disabled).toBe(true);
+ });
+ });
+
describe('EditTaskFilter form', () => {
beforeEach(() => {
diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.ts
index 5cbbffc51d..b32c735016 100644
--- a/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.ts
+++ b/lib/process-services-cloud/src/lib/task/task-filters/components/edit-task-filter-cloud.component.ts
@@ -107,6 +107,10 @@ export class EditTaskFilterCloudComponent implements OnInit, OnChanges, OnDestro
{ label: 'ASC', value: 'ASC' },
{ label: 'DESC', value: 'DESC' }
];
+ actionDisabledForDefault = [
+ EditTaskFilterCloudComponent.ACTION_SAVE,
+ EditTaskFilterCloudComponent.ACTION_DELETE
+ ];
private applicationNames: any[] = [];
private formHasBeenChanged = false;
@@ -447,7 +451,18 @@ export class EditTaskFilterCloudComponent implements OnInit, OnChanges, OnDestro
return property.type === 'checkbox';
}
- hasFormChanged(action: any): boolean {
+ isDisabledAction(action: TaskFilterAction): boolean {
+ return this.isDisabledForDefaultFilters(action) ? true : this.hasFormChanged(action);
+ }
+
+ isDisabledForDefaultFilters(action: TaskFilterAction): boolean {
+ return (
+ this.taskFilterCloudService.isDefaultFilter(this.taskFilter.name) &&
+ this.actionDisabledForDefault.includes(action.actionType)
+ );
+ }
+
+ hasFormChanged(action: TaskFilterAction): boolean {
if (action.actionType === EditTaskFilterCloudComponent.ACTION_SAVE) {
return !this.formHasBeenChanged;
}
diff --git a/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.spec.ts b/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.spec.ts
index f21953128f..c4bf692ab0 100644
--- a/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.spec.ts
+++ b/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.spec.ts
@@ -220,6 +220,14 @@ describe('TaskFilterCloudService', () => {
});
expect(updatePreferenceSpy).toHaveBeenCalled();
});
+
+ it('should check if given filter is a default filter', () => {
+ const fakeFilterName = 'fake-task-filter';
+ const defaultFilterName = 'ADF_CLOUD_TASK_FILTERS.MY_TASKS';
+
+ expect(service.isDefaultFilter(defaultFilterName)).toBe(true);
+ expect(service.isDefaultFilter(fakeFilterName)).toBe(false);
+ });
});
describe('Inject [LocalPreferenceCloudService] into the TaskFilterCloudService', () => {
diff --git a/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts b/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts
index 071212eaf5..e680365539 100644
--- a/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts
+++ b/lib/process-services-cloud/src/lib/task/task-filters/services/task-filter-cloud.service.ts
@@ -216,6 +216,16 @@ export class TaskFilterCloudService {
);
}
+ /**
+ * Checks if given filter is a default filter
+ * @param filterName Name of the target task filter
+ * @returns Boolean value for whether the filter is a default filter
+ */
+ isDefaultFilter(filterName: string): boolean {
+ const defaultFilters = this.defaultTaskFilters();
+ return defaultFilters.findIndex((filter) => filterName === filter.name) !== -1;
+ }
+
/**
* Calls update preference api to update task filter
* @param appName Name of the target app
@@ -264,13 +274,13 @@ export class TaskFilterCloudService {
* @param appName Name of the target app
* @returns Array of TaskFilterCloudModel
*/
- private defaultTaskFilters(appName: string): TaskFilterCloudModel[] {
+ private defaultTaskFilters(appName?: string): TaskFilterCloudModel[] {
return [
new TaskFilterCloudModel({
name: 'ADF_CLOUD_TASK_FILTERS.MY_TASKS',
key: 'my-tasks',
icon: 'inbox',
- appName: appName,
+ appName,
status: 'ASSIGNED',
assignee: this.getUsername(),
sort: 'createdDate',
@@ -280,7 +290,7 @@ export class TaskFilterCloudService {
name: 'ADF_CLOUD_TASK_FILTERS.QUEUED_TASKS',
key: 'queued-tasks',
icon: 'queue',
- appName: appName,
+ appName,
status: 'CREATED',
assignee: '',
sort: 'createdDate',
@@ -290,7 +300,7 @@ export class TaskFilterCloudService {
name: 'ADF_CLOUD_TASK_FILTERS.COMPLETED_TASKS',
key: 'completed-tasks',
icon: 'done',
- appName: appName,
+ appName,
status: 'COMPLETED',
assignee: '',
sort: 'createdDate',