diff --git a/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.spec.ts b/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.spec.ts index 2ca1ae65c9..aac9ce9679 100644 --- a/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.spec.ts +++ b/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.spec.ts @@ -204,4 +204,40 @@ describe('SearchCheckListComponent', () => { const checkedElements = await loader.getAllHarnesses(MatCheckboxHarness.with({ checked: true })); expect(checkedElements.length).toBe(0); }); + + it('should update query with startValue on init, if provided', () => { + component.id = 'checkList'; + component.options = new SearchFilterList([ + { name: 'Folder', value: `TYPE:'cm:folder'`, checked: false }, + { name: 'Document', value: `TYPE:'cm:content'`, checked: false } + ]); + component.startValue = `TYPE:'cm:folder'`; + component.context = { + queryFragments: {}, + update: jasmine.createSpy() + } as any; + fixture.detectChanges(); + + expect(component.context.queryFragments[component.id]).toBe(`TYPE:'cm:folder'`); + expect(component.context.update).toHaveBeenCalled(); + }); + + it('should set query context as blank and not call query update, if no start value was provided', () => { + component.id = 'checkList'; + component.options = new SearchFilterList([ + { name: 'Folder', value: `TYPE:'cm:folder'`, checked: true }, + { name: 'Document', value: `TYPE:'cm:content'`, checked: false } + ]); + component.startValue = undefined; + component.context = { + queryFragments: { + checkList: `TYPE:'cm:folder'` + }, + update: jasmine.createSpy() + } as any; + fixture.detectChanges(); + + expect(component.context.queryFragments[component.id]).toBe(''); + expect(component.context.update).not.toHaveBeenCalled(); + }); }); diff --git a/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.ts b/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.ts index bc5ab827ce..03ecf8579c 100644 --- a/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.ts +++ b/lib/content-services/src/lib/search/components/search-check-list/search-check-list.component.ts @@ -49,7 +49,7 @@ export class SearchCheckListComponent implements SearchWidget, OnInit { context?: SearchQueryBuilderService; options: SearchFilterList; operator: string = 'OR'; - startValue: SearchListOption = null; + startValue: string; pageSize = 5; isActive = false; enableChangeUpdate = true; @@ -72,6 +72,10 @@ export class SearchCheckListComponent implements SearchWidget, OnInit { if (this.startValue) { this.setValue(this.startValue); + } else { + if (this.id && this.context) { + this.context.queryFragments[this.id] = ''; + } } } diff --git a/lib/content-services/src/lib/search/components/search-text/search-text.component.spec.ts b/lib/content-services/src/lib/search/components/search-text/search-text.component.spec.ts index 24d5cfdbf1..850ac804e5 100644 --- a/lib/content-services/src/lib/search/components/search-text/search-text.component.spec.ts +++ b/lib/content-services/src/lib/search/components/search-text/search-text.component.spec.ts @@ -119,4 +119,25 @@ describe('SearchTextComponent', () => { expect(component.value).toBe(''); expect(component.context.queryFragments[component.id]).toBe(''); }); + + it('should update query with startValue on init, if provided', () => { + spyOn(component.context, 'update'); + component.startValue = 'mock-start-value'; + fixture.detectChanges(); + + expect(component.context.queryFragments[component.id]).toBe(`cm:name:'mock-start-value'`); + expect(component.value).toBe('mock-start-value'); + expect(component.context.update).toHaveBeenCalled(); + }); + + it('should parse value and set query context as blank, and not call query update, if no start value was provided', () => { + component.context.queryFragments[component.id] = `cm:name:'secret.pdf'`; + spyOn(component.context, 'update'); + component.startValue = undefined; + fixture.detectChanges(); + + expect(component.context.queryFragments[component.id]).toBe(''); + expect(component.value).toBe('secret.pdf'); + expect(component.context.update).not.toHaveBeenCalled(); + }); }); diff --git a/lib/content-services/src/lib/search/components/search-text/search-text.component.ts b/lib/content-services/src/lib/search/components/search-text/search-text.component.ts index 02002ba017..cea0b98959 100644 --- a/lib/content-services/src/lib/search/components/search-text/search-text.component.ts +++ b/lib/content-services/src/lib/search/components/search-text/search-text.component.ts @@ -64,6 +64,10 @@ export class SearchTextComponent implements SearchWidget, OnInit { if (this.startValue) { this.setValue(this.startValue); + } else { + if (this.context?.queryFragments) { + this.context.queryFragments[this.id] = ''; + } } } }