Skip to content

Commit 2ae77f6

Browse files
committed
Merge pull request #514 from presidentJFK/ignoreArgumentErrorForSortInQueryMapper
Ignore argument error for sort in query mapper
2 parents edb2245 + abf413e commit 2ae77f6

2 files changed

Lines changed: 14 additions & 3 deletions

File tree

lib/webmock/util/query_mapper.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,11 @@ def values_to_query(new_query_values, options = {})
196196
end
197197
# Useful default for OAuth and caching.
198198
# Only to be used for non-Array inputs. Arrays should preserve order.
199-
new_query_values.sort!
199+
begin
200+
new_query_values.sort! # may raise for non-comparable values
201+
rescue NoMethodError, ArgumentError
202+
# ignore
203+
end
200204
end
201205

202206
buffer = ''

spec/unit/util/query_mapper_spec.rb

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,16 +93,23 @@
9393
end
9494

9595
it 'converts array values, vice versa' do
96-
query = "one%5B%5D=1&one%5B%5D=2"
96+
query = "one%5B%5D=1&one%5B%5D=2" # one[]=1&one[]=2
9797
values = {"one" => ["1","2"]}
9898
expect(subject.values_to_query values).to eq query
9999
expect(subject.query_to_values query).to eq values
100100
end
101101

102102
it 'converts hash values, vice versa' do
103-
query = "one%5Ba%5D=1&one%5Bb%5D=2"
103+
query = "one%5Ba%5D=1&one%5Bb%5D=2" # one[a]=1&one[b]=2
104104
values = {"one" => {"a" => "1", "b" => "2"}}
105105
expect(subject.values_to_query values).to eq query
106106
expect(subject.query_to_values query).to eq values
107107
end
108+
109+
it 'converts complex nested values, vice versa' do
110+
query = "one%5B%5D[foo]=bar&one%5B%5D[zoo]=car" # one[][foo]=bar&one[][zoo]=car
111+
values = {"one" => [{"foo" => "bar"}, {"zoo" => "car"}]}
112+
expect(subject.values_to_query values).to eq query
113+
expect(subject.query_to_values query).to eq values
114+
end
108115
end

0 commit comments

Comments
 (0)