diff --git a/demo-shell/src/app/components/search/search-result.component.ts b/demo-shell/src/app/components/search/search-result.component.ts index 53b8e3a7da..52f4ee8d8e 100644 --- a/demo-shell/src/app/components/search/search-result.component.ts +++ b/demo-shell/src/app/components/search/search-result.component.ts @@ -26,7 +26,7 @@ import { Subscription } from 'rxjs/Subscription'; selector: 'app-search-result-component', templateUrl: './search-result.component.html', styleUrls: ['./search-result.component.scss'], - providers: [SearchService] + providers: [SearchService, SearchQueryBuilderService] }) export class SearchResultComponent implements OnInit, OnDestroy { diff --git a/lib/content-services/search/search-query-builder.service.spec.ts b/lib/content-services/search/search-query-builder.service.spec.ts index 5ad22cd08b..40fb0964f7 100644 --- a/lib/content-services/search/search-query-builder.service.spec.ts +++ b/lib/content-services/search/search-query-builder.service.spec.ts @@ -27,6 +27,31 @@ describe('SearchQueryBuilder', () => { return config; }; + it('should reset to defaults', () => { + const config: SearchConfiguration = { + categories: [ + { id: 'cat1', enabled: true }, + { id: 'cat2', enabled: true } + ], + filterQueries: [ + { query: 'query1' }, + { query: 'query2' } + ] + }; + const builder = new SearchQueryBuilderService(buildConfig(config), null); + + builder.categories = []; + builder.filterQueries = []; + + expect(builder.categories.length).toBe(0); + expect(builder.filterQueries.length).toBe(0); + + builder.resetToDefaults(); + + expect(builder.categories.length).toBe(2); + expect(builder.filterQueries.length).toBe(2); + }); + it('should have empty user query by default', () => { const builder = new SearchQueryBuilderService(buildConfig({}), null); expect(builder.userQuery).toBe(''); diff --git a/lib/content-services/search/search-query-builder.service.ts b/lib/content-services/search/search-query-builder.service.ts index aeffa533df..5a260ccade 100644 --- a/lib/content-services/search/search-query-builder.service.ts +++ b/lib/content-services/search/search-query-builder.service.ts @@ -57,13 +57,24 @@ export class SearchQueryBuilderService { constructor(appConfig: AppConfigService, private alfrescoApiService: AlfrescoApiService) { this.config = appConfig.get('search'); + this.resetToDefaults(); + } + resetToDefaults() { if (this.config) { - this.categories = (this.config.categories || []).filter(category => category.enabled); - this.filterQueries = this.config.filterQueries || []; + this.categories = + (this.config.categories || []) + .filter(category => category.enabled) + .map(category => { return { ...category }; }); + + this.filterQueries = + (this.config.filterQueries || []) + .map(query => { return {...query}; }); if (this.config.sorting) { - this.sorting = this.config.sorting.defaults || []; + this.sorting = + (this.config.sorting.defaults || []) + .map(sorting => { return { ...sorting }; }); } } }