Skip to content

Commit

Permalink
[AAE-25268] added output for updated filter
Browse files Browse the repository at this point in the history
  • Loading branch information
tomaszhanaj committed Aug 19, 2024
1 parent 075e63d commit f25b178
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,11 @@ export abstract class BaseTaskFiltersCloudComponent implements OnDestroy {
@Output()
error: EventEmitter<any> = new EventEmitter<any>();

counters$: {[key: string]: Observable<number>} = {};
/** Emitted when filter is updated. */
@Output()
updatedFilter: EventEmitter<string> = new EventEmitter<string>();

counters$: { [key: string]: Observable<number> } = {};
updatedCounters: string[] = [];

protected onDestroy$ = new Subject<boolean>();
Expand All @@ -62,6 +66,7 @@ export abstract class BaseTaskFiltersCloudComponent implements OnDestroy {
addToUpdatedCounters(filterKey: string) {
if (!this.updatedCounters.includes(filterKey)) {
this.updatedCounters.push(filterKey);
this.updatedFilter.emit(filterKey);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@
import { SimpleChange } from '@angular/core';
import { ComponentFixture, TestBed, fakeAsync } from '@angular/core/testing';
import { AppConfigService } from '@alfresco/adf-core';
import { of, throwError } from 'rxjs';
import { first, of, throwError } from 'rxjs';
import { TASK_FILTERS_SERVICE_TOKEN } from '../../../services/cloud-token.service';
import { LocalPreferenceCloudService } from '../../../services/local-preference-cloud.service';
import { TaskFilterCloudService } from '../services/task-filter-cloud.service';
import { TaskFiltersCloudComponent } from './task-filters-cloud.component';
import { By } from '@angular/platform-browser';
import { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module';
import { TaskFiltersCloudModule } from '../task-filters-cloud.module';
import { fakeGlobalFilter, defaultTaskFiltersMock, taskNotifications } from '../mock/task-filters-cloud.mock';
import { fakeGlobalFilter, defaultTaskFiltersMock, taskNotifications, fakeFilter, fakeFilterNotification } from '../mock/task-filters-cloud.mock';

describe('TaskFiltersCloudComponent', () => {
let taskFilterService: TaskFilterCloudService;
Expand All @@ -39,13 +39,8 @@ describe('TaskFiltersCloudComponent', () => {

beforeEach(() => {
TestBed.configureTestingModule({
imports: [
ProcessServiceCloudTestingModule,
TaskFiltersCloudModule
],
providers: [
{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }
]
imports: [ProcessServiceCloudTestingModule, TaskFiltersCloudModule],
providers: [{ provide: TASK_FILTERS_SERVICE_TOKEN, useClass: LocalPreferenceCloudService }]
});
taskFilterService = TestBed.inject(TaskFilterCloudService);
getTaskFilterCounterSpy = spyOn(taskFilterService, 'getTaskFilterCounter').and.returnValue(of(11));
Expand Down Expand Up @@ -334,8 +329,38 @@ describe('TaskFiltersCloudComponent', () => {
expect(getTaskFilterCounterSpy).toHaveBeenCalledWith(fakeGlobalFilter[0]);
});

describe('Highlight Selected Filter', () => {
it('should emit filter key when counter is updated', (done) => {
component.appName = 'my-app-1';
component.showIcons = true;
const testKey = 'my-tasks';
component.updatedCounters = [];
fixture.detectChanges();

component.updatedFilter.pipe(first()).subscribe((updatedFilter: string) => {
expect(updatedFilter).toBe(testKey);
done();
});

component.addToUpdatedCounters(testKey);
fixture.detectChanges();
});

it('should emit filter key when filter counter is checked', (done) => {
component.appName = 'my-app-1';
component.showIcons = true;
component.filters = [fakeFilter];
fixture.detectChanges();

component.updatedFilter.pipe(first()).subscribe((updatedFilter: string) => {
expect(updatedFilter).not.toBe(fakeFilter.key);
done();
});

component.checkFilterCounter(fakeFilterNotification);
fixture.detectChanges();
});

describe('Highlight Selected Filter', () => {
const assignedTasksFilterKey = defaultTaskFiltersMock[1].key;
const queuedTasksFilterKey = defaultTaskFiltersMock[0].key;
const completedTasksFilterKey = defaultTaskFiltersMock[2].key;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp
this.filters.map((filter) => {
if (this.isFilterPresent(filter, filterNotification)) {
this.addToUpdatedCounters(filter.key);
this.updatedFilter.emit(filter.key);
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
* limitations under the License.
*/

import { TaskDetailsCloudModel } from '@alfresco/adf-process-services-cloud';
import { assignedTaskDetailsCloudMock } from '../../task-header/mocks/task-details-cloud.mock';
import { TaskFilterCloudModel, ServiceTaskFilterCloudModel, AssignmentType, TaskStatusFilter } from '../models/filter-cloud.model';

Expand Down Expand Up @@ -321,3 +322,8 @@ export const defaultTaskFiltersMock = [
order: 'DESC'
}
];

export const fakeFilterNotification: TaskDetailsCloudModel = {
status: TaskStatusFilter.ASSIGNED,
assignee: 'AssignedTaskUser'
} as TaskDetailsCloudModel;

0 comments on commit f25b178

Please sign in to comment.