active_shipping 1.0.0.pre4 → 1.0.0
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 +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
|