From 1a00249f6ad995960ef4ec49d0d625f342dd507f Mon Sep 17 00:00:00 2001 From: Thomas Hunter Date: Wed, 8 Feb 2023 09:18:14 +0000 Subject: [PATCH] [ADF-5514] Fix red dot still present after filter being cleared (#8181) * [ADF-5514] Fix red dot still present after filter being cleared * Add unit test * Added statement clearing filter after each test so the ordering doesn't cause the unit test to fail --- .../search-filter-container.component.spec.ts | 27 +++++++++++++++++++ .../search-filter-container.component.ts | 3 ++- 2 files changed, 29 insertions(+), 1 deletion(-) 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 9dbd29c433..1dec96ddc5 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 @@ -74,6 +74,7 @@ describe('SearchFilterContainerComponent', () => { }); afterEach(() => { + queryBuilder.removeActiveFilter(mockCategory.columnKey); fixture.destroy(); }); @@ -150,6 +151,32 @@ describe('SearchFilterContainerComponent', () => { expect(eventRaised).toBe(true); }); + it('should hide the red dot after the filter is cleared', async () => { + const badge: HTMLElement = fixture.nativeElement.querySelector(`[data-automation-id="filter-menu-button"] .mat-badge-content`); + expect(window.getComputedStyle(badge).display).toBe('none'); + + const menuButton: HTMLButtonElement = fixture.nativeElement.querySelector('[data-automation-id="filter-menu-button"]'); + menuButton.click(); + fixture.detectChanges(); + await fixture.whenStable(); + component.widgetContainer.componentRef.instance.value = 'searchText'; + const widgetContainer = fixture.debugElement.query(By.css('adf-search-widget-container')); + widgetContainer.triggerEventHandler('keypress', {key: 'Enter'}); + fixture.detectChanges(); + await fixture.whenStable(); + expect(window.getComputedStyle(badge).display).not.toBe('none'); + + menuButton.click(); + fixture.detectChanges(); + await fixture.whenStable(); + const fakeEvent = jasmine.createSpyObj('event', ['stopPropagation']); + const clearButton = fixture.debugElement.query(By.css('#clear-filter-button')); + clearButton.triggerEventHandler('click', fakeEvent); + fixture.detectChanges(); + await fixture.whenStable(); + expect(window.getComputedStyle(badge).display).toBe('none'); + }); + describe('Accessibility', () => { it('should set up a focus trap on the filter when the menu is opened', async () => { diff --git a/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.ts b/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.ts index 02318992cf..d178fe21a6 100644 --- a/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.ts +++ b/lib/content-services/src/lib/search/components/search-filter-container/search-filter-container.component.ts @@ -35,6 +35,7 @@ import { SearchCategory } from '../../models/search-category.interface'; import { SEARCH_QUERY_SERVICE_TOKEN } from '../../search-query-service.token'; import { Subject } from 'rxjs'; import { MatMenuTrigger } from '@angular/material/menu'; +import { FilterSearch } from '../../models/filter-search.interface'; @Component({ selector: 'adf-search-filter-container', @@ -119,7 +120,7 @@ export class SearchFilterContainerComponent implements OnInit, OnDestroy { } isActive(): boolean { - return this.widgetContainer && this.widgetContainer.componentRef && this.widgetContainer.componentRef.instance.isActive; + return this.searchFilterQueryBuilder.getActiveFilters().findIndex((f: FilterSearch) => f.key === this.category.columnKey) > -1; } onMenuOpen() {