mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ADF-3716] Add filterWithContains configuration option for SearchFilt… (#4017)
* [ADF-3716] Add filterWithContains configuration option for SearchFilterComponent * [ADF-3716] Add unit test and modify translationMock
This commit is contained in:
committed by
Eugenio Romano
parent
41ba258452
commit
9881e52873
@@ -40,7 +40,7 @@ describe('SearchFilterComponent', () => {
|
||||
const searchMock: any = {
|
||||
dataLoaded: new Subject()
|
||||
};
|
||||
translationMock.instant = (key) => `translated${key}`;
|
||||
translationMock.instant = (key) => `${key}_translated`;
|
||||
component = new SearchFilterComponent(queryBuilder, searchMock, translationMock);
|
||||
component.ngOnInit();
|
||||
});
|
||||
@@ -217,6 +217,53 @@ describe('SearchFilterComponent', () => {
|
||||
expect(component.responseFacetFields.length).toEqual(2);
|
||||
});
|
||||
|
||||
it('should filter response facet fields based on search filter config method', () => {
|
||||
queryBuilder.config = {
|
||||
categories: [],
|
||||
facetFields: { fields: [
|
||||
{ label: 'f1', field: 'f1' }
|
||||
]},
|
||||
facetQueries: {
|
||||
queries: []
|
||||
},
|
||||
filterWithContains: false
|
||||
};
|
||||
|
||||
const initialFields: any = [
|
||||
{ label: 'f1', buckets: [
|
||||
{ label: 'firstLabel', display: 'firstLabel', count: 5 },
|
||||
{ label: 'secondLabel', display: 'secondLabel', count: 5 },
|
||||
{ label: 'thirdLabel', display: 'thirdLabel', count: 5 }
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
const data = {
|
||||
list: {
|
||||
context: {
|
||||
facetsFields: initialFields
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
component.onDataLoaded(data);
|
||||
expect(component.responseFacetFields[0].buckets.visibleItems.length).toBe(3);
|
||||
|
||||
component.responseFacetFields[0].buckets.filterText = 'f';
|
||||
expect(component.responseFacetFields[0].buckets.visibleItems.length).toBe(1);
|
||||
expect(component.responseFacetFields[0].buckets.visibleItems[0].label).toEqual('firstLabel');
|
||||
|
||||
component.responseFacetFields[0].buckets.filterText = 'label';
|
||||
expect(component.responseFacetFields[0].buckets.visibleItems.length).toBe(0);
|
||||
|
||||
// Set filter method to use contains and test again
|
||||
queryBuilder.config.filterWithContains = true;
|
||||
component.responseFacetFields[0].buckets.filterText = 'f';
|
||||
expect(component.responseFacetFields[0].buckets.visibleItems.length).toBe(1);
|
||||
component.responseFacetFields[0].buckets.filterText = 'label';
|
||||
expect(component.responseFacetFields[0].buckets.visibleItems.length).toBe(3);
|
||||
});
|
||||
|
||||
it('should fetch facet fields from response payload and show the bucket values', () => {
|
||||
component.responseFacetFields = null;
|
||||
|
||||
|
@@ -233,7 +233,7 @@ export class SearchFilterComponent implements OnInit, OnDestroy {
|
||||
if (bucket && bucketList.filterText) {
|
||||
const pattern = (bucketList.filterText || '').toLowerCase();
|
||||
const label = (this.translationService.instant(bucket.display) || this.translationService.instant(bucket.label)).toLowerCase();
|
||||
return label.startsWith(pattern);
|
||||
return this.queryBuilder.config.filterWithContains ? label.indexOf(pattern) !== -1 : label.startsWith(pattern);
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
@@ -26,6 +26,7 @@ export interface SearchConfiguration {
|
||||
fields?: Array<string>;
|
||||
categories: Array<SearchCategory>;
|
||||
filterQueries?: Array<FilterQuery>;
|
||||
filterWithContains?: boolean;
|
||||
facetQueries?: {
|
||||
label?: string;
|
||||
pageSize?: number;
|
||||
|
Reference in New Issue
Block a user