From f852811920970efbe85ba9f2a39a75c8a19b0199 Mon Sep 17 00:00:00 2001 From: dhrn <14145706+dhrn@users.noreply.github.com> Date: Tue, 13 Oct 2020 04:10:02 +0530 Subject: [PATCH] [ACA-4041] Filter not emitting the latest value (#6238) * [ACA-4041] update filter * * unit test added --- .../search-filter-container.component.spec.ts | 13 ++++++++++++- .../search/search-header-query-builder.service.ts | 7 ++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.spec.ts b/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.spec.ts index 17a1467ffe..64223becfe 100644 --- a/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.spec.ts +++ b/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.spec.ts @@ -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) => { diff --git a/lib/content-services/src/lib/search/search-header-query-builder.service.ts b/lib/content-services/src/lib/search/search-header-query-builder.service.ts index 43986dae0d..d0ac6268f4 100644 --- a/lib/content-services/src/lib/search/search-header-query-builder.service.ts +++ b/lib/content-services/src/lib/search/search-header-query-builder.service.ts @@ -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( { key: columnActivated, value: filterValue }); + } else { + selectedFilter.value = filterValue; } - } resetActiveFilters() {