Commit a2d470d2 authored by Kushal Pandya's avatar Kushal Pandya

Merge branch 'fe-fix-merge-url-params-with-plus' into 'master'

Fix `mergeUrlParams` handling of '+'

Closes #66152

See merge request gitlab-org/gitlab-ce!31973
parents f77d1743 cacf128d
import { join as joinPaths } from 'path'; import { join as joinPaths } from 'path';
// Returns a decoded url parameter value
// - Treats '+' as '%20'
function decodeUrlParameter(val) {
return decodeURIComponent(val.replace(/\+/g, '%20'));
}
// Returns an array containing the value(s) of the // Returns an array containing the value(s) of the
// of the key passed as an argument // of the key passed as an argument
export function getParameterValues(sParam, url = window.location) { export function getParameterValues(sParam, url = window.location) {
...@@ -30,7 +36,7 @@ export function mergeUrlParams(params, url) { ...@@ -30,7 +36,7 @@ export function mergeUrlParams(params, url) {
.forEach(part => { .forEach(part => {
if (part.length) { if (part.length) {
const kv = part.split('='); const kv = part.split('=');
merged[decodeURIComponent(kv[0])] = decodeURIComponent(kv.slice(1).join('=')); merged[decodeUrlParameter(kv[0])] = decodeUrlParameter(kv.slice(1).join('='));
} }
}); });
} }
......
---
title: Fix search preserving space when change branch
merge_request: 31973
author: minghuan lei
type: fixed
...@@ -39,17 +39,16 @@ describe 'User searches for code' do ...@@ -39,17 +39,16 @@ describe 'User searches for code' do
context 'when on a project page', :js do context 'when on a project page', :js do
before do before do
visit(search_path) visit(search_path)
end
include_examples 'top right search form'
it 'finds code' do
find('.js-search-project-dropdown').click find('.js-search-project-dropdown').click
page.within('.project-filter') do page.within('.project-filter') do
click_link(project.full_name) click_link(project.full_name)
end end
end
include_examples 'top right search form'
it 'finds code' do
fill_in('dashboard_search', with: 'rspec') fill_in('dashboard_search', with: 'rspec')
find('.btn-search').click find('.btn-search').click
...@@ -57,6 +56,27 @@ describe 'User searches for code' do ...@@ -57,6 +56,27 @@ describe 'User searches for code' do
expect(find(:css, '.search-results')).to have_content('Update capybara, rspec-rails, poltergeist to recent versions') expect(find(:css, '.search-results')).to have_content('Update capybara, rspec-rails, poltergeist to recent versions')
end end
end end
it 'search mutiple words with refs switching' do
expected_result = 'Use `snake_case` for naming files'
search = 'for naming files'
fill_in('dashboard_search', with: search)
find('.btn-search').click
page.within('.results') do
expect(find('.search-results')).to have_content(expected_result)
end
find('.js-project-refs-dropdown').click
find('.dropdown-page-one .dropdown-content').click_link('v1.0.0')
page.within('.results') do
expect(find(:css, '.search-results')).to have_content(expected_result)
end
expect(find_field('dashboard_search').value).to eq(search)
end
end end
context 'search code within refs', :js do context 'search code within refs', :js do
......
...@@ -94,6 +94,12 @@ describe('URL utility', () => { ...@@ -94,6 +94,12 @@ describe('URL utility', () => {
it('adds and updates encoded params', () => { it('adds and updates encoded params', () => {
expect(urlUtils.mergeUrlParams({ a: '&', q: '?' }, '?a=%23#frag')).toBe('?a=%26&q=%3F#frag'); expect(urlUtils.mergeUrlParams({ a: '&', q: '?' }, '?a=%23#frag')).toBe('?a=%26&q=%3F#frag');
}); });
it('treats "+" as "%20"', () => {
expect(urlUtils.mergeUrlParams({ ref: 'bogus' }, '?a=lorem+ipsum&ref=charlie')).toBe(
'?a=lorem%20ipsum&ref=bogus',
);
});
}); });
describe('removeParams', () => { describe('removeParams', () => {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment