mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-12 17:04:57 +00:00
[ACA-4370] Refresh filter counter on filter click (#6873)
This commit is contained in:
parent
b4fa19358c
commit
afb58470f5
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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]);
|
||||
});
|
||||
}));
|
||||
});
|
||||
|
@ -88,11 +88,13 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp
|
||||
}
|
||||
|
||||
updateFilterCounters() {
|
||||
this.filters.forEach((filter) => {
|
||||
if (filter.showCounter) {
|
||||
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;
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user