@@ -321,6 +321,12 @@ def test_add_or_replace_parameter(self):
321321 self .assertEqual (add_or_replace_parameter (url , 'pageurl' , 'test' ),
322322 'http://example.com/?version=1&pageurl=test¶m2=value2' )
323323
324+ url = 'http://domain/test?arg1=v1&arg2=v2&arg1=v3'
325+ self .assertEqual (add_or_replace_parameter (url , 'arg4' , 'v4' ),
326+ 'http://domain/test?arg1=v1&arg2=v2&arg1=v3&arg4=v4' )
327+ self .assertEqual (add_or_replace_parameter (url , 'arg1' , 'v3' ),
328+ 'http://domain/test?arg1=v3&arg2=v2' )
329+
324330 def test_add_or_replace_parameters (self ):
325331 url = 'http://domain/test'
326332 self .assertEqual (add_or_replace_parameters (url , {'arg' : 'v' }),
@@ -330,6 +336,17 @@ def test_add_or_replace_parameters(self):
330336 'http://domain/test?arg1=v1&arg2=v2&arg3=v3&arg4=v4' )
331337 self .assertEqual (add_or_replace_parameters (url , {'arg4' : 'v4' , 'arg3' : 'v3new' }),
332338 'http://domain/test?arg1=v1&arg2=v2&arg3=v3new&arg4=v4' )
339+ url = 'http://domain/test?arg1=v1&arg2=v2&arg1=v3'
340+ self .assertEqual (add_or_replace_parameters (url , {'arg4' : 'v4' }),
341+ 'http://domain/test?arg1=v1&arg2=v2&arg1=v3&arg4=v4' )
342+ self .assertEqual (add_or_replace_parameters (url , {'arg1' : 'v3' }),
343+ 'http://domain/test?arg1=v3&arg2=v2' )
344+
345+ def test_add_or_replace_parameters_does_not_change_input_param (self ):
346+ url = 'http://domain/test?arg=original'
347+ input_param = {'arg' : 'value' }
348+ new_url = add_or_replace_parameters (url , input_param ) # noqa
349+ self .assertEqual (input_param , {'arg' : 'value' })
333350
334351 def test_url_query_cleaner (self ):
335352 self .assertEqual ('product.html' ,
0 commit comments