[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 { 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 { ProcessServiceCloudTestingModule } from '../testing/process-service-cloud.testing.module';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { NotificationCloudService } from './notification-cloud.service'; import { NotificationCloudService } from './notification-cloud.service';
@ -27,6 +27,7 @@ describe('NotificationCloudService', () => {
let apollo: Apollo; let apollo: Apollo;
let apolloCreateSpy; let apolloCreateSpy;
let apolloSubscribeSpy; let apolloSubscribeSpy;
let apiService: AlfrescoApiService;
const useMock = { const useMock = {
subscribe() {} subscribe() {}
}; };
@ -42,6 +43,12 @@ describe('NotificationCloudService', () => {
} }
`; `;
const apiServiceMock = {
oauth2Auth: {
token: '1234567'
}
};
setupTestBed({ setupTestBed({
imports: [ imports: [
TranslateModule.forRoot(), TranslateModule.forRoot(),
@ -52,7 +59,9 @@ describe('NotificationCloudService', () => {
beforeEach(async(() => { beforeEach(async(() => {
service = TestBed.inject(NotificationCloudService); service = TestBed.inject(NotificationCloudService);
apollo = TestBed.inject(Apollo); apollo = TestBed.inject(Apollo);
apiService = TestBed.inject(AlfrescoApiService);
spyOn(apiService, 'getInstance').and.returnValue(apiServiceMock);
service.appsListening = []; service.appsListening = [];
apolloCreateSpy = spyOn(apollo, 'createNamed'); apolloCreateSpy = spyOn(apollo, 'createNamed');
apolloSubscribeSpy = spyOn(apollo, 'use').and.returnValue(useMock); 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 { onError } from '@apollo/client/link/error';
import { getMainDefinition } from '@apollo/client/utilities'; import { getMainDefinition } from '@apollo/client/utilities';
import { Injectable } from '@angular/core'; 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'; import { BaseCloudService } from './base-cloud.service';
@Injectable({ @Injectable({
@ -35,8 +35,7 @@ export class NotificationCloudService extends BaseCloudService {
constructor(apiService: AlfrescoApiService, constructor(apiService: AlfrescoApiService,
appConfigService: AppConfigService, appConfigService: AppConfigService,
public apollo: Apollo, public apollo: Apollo,
private http: HttpLink, private http: HttpLink) {
private storageService: StorageService) {
super(apiService, appConfigService); super(apiService, appConfigService);
} }
@ -62,7 +61,7 @@ export class NotificationCloudService extends BaseCloudService {
lazy: true, lazy: true,
connectionParams: { connectionParams: {
kaInterval: 2000, 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({ operation.setContext({
headers: { headers: {
...oldHeaders, ...oldHeaders,
'X-Authorization': 'Bearer ' + this.storageService.getItem('access_token') 'X-Authorization': 'Bearer ' + this.apiService.getInstance().oauth2Auth.token
} }
}); });
forward(operation); forward(operation);

View File

@ -51,6 +51,7 @@ describe('TaskFiltersCloudComponent', () => {
let component: TaskFiltersCloudComponent; let component: TaskFiltersCloudComponent;
let fixture: ComponentFixture<TaskFiltersCloudComponent>; let fixture: ComponentFixture<TaskFiltersCloudComponent>;
let getTaskFilterCounterSpy;
setupTestBed({ setupTestBed({
imports: [ imports: [
@ -68,7 +69,7 @@ describe('TaskFiltersCloudComponent', () => {
component = fixture.componentInstance; component = fixture.componentInstance;
taskFilterService = TestBed.inject(TaskFilterCloudService); 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)); 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() { updateFilterCounters() {
this.filters.forEach((filter) => { this.filters.forEach((filter: TaskFilterCloudModel) => this.updateFilterCounter(filter));
if (filter.showCounter) { }
updateFilterCounter(filter: TaskFilterCloudModel) {
if (filter?.showCounter) {
this.counters$[filter.key] = this.taskFilterCloudService.getTaskFilterCounter(filter); this.counters$[filter.key] = this.taskFilterCloudService.getTaskFilterCounter(filter);
} }
});
} }
initFilterCounterNotifications() { initFilterCounterNotifications() {
@ -155,6 +157,7 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp
public onFilterClick(filter: FilterParamsModel) { public onFilterClick(filter: FilterParamsModel) {
if (filter) { if (filter) {
this.selectFilter(filter); this.selectFilter(filter);
this.updateFilterCounter(this.currentFilter);
this.filterClicked.emit(this.currentFilter); this.filterClicked.emit(this.currentFilter);
} else { } else {
this.currentFilter = undefined; this.currentFilter = undefined;

View File

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