[ACA-4370] Refresh filter counter on filter click (#6873)

This commit is contained in:
davidcanonieto 2021-03-29 15:31:39 +01:00 committed by GitHub
parent b4fa19358c
commit afb58470f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 43 additions and 13 deletions

View File

@ -16,7 +16,7 @@
*/
import { TestBed, async } from '@angular/core/testing';
import { setupTestBed } from '@alfresco/adf-core';
import { AlfrescoApiService, setupTestBed } from '@alfresco/adf-core';
import { ProcessServiceCloudTestingModule } from '../testing/process-service-cloud.testing.module';
import { TranslateModule } from '@ngx-translate/core';
import { NotificationCloudService } from './notification-cloud.service';
@ -27,6 +27,7 @@ describe('NotificationCloudService', () => {
let apollo: Apollo;
let apolloCreateSpy;
let apolloSubscribeSpy;
let apiService: AlfrescoApiService;
const useMock = {
subscribe() {}
};
@ -42,6 +43,12 @@ describe('NotificationCloudService', () => {
}
`;
const apiServiceMock = {
oauth2Auth: {
token: '1234567'
}
};
setupTestBed({
imports: [
TranslateModule.forRoot(),
@ -52,7 +59,9 @@ describe('NotificationCloudService', () => {
beforeEach(async(() => {
service = TestBed.inject(NotificationCloudService);
apollo = TestBed.inject(Apollo);
apiService = TestBed.inject(AlfrescoApiService);
spyOn(apiService, 'getInstance').and.returnValue(apiServiceMock);
service.appsListening = [];
apolloCreateSpy = spyOn(apollo, 'createNamed');
apolloSubscribeSpy = spyOn(apollo, 'use').and.returnValue(useMock);

View File

@ -22,7 +22,7 @@ import { WebSocketLink } from '@apollo/client/link/ws';
import { onError } from '@apollo/client/link/error';
import { getMainDefinition } from '@apollo/client/utilities';
import { Injectable } from '@angular/core';
import { StorageService, AppConfigService, AlfrescoApiService } from '@alfresco/adf-core';
import { AppConfigService, AlfrescoApiService } from '@alfresco/adf-core';
import { BaseCloudService } from './base-cloud.service';
@Injectable({
@ -35,8 +35,7 @@ export class NotificationCloudService extends BaseCloudService {
constructor(apiService: AlfrescoApiService,
appConfigService: AppConfigService,
public apollo: Apollo,
private http: HttpLink,
private storageService: StorageService) {
private http: HttpLink) {
super(apiService, appConfigService);
}
@ -62,7 +61,7 @@ export class NotificationCloudService extends BaseCloudService {
lazy: true,
connectionParams: {
kaInterval: 2000,
'X-Authorization': 'Bearer ' + this.storageService.getItem('access_token')
'X-Authorization': 'Bearer ' + this.apiService.getInstance().oauth2Auth.token
}
}
});
@ -85,7 +84,7 @@ export class NotificationCloudService extends BaseCloudService {
operation.setContext({
headers: {
...oldHeaders,
'X-Authorization': 'Bearer ' + this.storageService.getItem('access_token')
'X-Authorization': 'Bearer ' + this.apiService.getInstance().oauth2Auth.token
}
});
forward(operation);

View File

@ -51,6 +51,7 @@ describe('TaskFiltersCloudComponent', () => {
let component: TaskFiltersCloudComponent;
let fixture: ComponentFixture<TaskFiltersCloudComponent>;
let getTaskFilterCounterSpy;
setupTestBed({
imports: [
@ -68,7 +69,7 @@ describe('TaskFiltersCloudComponent', () => {
component = fixture.componentInstance;
taskFilterService = TestBed.inject(TaskFilterCloudService);
spyOn(taskFilterService, 'getTaskFilterCounter').and.returnValue(of(11));
getTaskFilterCounterSpy = spyOn(taskFilterService, 'getTaskFilterCounter').and.returnValue(of(11));
spyOn(taskFilterService, 'getTaskNotificationSubscription').and.returnValue(of(taskNotifications));
});
@ -423,4 +424,21 @@ describe('TaskFiltersCloudComponent', () => {
});
});
}));
it('should update filter counter when filter is selected', fakeAsync(() => {
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(fakeGlobalFilterObservable);
component.appName = 'my-app-1';
component.ngOnInit();
tick(5000);
fixture.detectChanges();
component.showIcons = true;
fixture.whenStable().then(() => {
fixture.detectChanges();
const filterButton = fixture.debugElement.nativeElement.querySelector(`[data-automation-id="${fakeGlobalFilter[0].key}_filter"]`);
filterButton.click();
fixture.detectChanges();
expect(getTaskFilterCounterSpy).toHaveBeenCalledWith(fakeGlobalFilter[0]);
});
}));
});

View File

@ -88,11 +88,13 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp
}
updateFilterCounters() {
this.filters.forEach((filter) => {
if (filter.showCounter) {
this.counters$[filter.key] = this.taskFilterCloudService.getTaskFilterCounter(filter);
}
});
this.filters.forEach((filter: TaskFilterCloudModel) => this.updateFilterCounter(filter));
}
updateFilterCounter(filter: TaskFilterCloudModel) {
if (filter?.showCounter) {
this.counters$[filter.key] = this.taskFilterCloudService.getTaskFilterCounter(filter);
}
}
initFilterCounterNotifications() {
@ -155,6 +157,7 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp
public onFilterClick(filter: FilterParamsModel) {
if (filter) {
this.selectFilter(filter);
this.updateFilterCounter(this.currentFilter);
this.filterClicked.emit(this.currentFilter);
} else {
this.currentFilter = undefined;

View File

@ -253,7 +253,8 @@ export class TaskFilterCloudService extends BaseCloudService {
const queryParams = {
assignee: taskFilter.assignee,
status: taskFilter.status,
appName: taskFilter.appName
appName: taskFilter.appName,
maxItems: 1
};
return this.get<TaskCloudNodePaging>(queryUrl, queryParams).pipe(
map((tasks) => tasks.list.pagination.totalItems)