From b9a8bfb2bd3fcd51065fa7c821ab546ae604df5b Mon Sep 17 00:00:00 2001 From: Yura Bondarenko Date: Tue, 4 May 2021 10:44:06 +0200 Subject: [PATCH] 78991: Also test SearchOptions.fixedFilter --- .../search/paginated-search-options.model.spec.ts | 5 ++++- src/app/shared/search/search-options.model.spec.ts | 10 +++++++++- src/app/shared/search/search-options.model.ts | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/app/shared/search/paginated-search-options.model.spec.ts b/src/app/shared/search/paginated-search-options.model.spec.ts index 2b8fe7aeb5..0523e2b139 100644 --- a/src/app/shared/search/paginated-search-options.model.spec.ts +++ b/src/app/shared/search/paginated-search-options.model.spec.ts @@ -13,6 +13,7 @@ describe('PaginatedSearchOptions', () => { new SearchFilter('f.example', ['another value', 'second value']), new SearchFilter('f.range', ['[2002 TO 2021]'], 'equals'), ]; + const fixedFilter = 'f.fixed=1234 5678,equals'; const query = 'search query'; const scope = '0fde1ecb-82cc-425a-b600-ac3576d76b47'; const baseUrl = 'www.rest.com'; @@ -23,7 +24,8 @@ describe('PaginatedSearchOptions', () => { filters: filters, query: query, scope: scope, - dsoTypes: [DSpaceObjectType.ITEM] + dsoTypes: [DSpaceObjectType.ITEM], + fixedFilter: fixedFilter, }); }); @@ -35,6 +37,7 @@ describe('PaginatedSearchOptions', () => { 'sort=test.field,DESC&' + 'page=0&' + 'size=40&' + + 'f.fixed=1234%205678,equals&' + 'query=search%20query&' + 'scope=0fde1ecb-82cc-425a-b600-ac3576d76b47&' + 'dsoType=ITEM&' + diff --git a/src/app/shared/search/search-options.model.spec.ts b/src/app/shared/search/search-options.model.spec.ts index d20ebac6bf..7fb73daa40 100644 --- a/src/app/shared/search/search-options.model.spec.ts +++ b/src/app/shared/search/search-options.model.spec.ts @@ -11,11 +11,18 @@ describe('SearchOptions', () => { new SearchFilter('f.example', ['another value', 'second value']), new SearchFilter('f.range', ['[2002 TO 2021]'], 'equals'), ]; + const fixedFilter = 'f.fixed=1234 5678,equals'; const query = 'search query'; const scope = '0fde1ecb-82cc-425a-b600-ac3576d76b47'; const baseUrl = 'www.rest.com'; beforeEach(() => { - options = new SearchOptions({ filters: filters, query: query, scope: scope, dsoTypes: [DSpaceObjectType.ITEM] }); + options = new SearchOptions({ + filters: filters, + query: query, + scope: scope, + dsoTypes: [DSpaceObjectType.ITEM], + fixedFilter: fixedFilter, + }); }); describe('when toRestUrl is called', () => { @@ -23,6 +30,7 @@ describe('SearchOptions', () => { it('should generate a string with all parameters that are present', () => { const outcome = options.toRestUrl(baseUrl); expect(outcome).toEqual('www.rest.com?' + + 'f.fixed=1234%205678,equals&' + 'query=search%20query&' + 'scope=0fde1ecb-82cc-425a-b600-ac3576d76b47&' + 'dsoType=ITEM&' + diff --git a/src/app/shared/search/search-options.model.ts b/src/app/shared/search/search-options.model.ts index fad4002caf..4f56e48534 100644 --- a/src/app/shared/search/search-options.model.ts +++ b/src/app/shared/search/search-options.model.ts @@ -45,7 +45,7 @@ export class SearchOptions { const match = this.fixedFilter.match(/^([^=]+=)(.+)$/); if (match) { - fixedFilter = match[1] + encodeURIComponent(match[2]); + fixedFilter = match[1] + encodeURIComponent(match[2]).replace(/%2C/g, ','); } else { fixedFilter = encodeURIComponent(this.fixedFilter); }