active_shipping 1.0.0.pre4 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.yardopts +0 -1
- data/CHANGELOG.md +17 -0
- data/CONTRIBUTING.md +2 -2
- data/Gemfile.activesupport32 +1 -0
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/active_shipping.gemspec +2 -2
- data/lib/active_shipping.rb +2 -3
- data/lib/active_shipping/carriers.rb +1 -0
- data/lib/active_shipping/carriers/canada_post_pws.rb +281 -266
- data/lib/active_shipping/carriers/correios.rb +285 -0
- data/lib/active_shipping/carriers/fedex.rb +205 -199
- data/lib/active_shipping/carriers/stamps.rb +218 -219
- data/lib/active_shipping/carriers/ups.rb +287 -48
- data/lib/active_shipping/carriers/usps.rb +3 -3
- data/lib/active_shipping/delivery_date_estimate.rb +21 -0
- data/lib/active_shipping/delivery_date_estimates_response.rb +11 -0
- data/lib/active_shipping/errors.rb +20 -1
- data/lib/active_shipping/location.rb +0 -5
- data/lib/active_shipping/response.rb +0 -15
- data/lib/active_shipping/version.rb +1 -1
- data/test/credentials.yml +11 -3
- data/test/fixtures/xml/correios/book_response.xml +13 -0
- data/test/fixtures/xml/correios/book_response_invalid.xml +13 -0
- data/test/fixtures/xml/correios/clothes_response.xml +43 -0
- data/test/fixtures/xml/correios/poster_response.xml +23 -0
- data/test/fixtures/xml/correios/shoes_response.xml +43 -0
- data/test/fixtures/xml/fedex/tracking_request.xml +13 -11
- data/test/fixtures/xml/fedex/tracking_response_bad_tracking_number.xml +20 -0
- data/test/fixtures/xml/fedex/tracking_response_delivered_at_door.xml +254 -0
- data/test/fixtures/xml/fedex/tracking_response_delivered_at_facility.xml +403 -0
- data/test/fixtures/xml/fedex/tracking_response_delivered_with_signature.xml +269 -0
- data/test/fixtures/xml/fedex/tracking_response_in_transit.xml +127 -0
- data/test/fixtures/xml/fedex/tracking_response_multiple_results.xml +100 -0
- data/test/fixtures/xml/fedex/tracking_response_not_found.xml +52 -0
- data/test/fixtures/xml/fedex/tracking_response_shipment_exception.xml +209 -0
- data/test/fixtures/xml/ups/delivery_dates_response.xml +140 -0
- data/test/fixtures/xml/ups/package_exceeds_maximum_length.xml +12 -0
- data/test/fixtures/xml/ups/rate_single_service.xml +54 -0
- data/test/fixtures/xml/ups/rescheduled_shipment.xml +204 -0
- data/test/fixtures/xml/ups/test_real_home_as_residential_destination_response.xml +290 -1
- data/test/fixtures/xml/usps/delivered_extended_tracking_response.xml +11 -0
- data/test/remote/canada_post_pws_platform_test.rb +35 -22
- data/test/remote/canada_post_pws_test.rb +32 -40
- data/test/remote/correios_test.rb +83 -0
- data/test/remote/fedex_test.rb +95 -13
- data/test/remote/stamps_test.rb +1 -0
- data/test/remote/ups_test.rb +77 -40
- data/test/remote/usps_test.rb +13 -1
- data/test/test_helper.rb +12 -2
- data/test/unit/carriers/canada_post_pws_rating_test.rb +66 -59
- data/test/unit/carriers/canada_post_pws_shipping_test.rb +34 -23
- data/test/unit/carriers/correios_test.rb +244 -0
- data/test/unit/carriers/fedex_test.rb +161 -156
- data/test/unit/carriers/ups_test.rb +193 -1
- data/test/unit/carriers/usps_test.rb +14 -0
- data/test/unit/location_test.rb +0 -10
- metadata +63 -46
- metadata.gz.sig +0 -0
- data/lib/vendor/test_helper.rb +0 -6
- data/lib/vendor/xml_node/README +0 -36
- data/lib/vendor/xml_node/Rakefile +0 -21
- data/lib/vendor/xml_node/benchmark/bench_generation.rb +0 -30
- data/lib/vendor/xml_node/init.rb +0 -1
- data/lib/vendor/xml_node/lib/xml_node.rb +0 -221
- data/lib/vendor/xml_node/test/test_generating.rb +0 -89
- data/lib/vendor/xml_node/test/test_parsing.rb +0 -40
- data/test/fixtures/xml/fedex/tracking_response.xml +0 -151
- data/test/fixtures/xml/fedex/tracking_response_empty_destination.xml +0 -76
- data/test/fixtures/xml/fedex/tracking_response_no_destination.xml +0 -139
- data/test/fixtures/xml/fedex/tracking_response_no_ship_time.xml +0 -150
- data/test/fixtures/xml/fedex/tracking_response_with_estimated_delivery_date.xml +0 -95
- data/test/fixtures/xml/fedex/tracking_response_with_shipper_address.xml +0 -71
data/test/remote/stamps_test.rb
CHANGED
data/test/remote/ups_test.rb
CHANGED
@@ -52,8 +52,6 @@ class RemoteUPSTest < Minitest::Test
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def test_just_country_given
|
55
|
-
skip if @options[:origin_account]
|
56
|
-
|
57
55
|
response = @carrier.find_rates(
|
58
56
|
location_fixtures[:beverly_hills],
|
59
57
|
Location.new(:country => 'CA'),
|
@@ -63,17 +61,6 @@ class RemoteUPSTest < Minitest::Test
|
|
63
61
|
refute response.rates.empty?
|
64
62
|
end
|
65
63
|
|
66
|
-
def test_just_country_given_with_origin_account_fails
|
67
|
-
skip unless @options[:origin_account]
|
68
|
-
assert_raises(ResponseError) do
|
69
|
-
@carrier.find_rates(
|
70
|
-
location_fixtures[:beverly_hills],
|
71
|
-
Location.new(:country => 'CA'),
|
72
|
-
Package.new(100, [5, 10, 20])
|
73
|
-
)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
64
|
def test_ottawa_to_beverly_hills
|
78
65
|
response = @carrier.find_rates(
|
79
66
|
location_fixtures[:ottawa],
|
@@ -109,19 +96,6 @@ class RemoteUPSTest < Minitest::Test
|
|
109
96
|
assert_nil package_rate[:rate]
|
110
97
|
end
|
111
98
|
|
112
|
-
def test_ottawa_to_us_fails_with_only_zip_and_origin_account
|
113
|
-
skip unless @options[:origin_account]
|
114
|
-
|
115
|
-
assert_raises ResponseError do
|
116
|
-
@carrier.find_rates(
|
117
|
-
location_fixtures[:ottawa],
|
118
|
-
Location.new(:country => 'US', :zip => 90210),
|
119
|
-
package_fixtures.values_at(:book, :wii),
|
120
|
-
:test => true
|
121
|
-
)
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
99
|
def test_ottawa_to_us_fails_without_zip
|
126
100
|
assert_raises(ResponseError) do
|
127
101
|
response = @carrier.find_rates(
|
@@ -134,8 +108,6 @@ class RemoteUPSTest < Minitest::Test
|
|
134
108
|
end
|
135
109
|
|
136
110
|
def test_ottawa_to_us_succeeds_with_only_zip
|
137
|
-
skip if @options[:origin_account]
|
138
|
-
|
139
111
|
response = @carrier.find_rates(
|
140
112
|
location_fixtures[:ottawa],
|
141
113
|
Location.new(:country => 'US', :zip => 90210),
|
@@ -212,19 +184,10 @@ class RemoteUPSTest < Minitest::Test
|
|
212
184
|
end
|
213
185
|
|
214
186
|
def test_obtain_shipping_label
|
215
|
-
skip '<#<RuntimeError: Could not obtain shipping label. Invalid Access License number.>>.'
|
216
|
-
|
217
|
-
# I want to provide some helpful information if this test fails.
|
218
|
-
# Perhaps it is better to skip and warn than to make an *assertion*
|
219
|
-
# about configuration?
|
220
|
-
assert @options[:origin_name].present?, "test/fixtures.yml must have a valid ups/origin_name for this test to run"
|
221
|
-
assert @options[:origin_account].present?, "test/fixtures.yml must have a valid ups/origin_account for this test to run"
|
222
|
-
|
223
|
-
|
224
187
|
response = @carrier.create_shipment(
|
225
188
|
location_fixtures[:beverly_hills],
|
226
189
|
location_fixtures[:new_york_with_name],
|
227
|
-
package_fixtures.values_at(:chocolate_stuff, :
|
190
|
+
package_fixtures.values_at(:chocolate_stuff, :small_half_pound, :american_wii),
|
228
191
|
:test => true,
|
229
192
|
:reference_number => { :value => "FOO-123", :code => "PO" }
|
230
193
|
)
|
@@ -239,8 +202,6 @@ class RemoteUPSTest < Minitest::Test
|
|
239
202
|
end
|
240
203
|
|
241
204
|
def test_obtain_shipping_label_without_dimensions
|
242
|
-
skip '<#<RuntimeError: Could not obtain shipping label. Invalid Access License number.>>.'
|
243
|
-
|
244
205
|
response = @carrier.create_shipment(
|
245
206
|
location_fixtures[:beverly_hills],
|
246
207
|
location_fixtures[:new_york_with_name],
|
@@ -256,4 +217,80 @@ class RemoteUPSTest < Minitest::Test
|
|
256
217
|
# ought to raise an exception and this test will fail.
|
257
218
|
assert_instance_of ActiveShipping::LabelResponse, response
|
258
219
|
end
|
220
|
+
|
221
|
+
def test_obtain_international_shipping_label
|
222
|
+
response = @carrier.create_shipment(
|
223
|
+
location_fixtures[:new_york_with_name],
|
224
|
+
location_fixtures[:ottawa_with_name],
|
225
|
+
package_fixtures.values_at(:books),
|
226
|
+
{
|
227
|
+
:service_code => '07',
|
228
|
+
:test => true,
|
229
|
+
}
|
230
|
+
)
|
231
|
+
|
232
|
+
assert response.success?
|
233
|
+
|
234
|
+
# All behavior specific to how a LabelResponse behaves in the
|
235
|
+
# context of UPS label data is a matter for unit tests. If
|
236
|
+
# the data changes substantially, the create_shipment
|
237
|
+
# ought to raise an exception and this test will fail.
|
238
|
+
assert_instance_of ActiveShipping::LabelResponse, response
|
239
|
+
end
|
240
|
+
|
241
|
+
def test_delivery_date_estimates_within_zip
|
242
|
+
today = Date.current
|
243
|
+
|
244
|
+
response = @carrier.get_delivery_date_estimates(
|
245
|
+
location_fixtures[:new_york_with_name],
|
246
|
+
location_fixtures[:new_york_with_name],
|
247
|
+
package_fixtures.values_at(:books),
|
248
|
+
today,
|
249
|
+
{
|
250
|
+
:test => true
|
251
|
+
}
|
252
|
+
)
|
253
|
+
|
254
|
+
assert response.success?
|
255
|
+
refute_empty response.delivery_estimates
|
256
|
+
ground_delivery_estimate = response.delivery_estimates.select {|de| de.service_name == "UPS Ground"}.first
|
257
|
+
assert_equal Date.parse(1.business_days.from_now.to_s), ground_delivery_estimate.date
|
258
|
+
end
|
259
|
+
|
260
|
+
def test_delivery_date_estimates_across_zips
|
261
|
+
today = Date.current
|
262
|
+
|
263
|
+
response = @carrier.get_delivery_date_estimates(
|
264
|
+
location_fixtures[:new_york_with_name],
|
265
|
+
location_fixtures[:real_home_as_residential],
|
266
|
+
package_fixtures.values_at(:books),
|
267
|
+
today,
|
268
|
+
{
|
269
|
+
:test => true
|
270
|
+
}
|
271
|
+
)
|
272
|
+
|
273
|
+
assert response.success?
|
274
|
+
refute_empty response.delivery_estimates
|
275
|
+
ground_delivery_estimate = response.delivery_estimates.select {|de| de.service_name == "UPS Ground"}.first
|
276
|
+
assert_equal Date.parse(3.business_days.from_now.to_s), ground_delivery_estimate.date
|
277
|
+
next_day_delivery_estimate = response.delivery_estimates.select {|de| de.service_name == "UPS Next Day Air"}.first
|
278
|
+
assert_equal Date.parse(1.business_days.from_now.to_s), next_day_delivery_estimate.date
|
279
|
+
end
|
280
|
+
|
281
|
+
def test_rate_with_single_service
|
282
|
+
response = @carrier.find_rates(
|
283
|
+
location_fixtures[:new_york_with_name],
|
284
|
+
location_fixtures[:real_home_as_residential],
|
285
|
+
package_fixtures.values_at(:books),
|
286
|
+
{
|
287
|
+
:service => UPS::DEFAULT_SERVICE_NAME_TO_CODE["UPS Ground"],
|
288
|
+
:test => true
|
289
|
+
}
|
290
|
+
)
|
291
|
+
|
292
|
+
assert response.success?
|
293
|
+
refute response.rates.empty?
|
294
|
+
assert_equal ["UPS Ground"], response.rates.map(&:service_name)
|
295
|
+
end
|
259
296
|
end
|
data/test/remote/usps_test.rb
CHANGED
@@ -201,10 +201,22 @@ class RemoteUSPSTest < Minitest::Test
|
|
201
201
|
end
|
202
202
|
end
|
203
203
|
|
204
|
-
def
|
204
|
+
def test_correct_login_passes_valid_credentials?
|
205
205
|
assert USPS.new(@usps_credentials.merge(:test => true)).valid_credentials?
|
206
206
|
end
|
207
207
|
|
208
|
+
def test_wrong_login_fails_in_valid_credentials?
|
209
|
+
refute USPS.new(:login => 'ABCDEFGHIJKL', :test => true).valid_credentials?
|
210
|
+
end
|
211
|
+
|
212
|
+
def test_blank_login_fails_in_valid_credentials?
|
213
|
+
refute USPS.new(:login => '', :test => true).valid_credentials?
|
214
|
+
end
|
215
|
+
|
216
|
+
def test_nil_login_fails_in_valid_credentials?
|
217
|
+
refute USPS.new(:login => nil, :test => true).valid_credentials?
|
218
|
+
end
|
219
|
+
|
208
220
|
def test_must_provide_login_creds_when_instantiating
|
209
221
|
assert_raises ArgumentError do
|
210
222
|
USPS.new(:test => true)
|
data/test/test_helper.rb
CHANGED
@@ -3,6 +3,7 @@ require 'bundler/setup'
|
|
3
3
|
require 'minitest/autorun'
|
4
4
|
require 'mocha/mini_test'
|
5
5
|
require 'timecop'
|
6
|
+
require 'business_time'
|
6
7
|
|
7
8
|
require 'active_shipping'
|
8
9
|
require 'logger'
|
@@ -32,7 +33,7 @@ module ActiveShipping::Test
|
|
32
33
|
|
33
34
|
def credentials(key)
|
34
35
|
data = all_credentials[key]
|
35
|
-
if data.nil? || data.all? { |k,v| v.nil? || v.empty? }
|
36
|
+
if data.nil? || data.all? { |k,v| v.nil? || v.to_s.empty? }
|
36
37
|
raise NoCredentialsFound.new(key)
|
37
38
|
end
|
38
39
|
data.symbolize_keys
|
@@ -87,7 +88,8 @@ module ActiveShipping::Test
|
|
87
88
|
:declared_value => Package.new(80, [2, 6, 12], :units => :imperial, :currency => 'USD', :value => 999.99),
|
88
89
|
:tshirts => Package.new(10 * 16, nil, :units => :imperial),
|
89
90
|
:shipping_container => Package.new(2200000, [2440, 2600, 6058], :description => '20 ft Standard Container', :units => :metric),
|
90
|
-
:largest_gold_bar => Package.new(250000, [45.5, 22.5, 17], :value => 15300000)
|
91
|
+
:largest_gold_bar => Package.new(250000, [45.5, 22.5, 17], :value => 15300000),
|
92
|
+
:books => Package.new(64, [4, 8, 6], :units => :imperial, :value => 15300000, :description => 'Books')
|
91
93
|
}
|
92
94
|
end
|
93
95
|
|
@@ -102,6 +104,14 @@ module ActiveShipping::Test
|
|
102
104
|
:postal_code => 'K1P 1J1',
|
103
105
|
:phone => '1-613-580-2400',
|
104
106
|
:fax => '1-613-580-2495'),
|
107
|
+
:ottawa_with_name => Location.new( :country => 'CA',
|
108
|
+
:province => 'ON',
|
109
|
+
:city => 'Ottawa',
|
110
|
+
:name => 'Paul Ottawa',
|
111
|
+
:address1 => '110 Laurier Avenue West',
|
112
|
+
:postal_code => 'K1P 1J1',
|
113
|
+
:phone => '1-613-580-2400',
|
114
|
+
:fax => '1-613-580-2495'),
|
105
115
|
:beverly_hills => Location.new(
|
106
116
|
:country => 'US',
|
107
117
|
:state => 'CA',
|
@@ -112,46 +112,50 @@ class CanadaPostPwsRatingTest < Minitest::Test
|
|
112
112
|
|
113
113
|
def test_build_rates_request
|
114
114
|
xml = @cp.build_rates_request(@home_params, @dest_params, [@pkg1, @pkg2], @default_options)
|
115
|
-
doc = Nokogiri
|
115
|
+
doc = Nokogiri.XML(xml)
|
116
|
+
doc.remove_namespaces!
|
116
117
|
|
117
|
-
assert_equal @default_options[:customer_number], doc.
|
118
|
-
assert_equal 'K1P1J1', doc.
|
119
|
-
assert_equal 'united-states', doc.
|
118
|
+
assert_equal @default_options[:customer_number], doc.at('//customer-number').text
|
119
|
+
assert_equal 'K1P1J1', doc.at('//origin-postal-code').text
|
120
|
+
assert_equal 'united-states', doc.at('//destination/*').name
|
120
121
|
assert !doc.xpath('//parcel-characteristics').empty?
|
121
|
-
assert_equal "3.427", doc.
|
122
|
+
assert_equal "3.427", doc.at('//parcel-characteristics//weight').text
|
122
123
|
end
|
123
124
|
|
124
125
|
def test_build_rates_request_use_carrier_customer_number
|
125
126
|
xml = @cp_customer_number.build_rates_request(@home_params, @dest_params, [@pkg1, @pkg2])
|
126
|
-
doc = Nokogiri
|
127
|
+
doc = Nokogiri.XML(xml)
|
128
|
+
doc.remove_namespaces!
|
127
129
|
|
128
|
-
assert_equal @customer_number, doc.
|
129
|
-
assert_equal 'K1P1J1', doc.
|
130
|
-
assert_equal 'united-states', doc.
|
130
|
+
assert_equal @customer_number, doc.at('//customer-number').text
|
131
|
+
assert_equal 'K1P1J1', doc.at('//origin-postal-code').text
|
132
|
+
assert_equal 'united-states', doc.at('//destination/*').name
|
131
133
|
assert !doc.xpath('//parcel-characteristics').empty?
|
132
|
-
assert_equal "3.427", doc.
|
134
|
+
assert_equal "3.427", doc.at('//parcel-characteristics//weight').text
|
133
135
|
end
|
134
136
|
|
135
137
|
def test_build_rates_request_override_carrier_customer_number
|
136
138
|
xml = @cp_customer_number.build_rates_request(@home_params, @dest_params, [@pkg1, @pkg2], @default_options)
|
137
|
-
doc = Nokogiri
|
138
|
-
|
139
|
-
|
140
|
-
assert_equal
|
141
|
-
assert_equal '
|
142
|
-
|
143
|
-
|
139
|
+
doc = Nokogiri.XML(xml)
|
140
|
+
doc.remove_namespaces!
|
141
|
+
|
142
|
+
assert_equal @default_options[:customer_number], doc.at('//customer-number').text
|
143
|
+
assert_equal 'K1P1J1', doc.at('//origin-postal-code').text
|
144
|
+
assert_equal 'united-states', doc.at('//destination/*').name
|
145
|
+
assert doc.at('//parcel-characteristics')
|
146
|
+
assert_equal "3.427", doc.at('//parcel-characteristics//weight').text
|
144
147
|
end
|
145
148
|
|
146
149
|
def test_build_rates_request_location_object
|
147
150
|
xml = @cp.build_rates_request(Location.new(@home_params), Location.new(@dest_params), [@pkg1, @pkg2], @default_options)
|
148
|
-
doc = Nokogiri
|
151
|
+
doc = Nokogiri.XML(xml)
|
152
|
+
doc.remove_namespaces!
|
149
153
|
|
150
|
-
assert_equal @default_options[:customer_number], doc.
|
151
|
-
assert_equal 'K1P1J1', doc.
|
152
|
-
assert_equal 'united-states', doc.
|
154
|
+
assert_equal @default_options[:customer_number], doc.at('//customer-number').text
|
155
|
+
assert_equal 'K1P1J1', doc.at('//origin-postal-code').text
|
156
|
+
assert_equal 'united-states', doc.at('//destination/*').name
|
153
157
|
assert !doc.xpath('//parcel-characteristics').empty?
|
154
|
-
assert_equal "3.427", doc.
|
158
|
+
assert_equal "3.427", doc.at('//parcel-characteristics//weight').text
|
155
159
|
end
|
156
160
|
|
157
161
|
def test_build_rates_request_domestic
|
@@ -166,11 +170,12 @@ class CanadaPostPwsRatingTest < Minitest::Test
|
|
166
170
|
:postal_code => 'V5J 1J1'
|
167
171
|
}
|
168
172
|
xml = @cp.build_rates_request(@home_params, @dest_params, [@pkg1, @pkg2], @default_options)
|
169
|
-
doc = Nokogiri
|
173
|
+
doc = Nokogiri.XML(xml)
|
174
|
+
doc.remove_namespaces!
|
170
175
|
|
171
|
-
assert_equal 'K1P1J1', doc.
|
172
|
-
assert_equal 'domestic', doc.
|
173
|
-
assert_equal 'V5J1J1', doc.
|
176
|
+
assert_equal 'K1P1J1', doc.at('//origin-postal-code').text
|
177
|
+
assert_equal 'domestic', doc.at('//destination/*').name
|
178
|
+
assert_equal 'V5J1J1', doc.at('//destination//postal-code').text
|
174
179
|
end
|
175
180
|
|
176
181
|
def test_build_rates_request_international
|
@@ -183,89 +188,91 @@ class CanadaPostPwsRatingTest < Minitest::Test
|
|
183
188
|
:country => 'JP'
|
184
189
|
}
|
185
190
|
xml = @cp.build_rates_request(@home_params, @dest_params, [@pkg1, @pkg2], @default_options)
|
186
|
-
doc = Nokogiri
|
191
|
+
doc = Nokogiri.XML(xml)
|
192
|
+
doc.remove_namespaces!
|
187
193
|
|
188
|
-
assert_equal 'K1P1J1', doc.xpath('//origin-postal-code').
|
189
|
-
assert_equal 'international', doc.
|
190
|
-
assert_equal 'JP', doc.
|
194
|
+
assert_equal 'K1P1J1', doc.xpath('//origin-postal-code').text
|
195
|
+
assert_equal 'international', doc.at('//destination/*').name
|
196
|
+
assert_equal 'JP', doc.at('//destination//country-code').text
|
191
197
|
end
|
192
198
|
|
193
199
|
def test_build_rates_request_with_cod_option
|
194
200
|
opts = @default_options.merge(:cod => true, :cod_amount => 12.05)
|
195
201
|
xml = @cp.build_rates_request(@home_params, @dest_params, [@pkg1, @pkg2], opts)
|
196
|
-
doc = Nokogiri
|
197
|
-
|
198
|
-
assert_equal 'COD', doc.xpath('//options/option').
|
199
|
-
assert_equal '12.05', doc.xpath('//options/option').
|
202
|
+
doc = Nokogiri.XML(xml)
|
203
|
+
doc.remove_namespaces!
|
204
|
+
assert_equal 'COD', doc.xpath('//options/option/option-code').text
|
205
|
+
assert_equal '12.05', doc.xpath('//options/option/option-amount').text
|
200
206
|
end
|
201
207
|
|
202
208
|
def test_build_rates_request_with_signature_option
|
203
209
|
opts = @default_options.merge(:so => true)
|
204
210
|
xml = @cp.build_rates_request(@home_params, @dest_params, [@pkg1, @pkg2], opts)
|
205
|
-
doc = Nokogiri
|
206
|
-
|
207
|
-
assert_equal 'SO', doc.
|
211
|
+
doc = Nokogiri.XML(xml)
|
212
|
+
doc.remove_namespaces!
|
213
|
+
assert_equal 'SO', doc.at('//options/option/option-code').text
|
208
214
|
end
|
209
215
|
|
210
216
|
def test_build_rates_request_with_insurance_option
|
211
217
|
opts = @default_options.merge(:cov => true, :cov_amount => 122.05)
|
212
218
|
xml = @cp.build_rates_request(@home_params, @dest_params, [@pkg1, @pkg2], opts)
|
213
|
-
doc = Nokogiri
|
214
|
-
|
215
|
-
assert_equal 'COV', doc.
|
216
|
-
assert_equal '122.05', doc.
|
219
|
+
doc = Nokogiri.XML(xml)
|
220
|
+
doc.remove_namespaces!
|
221
|
+
assert_equal 'COV', doc.at('//options/option/option-code').text
|
222
|
+
assert_equal '122.05', doc.at('//options/option/option-amount').text
|
217
223
|
end
|
218
224
|
|
219
225
|
def test_build_rates_request_with_other_options
|
220
226
|
opts = @default_options.merge(:pa18 => true, :pa19 => true, :hfp => true, :dns => true, :lad => true)
|
221
227
|
xml = @cp.build_rates_request(@home_params, @dest_params, [@pkg1, @pkg2], opts)
|
222
|
-
doc = Nokogiri
|
223
|
-
|
224
|
-
options = doc.xpath('//options/option').map(&:
|
228
|
+
doc = Nokogiri.XML(xml)
|
229
|
+
doc.remove_namespaces!
|
230
|
+
options = doc.xpath('//options/option/option-code').map(&:text).sort
|
225
231
|
assert_equal %w(PA18 PA19 HFP DNS LAD).sort, options
|
226
232
|
end
|
227
233
|
|
228
234
|
def test_build_rates_request_with_single_item
|
229
235
|
opts = @default_options
|
230
236
|
xml = @cp.build_rates_request(@home_params, @dest_params, [@pkg1], opts)
|
231
|
-
doc = Nokogiri
|
232
|
-
|
233
|
-
assert_equal '0.025', doc.
|
237
|
+
doc = Nokogiri.XML(xml)
|
238
|
+
doc.remove_namespaces!
|
239
|
+
assert_equal '0.025', doc.at('//parcel-characteristics/weight').text
|
234
240
|
end
|
235
241
|
|
236
242
|
def test_build_rates_request_with_mailing_tube
|
237
243
|
pkg = Package.new(25, [93, 10], :cylinder => true)
|
238
244
|
opts = @default_options
|
239
245
|
xml = @cp.build_rates_request(@home_params, @dest_params, [pkg], opts)
|
240
|
-
doc = Nokogiri
|
241
|
-
|
242
|
-
assert_equal 'true', doc.
|
246
|
+
doc = Nokogiri.XML(xml)
|
247
|
+
doc.remove_namespaces!
|
248
|
+
assert_equal 'true', doc.at('//parcel-characteristics/mailing-tube').text
|
243
249
|
end
|
244
250
|
|
245
251
|
def test_build_rates_request_with_oversize
|
246
252
|
pkg = Package.new(25, [93, 10], :oversized => true)
|
247
253
|
opts = @default_options
|
248
254
|
xml = @cp.build_rates_request(@home_params, @dest_params, [pkg], opts)
|
249
|
-
doc = Nokogiri
|
250
|
-
|
251
|
-
assert_equal 'true', doc.
|
255
|
+
doc = Nokogiri.XML(xml)
|
256
|
+
doc.remove_namespaces!
|
257
|
+
assert_equal 'true', doc.at('//parcel-characteristics/oversized').text
|
252
258
|
end
|
253
259
|
|
254
260
|
def test_build_rates_request_with_unpackaged
|
255
261
|
pkg = Package.new(25, [93, 10], :unpackaged => true)
|
256
262
|
opts = @default_options
|
257
263
|
xml = @cp.build_rates_request(@home_params, @dest_params, [pkg], opts)
|
258
|
-
doc = Nokogiri
|
259
|
-
|
260
|
-
assert_equal 'true', doc.
|
264
|
+
doc = Nokogiri.XML(xml)
|
265
|
+
doc.remove_namespaces!
|
266
|
+
assert_equal 'true', doc.at('//parcel-characteristics/unpackaged').text
|
261
267
|
end
|
262
268
|
|
263
269
|
def test_build_rates_request_with_zero_weight
|
264
270
|
options = @default_options.merge(@shipping_opts1)
|
265
271
|
line_items = [Package.new(0, [93, 10]), Package.new(0, [10, 10])]
|
266
|
-
|
267
|
-
doc = Nokogiri
|
268
|
-
|
272
|
+
xml = @cp.build_rates_request(@home_params, @dest_params, line_items, options)
|
273
|
+
doc = Nokogiri.XML(xml)
|
274
|
+
doc.remove_namespaces!
|
275
|
+
assert_equal '0.001', doc.at('//parcel-characteristics/weight').text
|
269
276
|
end
|
270
277
|
|
271
278
|
# parse response
|