mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2026-09-09 18:03:21 +00:00
[MNT-25408]: improves facet resetting flow (#11485)
* [MNT-25408]: improves facet resetting flow * [MNT-25408]: uts refactor
This commit is contained in:
@@ -185,7 +185,7 @@ export abstract class BaseQueryBuilderService {
|
|||||||
this.filterQueries = [];
|
this.filterQueries = [];
|
||||||
this.sorting = [];
|
this.sorting = [];
|
||||||
this.sortingOptions = [];
|
this.sortingOptions = [];
|
||||||
this.userFacetBuckets = {};
|
this.resetUserFacetBucket();
|
||||||
this.scope = null;
|
this.scope = null;
|
||||||
this.filterRawParams = {};
|
this.filterRawParams = {};
|
||||||
this._userQuery = '';
|
this._userQuery = '';
|
||||||
@@ -269,6 +269,14 @@ export abstract class BaseQueryBuilderService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resets an existing bucket list.
|
||||||
|
*/
|
||||||
|
resetUserFacetBucket() {
|
||||||
|
this.userFacetBuckets = {};
|
||||||
|
this.userFacetBucketsUpdate.next(this.userFacetBuckets);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a filter query to the current query.
|
* Adds a filter query to the current query.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -617,6 +617,32 @@ describe('SearchFacetFiltersService', () => {
|
|||||||
expect(searchFacetFiltersService.tabbedFacet.facets['modifier'].buckets.items[1].label).toEqual('c2');
|
expect(searchFacetFiltersService.tabbedFacet.facets['modifier'].buckets.items[1].label).toEqual('c2');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should reset filters and call resetToDefaults', () => {
|
||||||
|
const resetToDefaultsSpy = spyOn(queryBuilder, 'resetToDefaults');
|
||||||
|
const updateSpy = spyOn(queryBuilder, 'update');
|
||||||
|
|
||||||
|
const responseFacets = [{ field: 'field1', label: null }];
|
||||||
|
const selectedBuckets = [{ field: { field: 'field1', label: null }, bucket: { label: 'bucket1', count: 1, filterQuery: 'q1' } }];
|
||||||
|
const tabbedFacet = { fields: ['creator', 'modifier'], label: 'SEARCH.FILTER.PEOPLE', facets: {} };
|
||||||
|
|
||||||
|
searchFacetFiltersService.responseFacets = responseFacets;
|
||||||
|
searchFacetFiltersService.selectedBuckets = selectedBuckets;
|
||||||
|
searchFacetFiltersService.tabbedFacet = tabbedFacet;
|
||||||
|
|
||||||
|
expect(searchFacetFiltersService.responseFacets).toBe(responseFacets);
|
||||||
|
expect(searchFacetFiltersService.selectedBuckets).toBe(selectedBuckets);
|
||||||
|
expect(searchFacetFiltersService.tabbedFacet).toBe(tabbedFacet);
|
||||||
|
|
||||||
|
searchFacetFiltersService.reset();
|
||||||
|
|
||||||
|
expect(resetToDefaultsSpy).toHaveBeenCalled();
|
||||||
|
expect(updateSpy).toHaveBeenCalled();
|
||||||
|
|
||||||
|
expect(searchFacetFiltersService.responseFacets).toEqual([]);
|
||||||
|
expect(searchFacetFiltersService.selectedBuckets).toEqual([]);
|
||||||
|
expect(searchFacetFiltersService.tabbedFacet).toBeNull();
|
||||||
|
});
|
||||||
|
|
||||||
describe('Bucket sorting', () => {
|
describe('Bucket sorting', () => {
|
||||||
let data;
|
let data;
|
||||||
|
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ describe('SearchQueryBuilder (runtime config)', () => {
|
|||||||
describe('SearchQueryBuilder', () => {
|
describe('SearchQueryBuilder', () => {
|
||||||
let router: Router;
|
let router: Router;
|
||||||
let activatedRoute: ActivatedRoute;
|
let activatedRoute: ActivatedRoute;
|
||||||
|
let service: SearchQueryBuilderService;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
@@ -81,6 +82,7 @@ describe('SearchQueryBuilder', () => {
|
|||||||
});
|
});
|
||||||
router = TestBed.inject(Router);
|
router = TestBed.inject(Router);
|
||||||
activatedRoute = TestBed.inject(ActivatedRoute);
|
activatedRoute = TestBed.inject(ActivatedRoute);
|
||||||
|
service = TestBed.inject(SearchQueryBuilderService);
|
||||||
});
|
});
|
||||||
|
|
||||||
const createQueryBuilder = (config?: any) => {
|
const createQueryBuilder = (config?: any) => {
|
||||||
@@ -805,7 +807,6 @@ describe('SearchQueryBuilder', () => {
|
|||||||
it('should use properly encoded query containing non-latin character when calls router.navigate', () => {
|
it('should use properly encoded query containing non-latin character when calls router.navigate', () => {
|
||||||
spyOn(router, 'navigate');
|
spyOn(router, 'navigate');
|
||||||
spyOn(console, 'error');
|
spyOn(console, 'error');
|
||||||
const service = TestBed.inject(SearchQueryBuilderService);
|
|
||||||
service.filterRawParams = { userQuery: '((cm:name:"wąż*" OR cm:title:"wąż*" OR cm:description:"wąż*" OR TEXT:"wąż*" OR TAG:"wąż*"))' };
|
service.filterRawParams = { userQuery: '((cm:name:"wąż*" OR cm:title:"wąż*" OR cm:description:"wąż*" OR TEXT:"wąż*" OR TAG:"wąż*"))' };
|
||||||
|
|
||||||
service.updateSearchQueryParams();
|
service.updateSearchQueryParams();
|
||||||
@@ -825,7 +826,6 @@ describe('SearchQueryBuilder', () => {
|
|||||||
spyOn(router, 'navigate');
|
spyOn(router, 'navigate');
|
||||||
spyOn(console, 'error');
|
spyOn(console, 'error');
|
||||||
const searchUrl = 'search';
|
const searchUrl = 'search';
|
||||||
const service = TestBed.inject(SearchQueryBuilderService);
|
|
||||||
service.filterRawParams = { userQuery: '((cm:name:"wąż*" OR cm:title:"wąż*" OR cm:description:"wąż*" OR TEXT:"wąż*" OR TAG:"wąż*"))' };
|
service.filterRawParams = { userQuery: '((cm:name:"wąż*" OR cm:title:"wąż*" OR cm:description:"wąż*" OR TEXT:"wąż*" OR TAG:"wąż*"))' };
|
||||||
service.encodeQuery();
|
service.encodeQuery();
|
||||||
|
|
||||||
@@ -842,8 +842,6 @@ describe('SearchQueryBuilder', () => {
|
|||||||
|
|
||||||
describe('userFacetBucketsUpdate', () => {
|
describe('userFacetBucketsUpdate', () => {
|
||||||
it('should emit updated list of UserFacetBuckets on adding the bucket', (done) => {
|
it('should emit updated list of UserFacetBuckets on adding the bucket', (done) => {
|
||||||
const service = TestBed.inject(SearchQueryBuilderService);
|
|
||||||
|
|
||||||
service.userFacetBucketsUpdate.pipe(skip(1)).subscribe((buckets) => {
|
service.userFacetBucketsUpdate.pipe(skip(1)).subscribe((buckets) => {
|
||||||
expect(buckets).toEqual({ test: [{ checked: true, filterQuery: 'f1-q1', label: 'f1-q1', count: 1 }] });
|
expect(buckets).toEqual({ test: [{ checked: true, filterQuery: 'f1-q1', label: 'f1-q1', count: 1 }] });
|
||||||
done();
|
done();
|
||||||
@@ -855,7 +853,6 @@ describe('SearchQueryBuilder', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should emit updated list of UserFacetBuckets on removing the bucket', (done) => {
|
it('should emit updated list of UserFacetBuckets on removing the bucket', (done) => {
|
||||||
const service = TestBed.inject(SearchQueryBuilderService);
|
|
||||||
service.addUserFacetBucket('test', { checked: true, filterQuery: 'f1-q1', label: 'toStay', count: 1 });
|
service.addUserFacetBucket('test', { checked: true, filterQuery: 'f1-q1', label: 'toStay', count: 1 });
|
||||||
service.addUserFacetBucket('test', { checked: true, filterQuery: 'f1-q1', label: 'toLeave', count: 1 });
|
service.addUserFacetBucket('test', { checked: true, filterQuery: 'f1-q1', label: 'toLeave', count: 1 });
|
||||||
|
|
||||||
@@ -871,12 +868,19 @@ describe('SearchQueryBuilder', () => {
|
|||||||
]);
|
]);
|
||||||
service.removeUserFacetBucket('test', { checked: true, filterQuery: 'f1-q1', label: 'toLeave', count: 1 });
|
service.removeUserFacetBucket('test', { checked: true, filterQuery: 'f1-q1', label: 'toLeave', count: 1 });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should emit updated list of UserFacetBuckets on resetting the bucket', (done) => {
|
||||||
|
service.userFacetBucketsUpdate.pipe(skip(1)).subscribe((buckets) => {
|
||||||
|
expect(buckets).toEqual({});
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
|
||||||
|
service.resetUserFacetBucket();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('queryFragments proxy set up', () => {
|
describe('queryFragments proxy set up', () => {
|
||||||
it('should emit queryFragmentsUpdate when proxy property is set', (done) => {
|
it('should emit queryFragmentsUpdate when proxy property is set', (done) => {
|
||||||
const service = TestBed.inject(SearchQueryBuilderService);
|
|
||||||
|
|
||||||
service.queryFragmentsUpdate.pipe(skip(1)).subscribe((fragments) => {
|
service.queryFragmentsUpdate.pipe(skip(1)).subscribe((fragments) => {
|
||||||
expect(fragments).toEqual({ test: 'test_fragment' });
|
expect(fragments).toEqual({ test: 'test_fragment' });
|
||||||
done();
|
done();
|
||||||
@@ -888,8 +892,6 @@ describe('SearchQueryBuilder', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should emit queryFragmentsUpdate when setter replaces the proxy', (done) => {
|
it('should emit queryFragmentsUpdate when setter replaces the proxy', (done) => {
|
||||||
const service = TestBed.inject(SearchQueryBuilderService);
|
|
||||||
|
|
||||||
service.queryFragments['test'] = 'test_fragment';
|
service.queryFragments['test'] = 'test_fragment';
|
||||||
const currentFragments = service.queryFragments;
|
const currentFragments = service.queryFragments;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user