active_shipping 1.14.2 → 2.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.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -25
  3. data/CHANGELOG.md +5 -0
  4. data/CONTRIBUTING.md +2 -0
  5. data/README.md +2 -8
  6. data/active_shipping.gemspec +9 -3
  7. data/gemfiles/activesupport42.gemfile +0 -1
  8. data/lib/active_shipping.rb +1 -1
  9. data/lib/active_shipping/carrier.rb +2 -4
  10. data/lib/active_shipping/carriers/australia_post.rb +2 -4
  11. data/lib/active_shipping/carriers/canada_post.rb +1 -1
  12. data/lib/active_shipping/carriers/canada_post_pws.rb +33 -37
  13. data/lib/active_shipping/carriers/correios.rb +0 -2
  14. data/lib/active_shipping/carriers/new_zealand_post.rb +0 -2
  15. data/lib/active_shipping/carriers/ups.rb +0 -2
  16. data/lib/active_shipping/carriers/usps.rb +1 -3
  17. data/lib/active_shipping/external_return_label_request.rb +0 -4
  18. data/lib/active_shipping/location.rb +65 -52
  19. data/lib/active_shipping/package.rb +17 -21
  20. data/lib/active_shipping/package_item.rb +8 -20
  21. data/lib/active_shipping/rate_estimate.rb +1 -1
  22. data/lib/active_shipping/version.rb +1 -1
  23. data/test/fixtures/xml/canadapost/example_request.xml +3 -3
  24. data/test/helpers/holiday_helpers.rb +54 -0
  25. data/test/remote/australia_post_test.rb +1 -1
  26. data/test/remote/canada_post_pws_platform_test.rb +1 -3
  27. data/test/remote/canada_post_pws_test.rb +1 -1
  28. data/test/remote/canada_post_test.rb +1 -1
  29. data/test/remote/correios_test.rb +1 -2
  30. data/test/remote/fedex_test.rb +8 -8
  31. data/test/remote/kunaki_test.rb +1 -1
  32. data/test/remote/new_zealand_post_test.rb +1 -1
  33. data/test/remote/shipwire_test.rb +1 -1
  34. data/test/remote/stamps_test.rb +7 -7
  35. data/test/remote/ups_surepost_test.rb +1 -1
  36. data/test/remote/ups_test.rb +13 -11
  37. data/test/remote/usps_returns_test.rb +1 -1
  38. data/test/remote/usps_test.rb +5 -5
  39. data/test/test_helper.rb +16 -6
  40. data/test/unit/carrier_test.rb +25 -25
  41. data/test/unit/carriers/australia_post_test.rb +5 -5
  42. data/test/unit/carriers/benchmark_test.rb +1 -1
  43. data/test/unit/carriers/canada_post_pws_rating_test.rb +1 -15
  44. data/test/unit/carriers/canada_post_pws_register_test.rb +1 -15
  45. data/test/unit/carriers/canada_post_pws_shipping_test.rb +1 -13
  46. data/test/unit/carriers/canada_post_pws_test.rb +4 -4
  47. data/test/unit/carriers/canada_post_pws_tracking_test.rb +1 -1
  48. data/test/unit/carriers/canada_post_test.rb +9 -9
  49. data/test/unit/carriers/correios_test.rb +1 -2
  50. data/test/unit/carriers/fedex_test.rb +5 -5
  51. data/test/unit/carriers/kunaki_test.rb +1 -1
  52. data/test/unit/carriers/new_zealand_post_test.rb +9 -10
  53. data/test/unit/carriers/shipwire_test.rb +1 -1
  54. data/test/unit/carriers/stamps_test.rb +1 -1
  55. data/test/unit/carriers/ups_test.rb +1 -1
  56. data/test/unit/carriers/usps_returns_test.rb +1 -1
  57. data/test/unit/carriers/usps_test.rb +1 -1
  58. data/test/unit/carriers_test.rb +4 -5
  59. data/test/unit/external_return_label_request_test.rb +129 -83
  60. data/test/unit/location_test.rb +187 -91
  61. data/test/unit/package_item_test.rb +42 -47
  62. data/test/unit/package_test.rb +76 -75
  63. data/test/unit/rate_estimate_test.rb +16 -20
  64. data/test/unit/response_test.rb +28 -9
  65. data/test/unit/shipment_event_test.rb +1 -1
  66. data/test/unit/shipment_packer_test.rb +31 -31
  67. data/test/unit/tracking_response_test.rb +1 -1
  68. metadata +71 -23
  69. data/gemfiles/activesupport32.gemfile +0 -7
  70. data/gemfiles/activesupport32_nokogiri_17.gemfile +0 -7
  71. data/gemfiles/activesupport40.gemfile +0 -6
  72. data/gemfiles/activesupport40_nokogiri_17.gemfile +0 -6
  73. data/gemfiles/activesupport41.gemfile +0 -6
  74. data/gemfiles/activesupport41_nokogiri_17.gemfile +0 -6
  75. data/gemfiles/activesupport42_nokogiri_17.gemfile +0 -6
  76. data/test/fixtures/xml/canadapost_pws/merchant_details_response_no_contract_number.xml +0 -7
  77. data/test/fixtures/xml/canadapost_pws/service_options_response_priority_worldwide.xml +0 -41
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class CanadaPostPwsTrackingTest < Minitest::Test
3
+ class CanadaPostPwsTrackingTest < ActiveSupport::TestCase
4
4
  include ActiveShipping::Test::Fixtures
5
5
 
6
6
  def setup
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class CanadaPostTest < Minitest::Test
3
+ class CanadaPostTest < ActiveSupport::TestCase
4
4
  include ActiveShipping::Test::Fixtures
5
5
 
6
6
  def setup
@@ -25,10 +25,10 @@ class CanadaPostTest < Minitest::Test
25
25
 
26
26
  rate_estimates.rates.each do |rate|
27
27
  assert_instance_of RateEstimate, rate
28
- assert_instance_of DateTime, rate.delivery_date
29
- assert_instance_of DateTime, rate.shipping_date
28
+ assert_instance_of Date, rate.delivery_date
29
+ assert_instance_of Date, rate.shipping_date
30
30
  assert_instance_of String, rate.service_name
31
- assert_instance_of Fixnum, rate.total_price
31
+ assert_kind_of Integer, rate.total_price
32
32
  end
33
33
 
34
34
  rate_estimates.boxes.each do |box|
@@ -41,7 +41,7 @@ class CanadaPostTest < Minitest::Test
41
41
  assert_instance_of Float, box.width
42
42
 
43
43
  box.packedItems.each do |p|
44
- assert_instance_of Fixnum, p.quantity
44
+ assert_kind_of Integer, p.quantity
45
45
  assert_instance_of String, p.description
46
46
  end
47
47
  end
@@ -58,10 +58,10 @@ class CanadaPostTest < Minitest::Test
58
58
 
59
59
  rate_estimates.rates.each do |rate|
60
60
  assert_instance_of RateEstimate, rate
61
- assert_instance_of DateTime, rate.delivery_date
62
- assert_instance_of DateTime, rate.shipping_date
61
+ assert_instance_of Date, rate.delivery_date
62
+ assert_instance_of Date, rate.shipping_date
63
63
  assert_instance_of String, rate.service_name
64
- assert_instance_of Fixnum, rate.total_price
64
+ assert_kind_of Integer, rate.total_price
65
65
  end
66
66
 
67
67
  rate_estimates.boxes.each do |box|
@@ -74,7 +74,7 @@ class CanadaPostTest < Minitest::Test
74
74
  assert_instance_of Float, box.width
75
75
 
76
76
  box.packedItems.each do |p|
77
- assert_instance_of Fixnum, p.quantity
77
+ assert_kind_of Integer, p.quantity
78
78
  assert_instance_of String, p.description
79
79
  end
80
80
  end
@@ -1,7 +1,6 @@
1
- # -*- coding: utf-8 -*-
2
1
  require "test_helper"
3
2
 
4
- class CorreiosTest < Minitest::Test
3
+ class CorreiosTest < ActiveSupport::TestCase
5
4
  include ActiveShipping::Test::Fixtures
6
5
 
7
6
  def setup
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class FedExTest < Minitest::Test
3
+ class FedExTest < ActiveSupport::TestCase
4
4
  include ActiveShipping::Test::Fixtures
5
5
 
6
6
  def setup
@@ -156,8 +156,8 @@ class FedExTest < Minitest::Test
156
156
  rate = response.rates.first
157
157
  assert_equal 'FedEx', rate.carrier
158
158
  assert_equal 'USD', rate.currency
159
- assert_instance_of Fixnum, rate.total_price
160
- assert_instance_of Fixnum, rate.price
159
+ assert_kind_of Integer, rate.total_price
160
+ assert_kind_of Integer, rate.price
161
161
  assert_instance_of String, rate.service_name
162
162
  assert_instance_of String, rate.service_code
163
163
  assert_instance_of Array, rate.package_rates
@@ -189,8 +189,8 @@ class FedExTest < Minitest::Test
189
189
  rate = response.rates.first
190
190
  assert_equal 'FedEx', rate.carrier
191
191
  assert_equal 'CAD', rate.currency
192
- assert_instance_of Fixnum, rate.total_price
193
- assert_instance_of Fixnum, rate.price
192
+ assert_kind_of Integer, rate.total_price
193
+ assert_kind_of Integer, rate.price
194
194
  assert_instance_of String, rate.service_name
195
195
  assert_instance_of String, rate.service_code
196
196
  assert_instance_of Array, rate.package_rates
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class KunakiTest < Minitest::Test
3
+ class KunakiTest < ActiveSupport::TestCase
4
4
  include ActiveShipping::Test::Fixtures
5
5
 
6
6
  def setup
@@ -1,6 +1,6 @@
1
1
  require "test_helper"
2
2
 
3
- class NewZealandPostTest < Minitest::Test
3
+ class NewZealandPostTest < ActiveSupport::TestCase
4
4
  include ActiveShipping::Test::Fixtures
5
5
 
6
6
  def setup
@@ -11,20 +11,20 @@ class NewZealandPostTest < Minitest::Test
11
11
  end
12
12
 
13
13
  def test_domestic_book_request
14
- url = "http://api.nzpost.co.nz/ratefinder/domestic?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&carrier=all&format=json&height=20&length=190&postcode_dest=1010&postcode_src=6011&thickness=140&weight=0.25"
14
+ url = "http://api.nzpost.co.nz/ratefinder/domestic?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&carrier=all&format=json&height=20.0&length=190.0&postcode_dest=1010&postcode_src=6011&thickness=140.0&weight=0.25"
15
15
  @carrier.expects(:commit).with([url]).returns([json_fixture("newzealandpost/domestic_book")])
16
16
  @carrier.find_rates(@wellington, @auckland, package_fixtures[:book])
17
17
  end
18
18
 
19
19
  def test_domestic_poster_request
20
- url = "http://api.nzpost.co.nz/ratefinder/domestic?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&carrier=all&diameter=100&format=json&length=930&postcode_dest=1010&postcode_src=6011&weight=0.1"
20
+ url = "http://api.nzpost.co.nz/ratefinder/domestic?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&carrier=all&diameter=100.0&format=json&length=930.0&postcode_dest=1010&postcode_src=6011&weight=0.1"
21
21
  @carrier.expects(:commit).with([url]).returns([json_fixture("newzealandpost/domestic_poster")])
22
22
  @carrier.find_rates(@wellington, @auckland, package_fixtures[:poster])
23
23
  end
24
24
 
25
25
  def test_domestic_combined_request
26
26
  urls = [
27
- "http://api.nzpost.co.nz/ratefinder/domestic?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&carrier=all&format=json&height=20&length=190&postcode_dest=1010&postcode_src=6011&thickness=140&weight=0.25",
27
+ "http://api.nzpost.co.nz/ratefinder/domestic?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&carrier=all&format=json&height=20.0&length=190.0&postcode_dest=1010&postcode_src=6011&thickness=140.0&weight=0.25",
28
28
  "http://api.nzpost.co.nz/ratefinder/domestic?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&carrier=all&format=json&height=25.4&length=25.4&postcode_dest=1010&postcode_src=6011&thickness=25.4&weight=0.226796185"
29
29
  ]
30
30
  @carrier.expects(:commit).with(urls).returns([json_fixture("newzealandpost/domestic_book"), json_fixture("newzealandpost/domestic_small_half_pound")])
@@ -75,14 +75,14 @@ class NewZealandPostTest < Minitest::Test
75
75
  end
76
76
 
77
77
  def test_domestic_blank_package_response
78
- url = "http://api.nzpost.co.nz/ratefinder/domestic?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&carrier=all&format=json&height=0&length=0&postcode_dest=1010&postcode_src=6011&thickness=0&weight=0.0"
78
+ url = "http://api.nzpost.co.nz/ratefinder/domestic?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&carrier=all&format=json&height=0.0&length=0.0&postcode_dest=1010&postcode_src=6011&thickness=0.0&weight=0.0"
79
79
  @carrier.expects(:commit).with([url]).returns([json_fixture("newzealandpost/domestic_default")])
80
80
  response = @carrier.find_rates(@wellington, @auckland, package_fixtures[:just_zero_grams])
81
81
  assert_equal [240, 300, 400, 420, 450, 450, 450, 500, 550, 589, 715, 830, 890], response.rates.map(&:price)
82
82
  end
83
83
 
84
84
  def test_domestic_book_response_params
85
- url = "http://api.nzpost.co.nz/ratefinder/domestic?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&carrier=all&format=json&height=20&length=190&postcode_dest=1010&postcode_src=6011&thickness=140&weight=0.25"
85
+ url = "http://api.nzpost.co.nz/ratefinder/domestic?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&carrier=all&format=json&height=20.0&length=190.0&postcode_dest=1010&postcode_src=6011&thickness=140.0&weight=0.25"
86
86
  @carrier.expects(:commit).with([url]).returns([json_fixture("newzealandpost/domestic_book")])
87
87
  response = @carrier.find_rates(@wellington, @auckland, package_fixtures[:book])
88
88
  assert_equal [url], response.request
@@ -91,7 +91,7 @@ class NewZealandPostTest < Minitest::Test
91
91
  end
92
92
 
93
93
  def test_international_book_request
94
- url = "http://api.nzpost.co.nz/ratefinder/international?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&country_code=CA&format=json&height=20&length=190&thickness=140&value=0&weight=0.25"
94
+ url = "http://api.nzpost.co.nz/ratefinder/international?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&country_code=CA&format=json&height=20.0&length=190.0&thickness=140.0&value=0&weight=0.25"
95
95
  @carrier.expects(:commit).with([url]).returns([json_fixture("newzealandpost/international_book")])
96
96
  @carrier.find_rates(@wellington, @ottawa, package_fixtures[:book])
97
97
  end
@@ -109,7 +109,7 @@ class NewZealandPostTest < Minitest::Test
109
109
  end
110
110
 
111
111
  def test_international_book_response_params
112
- url = "http://api.nzpost.co.nz/ratefinder/international?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&country_code=CA&format=json&height=20&length=190&thickness=140&value=0&weight=0.25"
112
+ url = "http://api.nzpost.co.nz/ratefinder/international?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&country_code=CA&format=json&height=20.0&length=190.0&thickness=140.0&value=0&weight=0.25"
113
113
  @carrier.expects(:commit).with([url]).returns([json_fixture("newzealandpost/international_book")])
114
114
  response = @carrier.find_rates(@wellington, @ottawa, package_fixtures[:book])
115
115
  assert_equal [url], response.request
@@ -119,7 +119,7 @@ class NewZealandPostTest < Minitest::Test
119
119
 
120
120
  def test_international_combined_request
121
121
  urls = [
122
- "http://api.nzpost.co.nz/ratefinder/international?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&country_code=CA&format=json&height=20&length=190&thickness=140&value=0&weight=0.25",
122
+ "http://api.nzpost.co.nz/ratefinder/international?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&country_code=CA&format=json&height=20.0&length=190.0&thickness=140.0&value=0&weight=0.25",
123
123
  "http://api.nzpost.co.nz/ratefinder/international?api_key=4d9dc0f0-dda0-012e-066f-000c29b44ac0&country_code=CA&format=json&height=25.4&length=25.4&thickness=25.4&value=0&weight=0.226796185"
124
124
  ]
125
125
  @carrier.expects(:commit).with(urls).returns([json_fixture("newzealandpost/international_book"), json_fixture("newzealandpost/international_wii")])
@@ -145,7 +145,6 @@ class NewZealandPostTest < Minitest::Test
145
145
  @carrier.expects(:commit).returns([""])
146
146
  error = @carrier.find_rates(@wellington, @ottawa, package_fixtures[:book]) rescue $!
147
147
  assert_equal ActiveShipping::ResponseError, error.class
148
- assert_equal "A JSON text must at least contain two octets!", error.message
149
148
  assert_equal [""], error.response.raw_responses
150
149
  response_params = { "responses" => [] }
151
150
  assert_equal response_params, error.response.params
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class ShipwireTest < Minitest::Test
3
+ class ShipwireTest < ActiveSupport::TestCase
4
4
  include ActiveShipping::Test::Fixtures
5
5
 
6
6
  def setup
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class StampsTest < Minitest::Test
3
+ class StampsTest < ActiveSupport::TestCase
4
4
  include ActiveShipping::Test::Fixtures
5
5
 
6
6
  def setup
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class UPSTest < Minitest::Test
3
+ class UPSTest < ActiveSupport::TestCase
4
4
  include ActiveShipping::Test::Fixtures
5
5
 
6
6
  def setup
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class USPSReturnsTest < Minitest::Test
3
+ class USPSReturnsTest < ActiveSupport::TestCase
4
4
  include ActiveShipping::Test::Fixtures
5
5
 
6
6
  attr_reader :carrier
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class USPSTest < Minitest::Test
3
+ class USPSTest < ActiveSupport::TestCase
4
4
  include ActiveShipping::Test::Fixtures
5
5
 
6
6
  def setup
@@ -1,17 +1,16 @@
1
1
  require 'test_helper'
2
2
 
3
- class CarriersTest < Minitest::Test
4
-
5
- def test_get_usps_by_string
3
+ class CarriersTest < ActiveSupport::TestCase
4
+ test ".find searches by string for a carrier and finds USPS" do
6
5
  assert_equal ActiveShipping::USPS, ActiveShipping::Carriers.find('usps')
7
6
  assert_equal ActiveShipping::USPS, ActiveShipping::Carriers.find('USPS')
8
7
  end
9
8
 
10
- def test_get_usps_by_name
9
+ test ".find searches by symbol for a carrier and finds USPS" do
11
10
  assert_equal ActiveShipping::USPS, ActiveShipping::Carriers.find(:usps)
12
11
  end
13
12
 
14
- def test_get_unknown_carrier
13
+ test ".find raises with an unknown carrier" do
15
14
  assert_raises(NameError) { ActiveShipping::Carriers.find(:polar_north) }
16
15
  end
17
16
  end
@@ -1,123 +1,167 @@
1
1
  require 'test_helper'
2
2
 
3
- class ExternalReturnLabelRequestTest < Minitest::Test
3
+ class ExternalReturnLabelRequestTest < ActiveSupport::TestCase
4
4
  include ActiveShipping::Test::Fixtures
5
5
 
6
- def setup
6
+ setup do
7
7
  @external_request_label_req =
8
- ExternalReturnLabelRequest.from_hash ({
9
- :customer_name => "Test Customer",
10
- :customer_address1 => "122 Hudson St.",
11
- :customer_city => "New York",
12
- :customer_state => "NY",
13
- :customer_zipcode => "10013",
14
- :label_format => "No Instructions",
15
- :label_definition => "4X6",
16
- :service_type_code => "044",
17
- :merchant_account_id => "12345",
18
- :mid => "12345678",
19
- :call_center_or_self_service => "Customer",
20
- :address_override_notification => "true"
21
- })
22
-
8
+ ExternalReturnLabelRequest.from_hash(
9
+ customer_name: "Test Customer",
10
+ customer_address1: "122 Hudson St.",
11
+ customer_city: "New York",
12
+ customer_state: "NY",
13
+ customer_zipcode: "10013",
14
+ label_format: "No Instructions",
15
+ label_definition: "4X6",
16
+ service_type_code: "044",
17
+ merchant_account_id: "12345",
18
+ mid: "12345678",
19
+ call_center_or_self_service: "Customer",
20
+ address_override_notification: "true",
21
+ )
22
+ @email = "no-reply@example.com"
23
+ @invalid_email = "not_a_valid_email"
24
+ @anything = "Any string"
25
+ @blank_values = ["", " "]
23
26
  end
24
27
 
25
- def test_recipient_bcc
28
+ test "#recipient_bcc raises on an invalid email" do
26
29
  assert_raises(USPSValidationError) do
27
- @external_request_label_req.recipient_bcc = "not_a_valid_email"
28
- end
29
- assert_silent do
30
- @external_request_label_req.recipient_bcc = "no-reply@example.com"
30
+ @external_request_label_req.recipient_bcc = @invalid_email
31
31
  end
32
32
  end
33
33
 
34
- def test_recipient_email
34
+ test "#recipient_bcc assigns the email" do
35
+ @external_request_label_req.recipient_bcc = @email
36
+ assert_equal @email, @external_request_label_req.recipient_bcc
37
+ end
38
+
39
+ test "#recipient_email raises if invalid" do
35
40
  assert_raises(USPSValidationError) do
36
- @external_request_label_req.recipient_email = "not_a_valid_email"
37
- end
38
- assert_silent do
39
- @external_request_label_req.recipient_email = "no-reply@example.com"
41
+ @external_request_label_req.recipient_email = @invalid_email
40
42
  end
41
43
  end
42
44
 
43
- def test_recipient_name
44
- assert_silent do
45
- @external_request_label_req.recipient_name = "any string"
46
- end
45
+ test "#recipient_email assigns the email" do
46
+ @external_request_label_req.recipient_email = @email
47
+ assert_equal @email, @external_request_label_req.recipient_email
47
48
  end
48
49
 
49
- def test_sender_email
50
+ test "#recipient_name accepts anything" do
51
+ @external_request_label_req.recipient_name = @anything
52
+ assert_equal @anything, @external_request_label_req.recipient_name
53
+ end
54
+
55
+ test "#sender_email raises if invalid" do
50
56
  assert_raises(USPSValidationError) do
51
- @external_request_label_req.sender_email = "not_a_valid_email"
52
- end
53
- assert_silent do
54
- @external_request_label_req.sender_email = "no-reply@example.com"
57
+ @external_request_label_req.sender_email = @invalid_email
55
58
  end
56
59
  end
57
60
 
58
- def test_sender_name
59
- assert_silent do
60
- @external_request_label_req.sender_name = "any string"
61
+ test "#sender_email assigns the email" do
62
+ @external_request_label_req.sender_email = @email
63
+ assert_equal @email, @external_request_label_req.sender_email
64
+ end
65
+
66
+ test "#sender_name assigns the value" do
67
+ @external_request_label_req.sender_name = @anything
68
+ assert_equal @anything, @external_request_label_req.sender_name
69
+ end
70
+
71
+ test "#sender_name raises if blank or nil" do
72
+ @blank_values.each do |blank|
73
+ assert_raises(USPSValidationError) do
74
+ @external_request_label_req.sender_name = blank
75
+ end
61
76
  end
77
+ end
78
+
79
+ test "#sender_name raises if nil" do
62
80
  assert_raises(USPSValidationError) do
63
- @external_request_label_req.sender_name = ""
81
+ @external_request_label_req.sender_name = nil
64
82
  end
65
83
  end
66
84
 
67
- def test_image_type
68
- assert_silent do
69
- ExternalReturnLabelRequest::IMAGE_TYPE.each do |img_type|
70
- @external_request_label_req.image_type = img_type.downcase
71
- end
85
+ test "#image_type accepts a valid image type" do
86
+ ExternalReturnLabelRequest::IMAGE_TYPE.each do |type|
87
+ @external_request_label_req.image_type = type.downcase
88
+ assert_equal type, @external_request_label_req.image_type
72
89
  end
90
+ end
91
+
92
+ test "#image_type raises on jpg" do
73
93
  assert_raises(USPSValidationError) do
74
94
  @external_request_label_req.image_type = "jpg"
75
95
  end
76
96
  end
77
97
 
78
- def test_call_center_or_self_service
79
- assert_silent do
80
- ExternalReturnLabelRequest::CALL_CENTER_OR_SELF_SERVICE.each do |cc_or_cs|
81
- @external_request_label_req.call_center_or_self_service = cc_or_cs
82
- end
98
+ test "#call_center_or_self_service accepts the valid values defined" do
99
+ ExternalReturnLabelRequest::CALL_CENTER_OR_SELF_SERVICE.each do |cc_or_cs|
100
+ @external_request_label_req.call_center_or_self_service = cc_or_cs
101
+ assert_equal cc_or_cs, @external_request_label_req.call_center_or_self_service
83
102
  end
103
+ end
104
+
105
+ test "#call_center_or_self_service raises on an invalid value" do
84
106
  assert_raises(USPSValidationError) do
85
107
  @external_request_label_req.call_center_or_self_service = "Invalid"
86
108
  end
87
109
  end
88
110
 
89
- def test_packaging_information
90
- assert_silent do
91
- @external_request_label_req.packaging_information = "Any String"
111
+ test "#packaging_information accepts a value" do
112
+ @external_request_label_req.packaging_information = @anything
113
+ assert_equal @anything, @external_request_label_req.packaging_information
114
+ end
115
+
116
+ test "#packaging_information accepts blank values" do
117
+ @blank_values.each do |blank|
118
+ @external_request_label_req.packaging_information = blank
119
+ assert_equal "", @external_request_label_req.packaging_information
92
120
  end
121
+ end
122
+
123
+ test "#packaging_information raises on a value too long" do
93
124
  assert_raises(USPSValidationError) do
94
- @external_request_label_req.packaging_information = (1..50).to_a.join("_")
125
+ @external_request_label_req.packaging_information = "a" * 16
95
126
  end
96
127
  end
97
128
 
98
- def test_packaging_information2
99
- assert_silent do
100
- @external_request_label_req.packaging_information2 = "Any String"
101
- end
102
- assert_silent do
103
- @external_request_label_req.packaging_information2 = " "
104
- @external_request_label_req.packaging_information2 = ""
129
+ test "#packaging_information2 accepts a value" do
130
+ @external_request_label_req.packaging_information2 = @anything
131
+ assert_equal @anything, @external_request_label_req.packaging_information2
132
+ end
133
+
134
+ test "#packaging_information2 accepts blank values" do
135
+ @blank_values.each do |blank|
136
+ @external_request_label_req.packaging_information2 = blank
137
+ assert_equal "", @external_request_label_req.packaging_information2
105
138
  end
139
+ end
140
+
141
+ test "#packaging_information2 raises when a value is too long" do
106
142
  assert_raises(USPSValidationError) do
107
- @external_request_label_req.packaging_information2 = (1..50).to_a.join("_")
143
+ @external_request_label_req.packaging_information2 = "a" * 16
108
144
  end
109
145
  end
110
146
 
111
- def test_customer_address2
112
- assert_silent do
113
- @external_request_label_req.customer_address2 = " "
114
- end
115
- assert_silent do
116
- @external_request_label_req.customer_address2 = nil
147
+ test "#customer_address2 accepts a value" do
148
+ @external_request_label_req.customer_address2 = @anything
149
+ assert_equal @anything, @external_request_label_req.customer_address2
150
+ end
151
+
152
+ test "#customer_address2 accepts blank values" do
153
+ @blank_values.each do |blank|
154
+ @external_request_label_req.customer_address2 = blank
155
+ assert_nil @external_request_label_req.customer_address2
117
156
  end
118
157
  end
119
158
 
120
- def test_sanitize
159
+ test "#customer_address2 accepts nil" do
160
+ @external_request_label_req.customer_address2 = nil
161
+ assert_nil @external_request_label_req.customer_address2
162
+ end
163
+
164
+ test "#sanitize scrubs strings" do
121
165
  assert_equal "", @external_request_label_req.send(:sanitize,' ')
122
166
  assert_equal 'some string', @external_request_label_req.send(:sanitize, 'some string ')
123
167
  assert_nil @external_request_label_req.send(:sanitize, {})
@@ -127,18 +171,21 @@ class ExternalReturnLabelRequestTest < Minitest::Test
127
171
  assert_equal ExternalReturnLabelRequest::CAP_STRING_LEN, @external_request_label_req.send(:sanitize, (1..100).to_a.join("_")).size
128
172
  end
129
173
 
130
- def test_to_bool
174
+ test "#to_bool coerces true values" do
131
175
  assert_equal true, @external_request_label_req.send(:to_bool, 'yes')
132
176
  assert_equal true, @external_request_label_req.send(:to_bool, 'true')
133
177
  assert_equal true, @external_request_label_req.send(:to_bool, true)
134
178
  assert_equal true, @external_request_label_req.send(:to_bool, '1')
179
+ end
180
+
181
+ test "#to_bool coerces false values" do
135
182
  assert_equal false, @external_request_label_req.send(:to_bool, '0')
136
183
  assert_equal false, @external_request_label_req.send(:to_bool, 'false')
137
184
  assert_equal false, @external_request_label_req.send(:to_bool, false)
138
185
  assert_equal false, @external_request_label_req.send(:to_bool, nil, false)
139
186
  end
140
187
 
141
- def test_validate_range
188
+ test "#validate_range" do
142
189
  assert_raises(USPSValidationError) do
143
190
  @external_request_label_req.send(:validate_range, '1', 5, 10, __method__)
144
191
  end
@@ -149,7 +196,7 @@ class ExternalReturnLabelRequestTest < Minitest::Test
149
196
  @external_request_label_req.send(:validate_range, '5 char', nil, 10, __method__)
150
197
  end
151
198
 
152
- def test_validate_string_length
199
+ test "#validate_string_length" do
153
200
  assert_raises(USPSValidationError) do
154
201
  @external_request_label_req.send(:validate_string_length, '14 char string', 13, __method__)
155
202
  end
@@ -159,7 +206,7 @@ class ExternalReturnLabelRequestTest < Minitest::Test
159
206
  @external_request_label_req.send(:validate_string_length, '14 char string', 14, __method__)
160
207
  end
161
208
 
162
- def test_validate_set_inclusion
209
+ test "#validate_set_inclusion" do
163
210
  assert_raises(USPSValidationError) do
164
211
  @external_request_label_req.send(:validate_set_inclusion, 'not_in_set', ['v1','v2','v3'], __method__)
165
212
  end
@@ -169,20 +216,22 @@ class ExternalReturnLabelRequestTest < Minitest::Test
169
216
  @external_request_label_req.send(:validate_set_inclusion, 'v1', ['v1','v2','v3'], __method__)
170
217
  end
171
218
 
172
- def test_validate_email
219
+ test "#validate_email" do
173
220
  assert_raises(USPSValidationError) do
174
- @external_request_label_req.send(:validate_email, 'not_a_valid_email', __method__)
221
+ @external_request_label_req.send(:validate_email, @invalid_email, __method__)
175
222
  end
176
223
  assert_raises(USPSValidationError) do
177
- @external_request_label_req.send(:validate_email, ' ', __method__)
224
+ @external_request_label_req.send(:validate_email, " ", __method__)
178
225
  end
179
- assert_equal 'no-reply@example.com', @external_request_label_req.send(:validate_email, 'no-reply@example.com', __method__)
180
- assert_equal 'no-reply@example.com', @external_request_label_req.send(:validate_email, ' no-reply@example.com ', __method__)
226
+ assert_equal @email, @external_request_label_req.send(:validate_email, @email, __method__)
227
+ assert_equal @email, @external_request_label_req.send(:validate_email, " #{@email} ", __method__)
181
228
  end
182
229
 
183
- def test_tag_required
230
+ test "#initialize raises with no tag" do
184
231
  assert_raises(USPSMissingRequiredTagError) { ExternalReturnLabelRequest.new }
232
+ end
185
233
 
234
+ test "#initialize passes with valid values and that every key is necessary" do
186
235
  sample_hash = {
187
236
  :customer_name => "Test Customer",
188
237
  :customer_address1 => "122 Hudson St.",
@@ -198,9 +247,7 @@ class ExternalReturnLabelRequestTest < Minitest::Test
198
247
  :address_override_notification => "true"
199
248
  }
200
249
 
201
- assert_silent do
202
- ExternalReturnLabelRequest.from_hash(sample_hash)
203
- end
250
+ assert ExternalReturnLabelRequest.from_hash(sample_hash)
204
251
 
205
252
  sample_hash.keys.each do |k|
206
253
  assert_raises(USPSMissingRequiredTagError) do
@@ -208,5 +255,4 @@ class ExternalReturnLabelRequestTest < Minitest::Test
208
255
  end
209
256
  end
210
257
  end
211
-
212
258
  end