diff options
Diffstat (limited to 'spec/frontend/filtered_search/filtered_search_manager_spec.js')
-rw-r--r-- | spec/frontend/filtered_search/filtered_search_manager_spec.js | 46 |
1 files changed, 40 insertions, 6 deletions
diff --git a/spec/frontend/filtered_search/filtered_search_manager_spec.js b/spec/frontend/filtered_search/filtered_search_manager_spec.js index 70e8b339d4b..53c726a6cea 100644 --- a/spec/frontend/filtered_search/filtered_search_manager_spec.js +++ b/spec/frontend/filtered_search/filtered_search_manager_spec.js @@ -77,7 +77,7 @@ describe('Filtered Search Manager', () => { jest.spyOn(FilteredSearchDropdownManager.prototype, 'setDropdown').mockImplementation(); }); - const initializeManager = () => { + const initializeManager = ({ useDefaultState } = {}) => { jest.spyOn(FilteredSearchManager.prototype, 'loadSearchParamsFromURL').mockImplementation(); jest.spyOn(FilteredSearchManager.prototype, 'tokenChange').mockImplementation(); jest @@ -88,7 +88,7 @@ describe('Filtered Search Manager', () => { input = document.querySelector('.filtered-search'); tokensContainer = document.querySelector('.tokens-container'); - manager = new FilteredSearchManager({ page }); + manager = new FilteredSearchManager({ page, useDefaultState }); manager.setup(); }; @@ -184,17 +184,27 @@ describe('Filtered Search Manager', () => { }); describe('search', () => { - const defaultParams = '?scope=all&utf8=%E2%9C%93&state=opened'; + const defaultParams = '?scope=all&utf8=%E2%9C%93'; + const defaultState = '&state=opened'; - beforeEach(() => { + it('should search with a single word', done => { initializeManager(); + input.value = 'searchTerm'; + + visitUrl.mockImplementation(url => { + expect(url).toEqual(`${defaultParams}&search=searchTerm`); + done(); + }); + + manager.search(); }); - it('should search with a single word', done => { + it('sets default state', done => { + initializeManager({ useDefaultState: true }); input.value = 'searchTerm'; visitUrl.mockImplementation(url => { - expect(url).toEqual(`${defaultParams}&search=searchTerm`); + expect(url).toEqual(`${defaultParams}${defaultState}&search=searchTerm`); done(); }); @@ -202,6 +212,7 @@ describe('Filtered Search Manager', () => { }); it('should search with multiple words', done => { + initializeManager(); input.value = 'awesome search terms'; visitUrl.mockImplementation(url => { @@ -213,6 +224,7 @@ describe('Filtered Search Manager', () => { }); it('should search with special characters', done => { + initializeManager(); input.value = '~!@#$%^&*()_+{}:<>,.?/'; visitUrl.mockImplementation(url => { @@ -225,7 +237,29 @@ describe('Filtered Search Manager', () => { manager.search(); }); + it('should use replacement URL for condition', done => { + initializeManager(); + tokensContainer.innerHTML = FilteredSearchSpecHelper.createTokensContainerHTML( + FilteredSearchSpecHelper.createFilterVisualTokenHTML('milestone', '=', '13', true), + ); + + visitUrl.mockImplementation(url => { + expect(url).toEqual(`${defaultParams}&milestone_title=replaced`); + done(); + }); + + manager.filteredSearchTokenKeys.conditions.push({ + url: 'milestone_title=13', + replacementUrl: 'milestone_title=replaced', + tokenKey: 'milestone', + value: '13', + operator: '=', + }); + manager.search(); + }); + it('removes duplicated tokens', done => { + initializeManager(); tokensContainer.innerHTML = FilteredSearchSpecHelper.createTokensContainerHTML(` ${FilteredSearchSpecHelper.createFilterVisualTokenHTML('label', '=', '~bug')} ${FilteredSearchSpecHelper.createFilterVisualTokenHTML('label', '=', '~bug')} |