Skip to content

Commit bec0679

Browse files
committed
fix(getlocation): dont add empty string or object to query string
1 parent 03b7458 commit bec0679

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

src/helpers/getLocation.js

+12-4
Original file line numberDiff line numberDiff line change
@@ -109,14 +109,22 @@ const getQueryString = query => {
109109
const objParts = Object.keys( query[ k ]).map( objKey => {
110110
const key = encode( `${ k }[${ objKey }]` );
111111
const value = encode( query[ k ][ objKey ]);
112-
return `${ key }=${ value }`;
113-
});
114112

115-
return objParts.length ? `${ objParts.join( '&' )}` : '';
113+
if ( value.length ) {
114+
return `${ key }=${ value }`;
115+
}
116+
117+
return null;
118+
}).filter( part => part !== null );
119+
120+
return objParts.length ? `${ objParts.join( '&' )}` : null;
116121
} else {
117122
const key = encode( `${ k }` );
118123
const value = encode( query[ k ]);
119-
return `${ key }=${ value }`;
124+
125+
if ( value.length ) {
126+
return `${ key }=${ value }`;
127+
}
120128
}
121129

122130
return null;

test/helpers/getLocation.js

+12
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,18 @@ describe( 'helper', () => {
134134
expect( getQueryString( query )).toBe( expectedQueryString );
135135
});
136136

137+
it( 'should work with an query item that has an empty value', () => {
138+
const query = { foo: '' };
139+
const expectedQueryString = '';
140+
expect( getQueryString( query )).toBe( expectedQueryString );
141+
});
142+
143+
it( 'should work with an query item that is an object and has an empty value', () => {
144+
const query = { foo: { bar: '' }};
145+
const expectedQueryString = '';
146+
expect( getQueryString( query )).toBe( expectedQueryString );
147+
});
148+
137149
it( 'should encode special characters', () => {
138150
const query = { test: 'Rock & Roll' };
139151
const expectedQueryString = '?test=Rock+%26+Roll';

0 commit comments

Comments
 (0)