shutl_resource 1.5.1 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/lib/shutl/resource/rest.rb +18 -10
- data/lib/shutl/resource/version.rb +1 -1
- data/spec/rest_resource_spec.rb +14 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MzQzZjljYzZjYmY0MjVkMmEzZTFmODIyMDU2N2UyMzQwN2I3YmVkOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZDRmODZkZTMxMWI1MjA5NWUxMzEwN2U4ZDRjODE3OGIyOWZjMGYxZA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZTgwMDY2ODUyN2E4ZGM1Y2ZkNGRjNGRkYzcxNmM4ZTAwMDRmYjhlMDI4OWUz
|
10
|
+
MmRjMDc3MGYyMzFhN2I3ZWVlOTkzYmFlNTQ1NDZjNjc3NjQ3ZWEyNzk3ZWNh
|
11
|
+
ZTEwYjdhNDc2OTgwMTkxOGRiNDAwYmJlYjhlZjkwOTY5NWYwZjY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OGZhMDY5NDZkMDA2MDAzMDAyNTBiYTIzZWQyZGFiZWM1N2QyZTY1MzQzNDI5
|
14
|
+
OTZjOWE0Mjg4N2I5NjNjNTM2ZjYyNGExODcxZGQ1OTExNzU2NThlNWJjYmVk
|
15
|
+
Zjk1MTY0NGNhMDhjM2QyYTkwYWI2NTQ5Y2JkZTdlOGU1YTk5MjE=
|
data/lib/shutl/resource/rest.rb
CHANGED
@@ -23,26 +23,26 @@ module Shutl::Resource
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def as_json(_)
|
26
|
-
|
26
|
+
resource_attributes
|
27
27
|
end
|
28
28
|
|
29
29
|
def to_json(options = nil)
|
30
30
|
{
|
31
|
-
:"#{prefix}" =>
|
31
|
+
:"#{prefix}" => resource_attributes
|
32
32
|
}.to_json(options)
|
33
33
|
end
|
34
34
|
|
35
35
|
def update_attributes(attrs)
|
36
36
|
attrs.each do |a, v|
|
37
|
-
unless String(a) == 'id' &&
|
37
|
+
unless String(a) == 'id' && resource_attributes.include?('id')
|
38
38
|
a = 'id' if String(a) == 'new_id'
|
39
|
-
|
39
|
+
resource_attributes[String(a)] = v
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
def update!(attrs, headers = {})
|
45
|
-
new_attributes =
|
45
|
+
new_attributes = resource_attributes.merge attrs
|
46
46
|
update_attributes(self.class.add_resource_id_to new_attributes)
|
47
47
|
save(headers)
|
48
48
|
end
|
@@ -56,12 +56,13 @@ module Shutl::Resource
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def method_missing(method, *args, &block)
|
59
|
-
return
|
60
|
-
|
59
|
+
return resource_attributes['id'] if String(method) == 'id'
|
60
|
+
return resource_attributes[String(args.first)] if method.to_s == '[]'
|
61
|
+
resource_attributes.fetch(String(method)) { super }
|
61
62
|
end
|
62
63
|
|
63
64
|
def respond_to? method
|
64
|
-
|
65
|
+
resource_attributes.has_key?(String(method)) ? true : super
|
65
66
|
end
|
66
67
|
|
67
68
|
def next_resource
|
@@ -77,11 +78,18 @@ module Shutl::Resource
|
|
77
78
|
end
|
78
79
|
|
79
80
|
def resource_id
|
80
|
-
instance_variable_get :"@#{self.class.resource_id_name}"
|
81
|
+
self.instance_variable_get :"@#{self.class.resource_id_name}"
|
81
82
|
end
|
82
83
|
|
83
84
|
def attributes
|
84
|
-
|
85
|
+
resource_attributes
|
86
|
+
end
|
87
|
+
|
88
|
+
def resource_attributes
|
89
|
+
unless self.instance_variables.include?(:@resource_attributes)
|
90
|
+
self.instance_variable_set(:@resource_attributes, {})
|
91
|
+
end
|
92
|
+
self.instance_variable_get :@resource_attributes
|
85
93
|
end
|
86
94
|
|
87
95
|
protected
|
data/spec/rest_resource_spec.rb
CHANGED
@@ -38,6 +38,10 @@ describe Shutl::Resource::Rest do
|
|
38
38
|
resource.a.should == 'a'
|
39
39
|
resource.b.should == 2
|
40
40
|
end
|
41
|
+
|
42
|
+
it 'always responsd to id even if there is no attribute' do
|
43
|
+
resource.id.should be_nil
|
44
|
+
end
|
41
45
|
end
|
42
46
|
|
43
47
|
context 'pagination' do
|
@@ -481,4 +485,14 @@ describe Shutl::Resource::Rest do
|
|
481
485
|
subject.respond_to?(:foo).should be_false
|
482
486
|
end
|
483
487
|
end
|
488
|
+
|
489
|
+
describe 'parses successfuly a quote' do
|
490
|
+
let(:attrs) do
|
491
|
+
{"id"=>"5283836fe4b074c20bb4f4e1-1384351475", "created_at"=>"2013-11-13T13:49+00:00", "valid_until"=>"2013-11-13T14:15+00:00", "basket_value"=>999, "distance"=>12.1, "total_weight"=>nil, "time_zone"=>"America/Chicago", "merchant"=>{"id"=>"ebay_us", "name"=>"eBay US", "shutl_account_number"=>"", "notify_updates"=>true, "notification_endpoint"=>"https://triton-alpha.ebay.com/delivery-events-qa/shutl", "hide_customer_phone_from_carrier"=>false}, "pickup_location"=>{"notes"=>"", "address"=>{"company_name"=>"eBay US", "name"=>"", "line_1"=>"929 W Belmont Ave", "line_2"=>"", "county_or_state"=>"IL", "city"=>"Chicago", "postcode"=>"60657", "country"=>"US"}, "contact"=>{"name"=>"eBay US", "email"=>"email@example.com", "phone"=>"+1 7734720500"}}, "delivery_location"=>{"address"=>{"company_name"=>"", "name"=>"Dean Chen", "line_1"=>"500 S Central Ave", "line_2"=>"", "county_or_state"=>"IL", "city"=>"Chicago", "postcode"=>"60644", "country"=>"US"}, "contact"=>{"name"=>"Dean Chen", "email"=>"zhuichen@ebay.com", "phone"=>"+1 7840536666"}}, "carrier"=>{"id"=>"united_express_systems", "name"=>"United Express Systems", "shutl_account_number"=>"", "time_zone"=>"America/Chicago", "booking_api"=>{"manual"=>false, "url"=>"http://localhost:5000", "client_key"=>"4B91C40C7480A75069790A69AE97A56A", "client_id"=>"674611e57f"}, "vehicle"=>{"id"=>"small_van", "name"=>"Small van", "reference"=>"MiniVan"}, "out_of_hours_notification"=>{}}, "times"=>{"pickup_start"=>"2013-11-13T14:15+00:00", "pickup_finish"=>"2013-11-13T17:00+00:00", "delivery_start"=>"2013-11-13T17:00+00:00", "delivery_finish"=>"2013-11-13T18:00+00:00", "delivery_sla_buffer"=>900, "sliding_amount"=>0}, "prices"=>{"merchant"=>3075, "customer"=>3075, "carrier"=>2563}, "products"=>[]}
|
492
|
+
end
|
493
|
+
|
494
|
+
subject { TestRest.new attrs }
|
495
|
+
|
496
|
+
its(:prices) { should_not be_empty }
|
497
|
+
end
|
484
498
|
end
|