quicktravel_client 2.3.0 → 2.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 12215f7e586d4dcc5d210f34eed5823f029be331
4
- data.tar.gz: b3be0ebba0bf6ae60b0f5039958e25e9f86fa1b5
3
+ metadata.gz: b5dcbf38f81c9b909173948030ab544edf2b10a6
4
+ data.tar.gz: fde0ede3e1331d355c4ee42db771e2c9f0e2e8ed
5
5
  SHA512:
6
- metadata.gz: 04283f96ff13e9e588b641d03e71d2b365c4651272a0361547fb5727d8c110e6bfe954fba1a99eec171ba7731b94f4e3469b4f7a9ae4b243bec938c2b929ef89
7
- data.tar.gz: 37ea14639851b762575c87fde07b8fe45af6711389ccd81f4b17fb912124ac2dfee4a1bf171e63035d14fb63a22838d7f6ff192e18ee24228d0f457e4cd9acda
6
+ metadata.gz: ac7e14d70db0fe8944f44f07dbdd37f5bb8825dce307b38856e1f893734956a792c692876c770014ae0f6ad347c9bdd7cbacc48a430061113c75435ec0292052
7
+ data.tar.gz: 0b4ca73328cea2f66a10f89cd005403443ebbd39f15f3385180d37f68d77548fd0fa82a7b042931dc8e81b464ba5b7c380c1b8abbeeaadf27a202208139f8d17
@@ -3,9 +3,13 @@ All notable changes to this project will be documented in this file.
3
3
  This project adheres to [Semantic Versioning](http://semver.org/).
4
4
  This changelog adheres to [Keep a CHANGELOG](http://keepachangelog.com/).
5
5
 
6
+ ## [2.3.1]
7
+ ### Fixed
8
+ - Omits empty array parameters
9
+
6
10
  ## [2.3.0]
7
11
  ### Changed
8
- - Change cache expiries
12
+ - Change cache expiries
9
13
  - Adds support for passing dates to Resource#all_with_price
10
14
 
11
15
  ### Fixed
@@ -14,21 +18,21 @@ This changelog adheres to [Keep a CHANGELOG](http://keepachangelog.com/).
14
18
 
15
19
  ## [2.2.2]
16
20
  ### Changed
17
- - Deprecates Booking#calculate_price_quote
18
- - Fix when money is nil from QT
21
+ - Deprecates Booking#calculate_price_quote
22
+ - Fix when money is nil from QT
19
23
 
20
24
  ## [2.2.1] - 2016-04-18
21
25
  ### Fixed
22
- - Adds missing require for PriceQuote adapter
26
+ - Adds missing require for PriceQuote adapter
23
27
 
24
28
  ## [2.2.0] - 2016-04-18
25
29
  ### Added
26
- - PriceQuote adapter
30
+ - PriceQuote adapter
27
31
 
28
32
  ## [2.1.0] - 2016-04-13
29
33
  ### Added
30
- - Resource categories
31
- - Products
34
+ - Resource categories
35
+ - Products
32
36
 
33
37
  ## [2.0.0] - 2016-04-08
34
38
  ### Added
@@ -3,6 +3,8 @@ require 'pp'
3
3
  require 'json'
4
4
  require 'active_support/core_ext'
5
5
  require 'money'
6
+ require 'facets/hash/recurse'
7
+ require 'facets/hash/delete_values'
6
8
 
7
9
  require 'quick_travel/config'
8
10
  require 'quick_travel/adapter_error'
@@ -247,7 +249,7 @@ module QuickTravel
247
249
  return_response_object = http_params.delete(:return_response_object)
248
250
 
249
251
  # Set default token
250
- http_params[:query] ||= query
252
+ http_params[:query] ||= FilterQuery.new(query).call
251
253
  http_params[:headers] ||= {}
252
254
  http_params[:headers]['Content-length'] = '0' if http_params[:body].blank?
253
255
  expect = http_params.delete(:expect)
@@ -313,5 +315,35 @@ module QuickTravel
313
315
  parsed_response = response.parsed_response
314
316
  parsed_response.is_a?(Hash) && parsed_response.key?('error')
315
317
  end
318
+
319
+ # HTTParty v0.14.0 introduced this change:
320
+ #
321
+ # * [allow empty array to be used as param](https://github.com/jnunemaker/httparty/pull/477)
322
+ #
323
+ # Unfortunately, when submitting an empty array as a parameter,
324
+ # Rack interprets it as an array containing an empty string:
325
+ #
326
+ # Rack::Utils.parse_nested_query('array[]=') #=> {"array"=>[""]}
327
+ #
328
+ # The workaround is to avoid sending empty arrays to Rack based web applications
329
+ class FilterQuery
330
+ def initialize(query)
331
+ @query = query
332
+ end
333
+
334
+ def call
335
+ return @query unless @query.is_a? Hash
336
+ without_empty_arrays
337
+ end
338
+
339
+ private
340
+
341
+ def without_empty_arrays
342
+ @query.recurse { |hash|
343
+ hash.delete_values([])
344
+ hash
345
+ }
346
+ end
347
+ end
316
348
  end
317
349
  end
@@ -1,3 +1,3 @@
1
1
  module QuickTravel
2
- VERSION = '2.3.0'
2
+ VERSION = '2.3.1'
3
3
  end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+ require 'quick_travel/adapter'
3
+
4
+ describe QuickTravel::Adapter do
5
+ let(:response) { double code: 200, parsed_response: parsed_response }
6
+ let(:parsed_response) { { test: true } }
7
+
8
+ before do
9
+ allow(QuickTravel::Api).to receive(:post).and_return(response)
10
+ end
11
+
12
+ context 'when the query contains empty arrays' do
13
+ let(:url) { 'http://test.quicktravel.com.au' }
14
+ let(:query) {
15
+ {
16
+ test: true,
17
+ empty_array: [],
18
+ sub_hash: { id: 42, values: [] }
19
+ }
20
+ }
21
+
22
+ before do
23
+ QuickTravel::Adapter.post_and_validate(url, query)
24
+ end
25
+
26
+ let(:expected_body) {
27
+ {
28
+ test: true,
29
+ sub_hash: { id: 42 },
30
+ access_key: an_instance_of(String)
31
+ }
32
+ }
33
+
34
+ let(:expected_params) { a_hash_including body: expected_body }
35
+
36
+ specify { expect(QuickTravel::Api).to have_received(:post).with(url, expected_params) }
37
+ end
38
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quicktravel_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Noack
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-08-09 00:00:00.000000000 Z
13
+ date: 2016-08-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: httparty
@@ -355,6 +355,7 @@ files:
355
355
  - lib/quick_travel/version.rb
356
356
  - lib/quicktravel_client.rb
357
357
  - quicktravel_client.gemspec
358
+ - spec/adapter_spec.rb
358
359
  - spec/booking_spec.rb
359
360
  - spec/country_spec.rb
360
361
  - spec/credit_card_spec.rb
@@ -436,6 +437,7 @@ signing_key:
436
437
  specification_version: 4
437
438
  summary: Booking process using QuickTravel API
438
439
  test_files:
440
+ - spec/adapter_spec.rb
439
441
  - spec/booking_spec.rb
440
442
  - spec/country_spec.rb
441
443
  - spec/credit_card_spec.rb