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',