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 { 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);
|
||||||
|
@ -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);
|
||||||
|
@ -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]);
|
||||||
|
});
|
||||||
|
}));
|
||||||
});
|
});
|
||||||
|
@ -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;
|
||||||
|
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user