[ACA-4041] Filter not emitting the latest value (#6238)

* [ACA-4041] update filter

* * unit test added
This commit is contained in:
dhrn
2020-10-13 04:10:02 +05:30
committed by GitHub
parent 686e28715d
commit f852811920
2 changed files with 16 additions and 4 deletions

View File

@@ -87,7 +87,7 @@ describe('SearchFilterContainerComponent', () => {
expect(element).not.toBeUndefined();
});
it('should set new active filter after the Apply button is clicked', async () => {
it('should set/update the active filter after the Apply button is clicked', async () => {
const menuButton: HTMLButtonElement = fixture.nativeElement.querySelector('#filter-menu-button');
menuButton.click();
fixture.detectChanges();
@@ -100,6 +100,17 @@ describe('SearchFilterContainerComponent', () => {
expect(queryBuilder.getActiveFilters().length).toBe(1);
expect(queryBuilder.getActiveFilters()[0].key).toBe('name');
expect(queryBuilder.getActiveFilters()[0].value).toBe('searchText');
menuButton.click();
fixture.detectChanges();
await fixture.whenStable();
component.widgetContainer.componentRef.instance.value = 'updated text';
applyButton.triggerEventHandler('click', {});
fixture.detectChanges();
await fixture.whenStable();
expect(queryBuilder.getActiveFilters().length).toBe(1);
expect(queryBuilder.getActiveFilters()[0].key).toBe('name');
expect(queryBuilder.getActiveFilters()[0].value).toBe('updated text');
});
it('should emit filterChange after the Apply button is clicked', async (done) => {

View File

@@ -64,14 +64,15 @@ export class SearchHeaderQueryBuilderService extends BaseQueryBuilderService {
}
setActiveFilter(columnActivated: string, filterValue: string) {
const filterIndex = this.activeFilters.find((activeFilter) => activeFilter.key === columnActivated);
if (!filterIndex) {
const selectedFilter = this.activeFilters.find((activeFilter) => activeFilter.key === columnActivated);
if (!selectedFilter) {
this.activeFilters.push(<FilterSearch> {
key: columnActivated,
value: filterValue
});
} else {
selectedFilter.value = filterValue;
}
}
resetActiveFilters() {