active_shipping 1.4.2 → 1.4.3

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: e2b3b32ee4d3b2d4cfc793fac7a4ce1c9acf9f16
4
- data.tar.gz: 47b3f13704ccf330f1e53ada4ce01567f2ea0c06
3
+ metadata.gz: 787a6c033d0e874b93023c65650dd231b14388e3
4
+ data.tar.gz: eabb0d27b5948b93fc80f413002f41b3c9650809
5
5
  SHA512:
6
- metadata.gz: fad1a5e48bb0aac07af0553f33d99a4a39ed01f7facf948404454af8b3a86649d0f5ae2077415780935b8631f6ffd58dcd353196e2eb2bceb12f04216a0d5e53
7
- data.tar.gz: b8ea54fe809c44fbadb0802eeed34f73d729b8b1597f5e039e1a48ef417860c41b5ba730adcc8dc833753d3482c2e8d44344cddb1de86c83ce35f9b44d30f952
6
+ metadata.gz: 9b6b88bfd80ceca470c6b6246045aafe48c68778e74fe3d4993c285f0abb11d18e083b68639011cc0676d33939fc52afb4c3f9e64d0d4d8c6efab55f9ca0ba65
7
+ data.tar.gz: dc4afa712eb251fb20f251743f0b6c64c805e97c643c1735dd8142241994d35e554aec863edab5f2cd1db45ad93f5cb709e63287b4194033a13e0bbe9faf74a4
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # ActiveShipping CHANGELOG
2
2
 
3
+ ### v1.4.3
4
+
5
+ - Fix UPS SurePost for < 1 pound packages
6
+ - Use status type code in UPS tracking
7
+ - Fix USPS and Fedex remote tests
8
+
3
9
  ### v1.4.2
4
10
 
5
11
  - Fix USPS rates for commercial shipments
@@ -650,11 +650,19 @@ module ActiveShipping
650
650
  end
651
651
 
652
652
  xml.PackageWeight do
653
+ if (options[:service] || options[:service_code]) == DEFAULT_SERVICE_NAME_TO_CODE["UPS SurePost (USPS) < 1lb"]
654
+ # SurePost < 1lb uses OZS, not LBS
655
+ code = options[:imperial] ? 'OZS' : 'KGS'
656
+ weight = options[:imperial] ? package.oz : package.kgs
657
+ else
658
+ code = options[:imperial] ? 'LBS' : 'KGS'
659
+ weight = options[:imperial] ? package.lbs : package.kgs
660
+ end
653
661
  xml.UnitOfMeasurement do
654
- xml.Code(options[:imperial] ? 'LBS' : 'KGS')
662
+ xml.Code(code)
655
663
  end
656
664
 
657
- value = ((options[:imperial] ? package.lbs : package.kgs).to_f * 1000).round / 1000.0 # 3 decimals
665
+ value = ((weight).to_f * 1000).round / 1000.0 # 3 decimals
658
666
  xml.Weight([value, 0.1].max)
659
667
  end
660
668
 
@@ -764,9 +772,10 @@ module ActiveShipping
764
772
  unless activities.empty?
765
773
  shipment_events = activities.map do |activity|
766
774
  description = activity.at('Status/StatusType/Description').text
775
+ type_code = activity.at('Status/StatusType/Code').text
767
776
  zoneless_time = parse_ups_datetime(:time => activity.at('Time'), :date => activity.at('Date'))
768
777
  location = location_from_address_node(activity.at('ActivityLocation/Address'))
769
- ShipmentEvent.new(description, zoneless_time, location)
778
+ ShipmentEvent.new(description, zoneless_time, location, nil, type_code)
770
779
  end
771
780
 
772
781
  shipment_events = shipment_events.sort_by(&:time)
@@ -776,7 +785,7 @@ module ActiveShipping
776
785
  # This adds an origin event to the shipment activity in such cases.
777
786
  if origin && !(shipment_events.count == 1 && status == :delivered)
778
787
  first_event = shipment_events[0]
779
- origin_event = ShipmentEvent.new(first_event.name, first_event.time, origin)
788
+ origin_event = ShipmentEvent.new(first_event.name, first_event.time, origin, first_event.message, first_event.type_code)
780
789
 
781
790
  if within_same_area?(origin, first_event.location)
782
791
  shipment_events[0] = origin_event
@@ -795,7 +804,7 @@ module ActiveShipping
795
804
  unless destination
796
805
  destination = shipment_events[-1].location
797
806
  end
798
- shipment_events[-1] = ShipmentEvent.new(shipment_events.last.name, shipment_events.last.time, destination)
807
+ shipment_events[-1] = ShipmentEvent.new(shipment_events.last.name, shipment_events.last.time, destination, shipment_events.last.message, shipment_events.last.type_code)
799
808
  end
800
809
  end
801
810
 
@@ -22,11 +22,9 @@ module ActiveShipping
22
22
 
23
23
  TEST_DOMAINS = { # indexed by security; e.g. TEST_DOMAINS[USE_SSL[:rates]]
24
24
  true => 'secure.shippingapis.com',
25
- false => 'testing.shippingapis.com'
25
+ false => 'stg-production.shippingapis.com'
26
26
  }
27
27
 
28
- TEST_RESOURCE = 'ShippingAPITest.dll'
29
-
30
28
  API_CODES = {
31
29
  :us_rates => 'RateV4',
32
30
  :world_rates => 'IntlRateV2',
@@ -684,8 +682,7 @@ module ActiveShipping
684
682
  def request_url(action, request, test)
685
683
  scheme = USE_SSL[action] ? 'https://' : 'http://'
686
684
  host = test ? TEST_DOMAINS[USE_SSL[action]] : LIVE_DOMAIN
687
- resource = test ? TEST_RESOURCE : LIVE_RESOURCE
688
- "#{scheme}#{host}/#{resource}?API=#{API_CODES[action]}&XML=#{URI.encode(request)}"
685
+ "#{scheme}#{host}/#{LIVE_RESOURCE}?API=#{API_CODES[action]}&XML=#{URI.encode(request)}"
689
686
  end
690
687
 
691
688
  def strip_zip(zip)
@@ -1,3 +1,3 @@
1
1
  module ActiveShipping
2
- VERSION = "1.4.2"
2
+ VERSION = "1.4.3"
3
3
  end
data/test/credentials.yml CHANGED
@@ -21,6 +21,13 @@ ups:
21
21
  origin_account: <%= ENV['ACTIVESHIPPING_UPS_ORIGIN_ACCOUNT'] %>
22
22
  origin_name: <%= ENV['ACTIVESHIPPING_UPS_ORIGIN_NAME'] %>
23
23
 
24
+ ups_surepost:
25
+ login: <%= ENV['ACTIVESHIPPING_UPS_SUREPOST_LOGIN'] %>
26
+ key: <%= ENV['ACTIVESHIPPING_UPS_SUREPOST_KEY'] %>
27
+ password: <%= ENV['ACTIVESHIPPING_UPS_SUREPOST_PASSWORD'] %>
28
+ origin_account: <%= ENV['ACTIVESHIPPING_UPS_SUREPOST_ORIGIN_ACCOUNT'] %>
29
+ origin_name: <%= ENV['ACTIVESHIPPING_UPS_SUREPOST_ORIGIN_NAME'] %>
30
+
24
31
  ups_third_party_billing:
25
32
  account: <%= ENV['ACTIVESHIPPING_UPS_THIRD_PARTY_BILLING_ACCOUNT'] %>
26
33
  zip: <%= ENV['ACTIVESHIPPING_UPS_THIRD_PARTY_BILLING_POSTAL_CODE'] %>
@@ -216,28 +216,32 @@ class RemoteFedExTest < Minitest::Test
216
216
  ### find_tracking_info
217
217
 
218
218
  def test_find_tracking_info_for_delivered_shipment
219
- # unfortunately, we have to use Fedex unique identifiers, because the test tracking numbers are overloaded.
220
- response = @carrier.find_tracking_info('123456789012', unique_identifier: '2457178000~123456789012~FX')
219
+ response = @carrier.find_tracking_info('122816215025810')
221
220
  assert response.success?
222
221
  assert response.delivered?
223
- assert_equal '123456789012', response.tracking_number
222
+ assert_equal '122816215025810', response.tracking_number
224
223
  assert_equal :delivered, response.status
225
224
  assert_equal 'DL', response.status_code
226
225
  assert_equal "Delivered", response.status_description
227
226
 
228
- assert_equal Time.parse('2015-06-04 18:19:00 +0000'), response.ship_time
227
+ assert_equal Time.parse('Fri, 03 Jan 2014'), response.ship_time
229
228
  assert_equal nil, response.scheduled_delivery_date
230
- assert_equal Time.parse('2015-06-08 23:33:00 +0000'), response.actual_delivery_date
229
+ assert_equal Time.parse('2014-01-09 18:31:00 +0000'), response.actual_delivery_date
231
230
 
232
- assert_equal nil, response.origin
231
+ origin_address = ActiveShipping::Location.new(
232
+ city: 'SPOKANE',
233
+ country: 'US',
234
+ state: 'WA'
235
+ )
236
+ assert_equal origin_address.to_hash, response.origin.to_hash
233
237
 
234
238
  destination_address = ActiveShipping::Location.new(
235
- city: 'unknown',
239
+ city: 'NORTON',
236
240
  country: 'US',
237
- state: 'TN'
241
+ state: 'VA'
238
242
  )
239
243
  assert_equal destination_address.to_hash, response.destination.to_hash
240
- assert_equal 1, response.shipment_events.length
244
+ assert_equal 11, response.shipment_events.length
241
245
  end
242
246
 
243
247
  def test_find_tracking_info_for_in_transit_shipment_1
@@ -293,7 +297,7 @@ class RemoteFedExTest < Minitest::Test
293
297
 
294
298
  def test_find_tracking_info_not_found
295
299
  assert_raises(ActiveShipping::ShipmentNotFound) do
296
- @carrier.find_tracking_info('123456789013')
300
+ @carrier.find_tracking_info('199997777713')
297
301
  end
298
302
  end
299
303
 
@@ -0,0 +1,33 @@
1
+ require 'test_helper'
2
+
3
+ class RemoteUPSSurepostTest < Minitest::Test
4
+ include ActiveShipping::Test::Credentials
5
+ include ActiveShipping::Test::Fixtures
6
+
7
+ def setup
8
+ @options = credentials(:ups_surepost).merge(:test => true)
9
+ @carrier = UPS.new(@options)
10
+ rescue NoCredentialsFound => e
11
+ skip(e.message)
12
+ end
13
+
14
+ def test_obtain_surpost_less_than_one_lb_shipping_label
15
+ response = @carrier.create_shipment(
16
+ location_fixtures[:beverly_hills],
17
+ location_fixtures[:new_york_with_name],
18
+ package_fixtures.values_at(:small_half_pound),
19
+ {
20
+ :test => true,
21
+ :service_code => "92"
22
+ }
23
+ )
24
+
25
+ assert response.success?
26
+
27
+ # All behavior specific to how a LabelResponse behaves in the
28
+ # context of UPS label data is a matter for unit tests. If
29
+ # the data changes substantially, the create_shipment
30
+ # ought to raise an exception and this test will fail.
31
+ assert_instance_of ActiveShipping::LabelResponse, response
32
+ end
33
+ end
@@ -12,7 +12,7 @@ class RemoteUSPSTest < Minitest::Test
12
12
  end
13
13
 
14
14
  def test_tracking
15
- response = @carrier.find_tracking_info('LN284529912US', :test => true)
15
+ response = @carrier.find_tracking_info('LN284529912US', test: false)
16
16
  assert response.success?, response.message
17
17
  assert_equal 9,response.shipment_events.size
18
18
  assert_equal 'DELIVERED', response.shipment_events.last.message
@@ -21,7 +21,7 @@ class RemoteUSPSTest < Minitest::Test
21
21
 
22
22
  def test_tracking_with_bad_number
23
23
  assert_raises(ResponseError) do
24
- @carrier.find_tracking_info('abc123xyz')
24
+ @carrier.find_tracking_info('abc123xyz', test: false)
25
25
  end
26
26
  end
27
27
 
@@ -128,6 +128,12 @@ class UPSTest < Minitest::Test
128
128
  "DELIVERED"], response.shipment_events.map(&:name)
129
129
  end
130
130
 
131
+ def test_find_tracking_info_should_have_correct_type_codes_for_shipment_events
132
+ @carrier.expects(:commit).returns(@tracking_response)
133
+ response = @carrier.find_tracking_info('1Z5FX0076803466397')
134
+ assert_equal ["M", "I", "I", "I", "I", "I", "I", "D"], response.shipment_events.map(&:type_code)
135
+ end
136
+
131
137
  def test_add_origin_and_destination_data_to_shipment_events_where_appropriate
132
138
  @carrier.expects(:commit).returns(@tracking_response)
133
139
  response = @carrier.find_tracking_info('1Z5FX0076803466397')
@@ -536,4 +542,36 @@ class UPSTest < Minitest::Test
536
542
  def test_maximum_address_field_length
537
543
  assert_equal 35, @carrier.maximum_address_field_length
538
544
  end
545
+
546
+ def test_package_surepost_less_than_one_lb_service
547
+ xml_builder = Nokogiri::XML::Builder.new do |xml|
548
+ @carrier.send(:build_package_node,
549
+ xml,
550
+ package_fixtures[:small_half_pound],
551
+ {
552
+ :service => "92",
553
+ :imperial => true
554
+ }
555
+ )
556
+ end
557
+ request = Nokogiri::XML(xml_builder.to_xml)
558
+ assert_equal 'OZS', request.search('/Package/PackageWeight/UnitOfMeasurement/Code').text
559
+ assert_equal '8.0', request.search('/Package/PackageWeight/Weight').text
560
+ end
561
+
562
+ def test_package_surepost_less_than_one_lb_service_code
563
+ xml_builder = Nokogiri::XML::Builder.new do |xml|
564
+ @carrier.send(:build_package_node,
565
+ xml,
566
+ package_fixtures[:small_half_pound],
567
+ {
568
+ :service_code => "92",
569
+ :imperial => true
570
+ }
571
+ )
572
+ end
573
+ request = Nokogiri::XML(xml_builder.to_xml)
574
+ assert_equal 'OZS', request.search('/Package/PackageWeight/UnitOfMeasurement/Code').text
575
+ assert_equal '8.0', request.search('/Package/PackageWeight/Weight').text
576
+ end
539
577
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_shipping
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 1.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - James MacAulay
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2015-07-13 00:00:00.000000000 Z
14
+ date: 2015-08-11 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: quantified
@@ -371,6 +371,7 @@ files:
371
371
  - test/remote/new_zealand_post_test.rb
372
372
  - test/remote/shipwire_test.rb
373
373
  - test/remote/stamps_test.rb
374
+ - test/remote/ups_surepost_test.rb
374
375
  - test/remote/ups_test.rb
375
376
  - test/remote/usps_returns_test.rb
376
377
  - test/remote/usps_test.rb
@@ -576,6 +577,7 @@ test_files:
576
577
  - test/remote/new_zealand_post_test.rb
577
578
  - test/remote/shipwire_test.rb
578
579
  - test/remote/stamps_test.rb
580
+ - test/remote/ups_surepost_test.rb
579
581
  - test/remote/ups_test.rb
580
582
  - test/remote/usps_returns_test.rb
581
583
  - test/remote/usps_test.rb