diff options
author | Filipa Lacerda <lacerda.filipa@gmail.com> | 2017-01-27 20:51:30 +0000 |
---|---|---|
committer | Filipa Lacerda <lacerda.filipa@gmail.com> | 2017-01-27 20:51:30 +0000 |
commit | a5ad8a0c7f278d4970aa119b499f731b21e49dbb (patch) | |
tree | 47f68e0954630bd4740f474f145809dd9e0961f2 /spec | |
parent | 7c6c496052f97405f943e9853ae14a38d3618f99 (diff) | |
parent | 668c5bab9e9e8ba66476bf6e8806c676f69846c9 (diff) | |
download | gitlab-ce-a5ad8a0c7f278d4970aa119b499f731b21e49dbb.tar.gz |
Merge branch 'fix-search-bar-search-param' into 'master'
Fix search bar search param encoding
Closes #27398
See merge request !8753
Diffstat (limited to 'spec')
-rw-r--r-- | spec/javascripts/filtered_search/filtered_search_manager_spec.js.es6 | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/spec/javascripts/filtered_search/filtered_search_manager_spec.js.es6 b/spec/javascripts/filtered_search/filtered_search_manager_spec.js.es6 new file mode 100644 index 00000000000..c8b5c2b36ad --- /dev/null +++ b/spec/javascripts/filtered_search/filtered_search_manager_spec.js.es6 @@ -0,0 +1,68 @@ +/* global Turbolinks */ + +//= require turbolinks +//= require lib/utils/common_utils +//= require filtered_search/filtered_search_token_keys +//= require filtered_search/filtered_search_tokenizer +//= require filtered_search/filtered_search_dropdown_manager +//= require filtered_search/filtered_search_manager + +(() => { + describe('Filtered Search Manager', () => { + describe('search', () => { + let manager; + const defaultParams = '?scope=all&utf8=✓&state=opened'; + + function getInput() { + return document.querySelector('.filtered-search'); + } + + beforeEach(() => { + setFixtures(` + <input type='text' class='filtered-search' /> + `); + + spyOn(gl.FilteredSearchManager.prototype, 'bindEvents').and.callFake(() => {}); + spyOn(gl.FilteredSearchManager.prototype, 'loadSearchParamsFromURL').and.callFake(() => {}); + spyOn(gl.FilteredSearchDropdownManager.prototype, 'setDropdown').and.callFake(() => {}); + spyOn(gl.utils, 'getParameterByName').and.returnValue(null); + + manager = new gl.FilteredSearchManager(); + }); + + afterEach(() => { + getInput().outerHTML = ''; + }); + + it('should search with a single word', () => { + getInput().value = 'searchTerm'; + + spyOn(Turbolinks, 'visit').and.callFake((url) => { + expect(url).toEqual(`${defaultParams}&search=searchTerm`); + }); + + manager.search(); + }); + + it('should search with multiple words', () => { + getInput().value = 'awesome search terms'; + + spyOn(Turbolinks, 'visit').and.callFake((url) => { + expect(url).toEqual(`${defaultParams}&search=awesome+search+terms`); + }); + + manager.search(); + }); + + it('should search with special characters', () => { + getInput().value = '~!@#$%^&*()_+{}:<>,.?/'; + + spyOn(Turbolinks, 'visit').and.callFake((url) => { + expect(url).toEqual(`${defaultParams}&search=~!%40%23%24%25%5E%26*()_%2B%7B%7D%3A%3C%3E%2C.%3F%2F`); + }); + + manager.search(); + }); + }); + }); +})(); |