easypost 2.0.11 → 2.0.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'fedex international' do
4
+ before(:all) do
5
+ @rates = {}
6
+ end
7
+
8
+ it 'buys a ground label' do
9
+ shipment = EasyPost::Shipment.create(
10
+ :to_address => ADDRESS[:canada],
11
+ :from_address => ADDRESS[:california],
12
+ :parcel => PARCEL[:dimensions],
13
+ :customs_info => CUSTOMS_INFO[:shirt]
14
+ )
15
+ shipment.buy(:rate => shipment.lowest_rate("fedex", "FEDEX_GROUND"))
16
+ label = open(shipment.postage_label.label_url)
17
+
18
+ expect(shipment).to be_an_instance_of(EasyPost::Shipment)
19
+ expect(shipment.selected_rate).to be_an_instance_of(EasyPost::Rate)
20
+ expect(shipment.selected_rate.service).to eq("FEDEX_GROUND")
21
+ expect(shipment.postage_label.label_url).to end_with(".png")
22
+ expect(shipment.tracking_code).to start_with("8000")
23
+ expect(label.size).to be > 5000
24
+
25
+ @rates[:ground] = shipment.selected_rate
26
+ end
27
+
28
+ it 'buys an air label' do
29
+ shipment = EasyPost::Shipment.create(
30
+ :to_address => ADDRESS[:canada],
31
+ :from_address => ADDRESS[:california],
32
+ :parcel => PARCEL[:dimensions],
33
+ :customs_info => CUSTOMS_INFO[:shirt]
34
+ )
35
+ shipment.buy(:rate => shipment.lowest_rate("fedex", "INTERNATIONAL_PRIORITY"))
36
+ label = open(shipment.postage_label.label_url)
37
+
38
+ expect(shipment.selected_rate.service).to eq("INTERNATIONAL_PRIORITY")
39
+ expect(shipment.tracking_code).to start_with("794")
40
+ expect(label.size).to be > 20000
41
+
42
+ @rates[:air] = shipment.selected_rate
43
+ end
44
+
45
+ it 'returns no rates for an alcohol shipment', focus: true do
46
+ shipment = EasyPost::Shipment.create(
47
+ :to_address => ADDRESS[:canada],
48
+ :from_address => ADDRESS[:california],
49
+ :parcel => PARCEL[:dimensions],
50
+ :customs_info => CUSTOMS_INFO[:shirt],
51
+ :options => {:alcohol => true}
52
+ )
53
+
54
+ expect { shipment.lowest_rate("fedex") }.to raise_exception(EasyPost::Error, /No rates found/)
55
+ end
56
+
57
+ after(:all) do
58
+ begin
59
+ expect(@rates[:air].rate.to_i).to be > @rates[:ground].rate.to_i
60
+ rescue
61
+ end
62
+ end
63
+
64
+ end
@@ -0,0 +1,102 @@
1
+ require 'spec_helper'
2
+
3
+ describe EasyPost::Item do
4
+
5
+ describe '#create' do
6
+ it 'creates an item object', focus: true do
7
+ item = EasyPost::Item.create(
8
+ name: "Spec Item",
9
+ description: "Spec item description",
10
+ harmonized_code: "66.77.90.10",
11
+ country_of_origin: "US",
12
+ length: 6.0,
13
+ width: 11.8,
14
+ height: 12.5,
15
+ weight: 10.55,
16
+ warehouse_location: "SECTION A",
17
+ value: 96.00,
18
+ sku: "V4C3D5R2Z6",
19
+ upc: "UPCYEAHYOUKNOWME"
20
+ )
21
+ expect(item).to be_an_instance_of(EasyPost::Item)
22
+ expect(item.weight).to eq(10.55)
23
+ expect(item.harmonized_code).to eq("66.77.90.10")
24
+ expect(item.sku).to eq("V4C3D5R2Z6")
25
+ end
26
+
27
+ it 'fails to create an item object' do
28
+ expect { EasyPost::Item.create(
29
+ length: 6,
30
+ width: 12,
31
+ height: 13,
32
+ weight: 40
33
+ ) }.to raise_exception(EasyPost::Error, /Invalid request, 'name' is required./)
34
+ end
35
+
36
+ it 'creates an item object with default values' do
37
+ item = EasyPost::Item.create(
38
+ name: "Default Item",
39
+ length: 6.0,
40
+ width: 8.0,
41
+ height: 10,
42
+ weight: 13,
43
+ value: 19.99
44
+ )
45
+ expect(item.description).to be_nil
46
+ end
47
+ end
48
+
49
+ describe '#retrieve' do
50
+ it 'retrieves an item by id' do
51
+ item = EasyPost::Item.create(
52
+ name: "Test Item",
53
+ sku: "28374662838",
54
+ length: 6.0,
55
+ width: 8.0,
56
+ height: 10,
57
+ weight: 13,
58
+ value: 13.00
59
+ )
60
+ id = item.id
61
+ item = nil
62
+ item = EasyPost::Item.retrieve(id)
63
+
64
+ expect(item).to be_an_instance_of(EasyPost::Item)
65
+ expect(item.value).to eq("13.00")
66
+ expect(item.sku).to eq("28374662838")
67
+ end
68
+
69
+ it 'retrieves an item by reference' do
70
+ item_1 = EasyPost::Item.create(
71
+ name: "Test Item",
72
+ reference: "81993736515",
73
+ length: 6.0,
74
+ width: 8.0,
75
+ height: 10,
76
+ weight: 13,
77
+ value: 13.00
78
+ )
79
+ item_2 = EasyPost::Item.retrieve(item_1.reference)
80
+
81
+ expect(item_2).to be_an_instance_of(EasyPost::Item)
82
+ expect(item_2.reference).to eq(item_1.reference)
83
+ end
84
+
85
+ it 'retrieves an item by custom reference' do
86
+ item_1 = EasyPost::Item.create(
87
+ name: "Test Item",
88
+ sku: "928273646",
89
+ length: 6.0,
90
+ width: 8.0,
91
+ height: 10,
92
+ weight: 13,
93
+ value: 17.38
94
+ )
95
+ item_2 = EasyPost::Item.retrieve_reference(sku: "928273646")
96
+
97
+ expect(item_2).to be_an_instance_of(EasyPost::Item)
98
+ expect(item_2.value).to eq("17.38")
99
+ end
100
+ end
101
+
102
+ end
@@ -0,0 +1,120 @@
1
+ require 'spec_helper'
2
+
3
+ describe EasyPost::Order do
4
+
5
+ describe '#create' do
6
+
7
+ it 'creates an order out of a single shipment' do
8
+
9
+ order = EasyPost::Order.create(
10
+ to_address: ADDRESS[:california],
11
+ from_address: ADDRESS[:missouri],
12
+ shipments: [{
13
+ parcel: {length: 8, width: 6, height: 4, weight: 12}
14
+ }]
15
+ )
16
+
17
+ expect(order).to be_an_instance_of(EasyPost::Order)
18
+ expect(order.shipments.first).to be_an_instance_of(EasyPost::Shipment)
19
+ end
20
+
21
+ it 'creates an order out of two shipments' do
22
+
23
+ order = EasyPost::Order.create(
24
+ to_address: ADDRESS[:california],
25
+ from_address: ADDRESS[:missouri],
26
+ shipments: [{
27
+ parcel: {length: 8, width: 6, height: 4, weight: 12}
28
+ },{
29
+ parcel: {length: 8, width: 6, height: 4, weight: 12}
30
+ }]
31
+ )
32
+
33
+ expect(order).to be_an_instance_of(EasyPost::Order)
34
+ expect(order.shipments.first).to be_an_instance_of(EasyPost::Shipment)
35
+ end
36
+
37
+ it 'creates and buys an international order out of two shipments' do
38
+
39
+ order = EasyPost::Order.create(
40
+ # to_address: ADDRESS[:canada],
41
+ to_address: ADDRESS[:california],
42
+ from_address: ADDRESS[:missouri],
43
+ customs_info: CUSTOMS_INFO[:shirt],
44
+ shipments: [{
45
+ parcel: {length: 8, width: 6, height: 4, weight: 12}
46
+ },{
47
+ parcel: {length: 8, width: 6, height: 4, weight: 24}
48
+ }]
49
+ )
50
+ order.buy(carrier: "fedex", service: "FEDEX_GROUND")
51
+
52
+ expect(order).to be_an_instance_of(EasyPost::Order)
53
+ expect(order.shipments.first).to be_an_instance_of(EasyPost::Shipment)
54
+ end
55
+
56
+
57
+ # it 'creates an order object out of a single item' do
58
+ # order = EasyPost::Order.create(
59
+ # :to_address => ADDRESS[:california],
60
+ # :from_address => ADDRESS[:missouri],
61
+ # :containers => "*", # only uses your containers
62
+ # :items => [ITEM[:shirt]]
63
+ # )
64
+ # expect(order).to be_an_instance_of(EasyPost::Order)
65
+ # expect(order.shiments.first).to be_an_instance_of(EasyPost::Shipment)
66
+ # expect(order.shiments.first.from_address).to be_an_instance_of(EasyPost::Address)
67
+ # expect(order.shiments.length).to eq(1)
68
+ # end
69
+
70
+ # it 'creates an order object out of multiple items' do
71
+ # order = EasyPost::Order.create(
72
+ # :to_address => ADDRESS[:california],
73
+ # :from_address => ADDRESS[:missouri],
74
+ # :containers => ["USPS.FLAT_RATE.*", "USPS.REGIONAL_RATE.*"],
75
+ # :items => [ITEM[:shirt], ITEM[:pants]]
76
+ # )
77
+ # expect(order).to be_an_instance_of(EasyPost::Order)
78
+ # expect(order.shiments.first).to be_an_instance_of(EasyPost::Shipment)
79
+ # expect(order.shiments.first.from_address).to be_an_instance_of(EasyPost::Address)
80
+ # end
81
+
82
+ # it 'creates an order object with options' do
83
+ # order = EasyPost::Order.create(
84
+ # :to_address => ADDRESS[:california],
85
+ # :from_address => ADDRESS[:missouri],
86
+ # :containers => [{id: "container_USPSFR01"}, "USPS.REGIONAL_RATE.*"],
87
+ # :items => [ITEM[:shirt], ITEM[:pants]],
88
+ # :options => {alcohol: true}
89
+ # )
90
+ # expect(order).to be_an_instance_of(EasyPost::Order)
91
+ # expect(order.shiments.first).to be_an_instance_of(EasyPost::Shipment)
92
+ # expect(order.shiments.first.options[:alcohol]).to be_true
93
+ # end
94
+
95
+ # it 'creates an order object with custom item and passed without array' do
96
+ # item = EasyPost::Item.create(
97
+ # name: "Test Item",
98
+ # sku: "1234567890",
99
+ # length: 6.0,
100
+ # width: 8.0,
101
+ # height: 10,
102
+ # weight: 13,
103
+ # value: 13.00
104
+ # ))
105
+ # item.value = 9.99
106
+
107
+ # order = EasyPost::Order.create(
108
+ # :to_address => ADDRESS[:california],
109
+ # :from_address => ADDRESS[:missouri],
110
+ # :containers => EasyPost::Container::ALL,
111
+ # :items => item
112
+ # )
113
+ # expect(order.shiments.first.item).to be_an_instance_of(EasyPost::Item)
114
+ # expect(order.shiments.first.item.value).to eq(9.99)
115
+ # expect(order.shiments.first.item.sku).to eq("1234567890")
116
+
117
+ # end
118
+ end
119
+
120
+ end
@@ -4,30 +4,11 @@ describe EasyPost::Shipment do
4
4
 
5
5
  describe '#create' do
6
6
  it 'creates a shipment object' do
7
- from_address = EasyPost::Address.create(
8
- :name => "Benchmark Merchandising",
9
- :street1 => "329 W 18th Street",
10
- :city => "Chicago",
11
- :state => "IL",
12
- :zip => "60616"
13
- )
14
- to_address = EasyPost::Address.create(
15
- :street1 => "902 Broadway 4th Floor",
16
- :city => "New York",
17
- :state => "NY",
18
- :zip => "10010"
19
- )
20
- parcel = EasyPost::Parcel.create(
21
- :weight => 7.2,
22
- :height => 2,
23
- :width => 7.5,
24
- :length => 10.5
25
- )
26
7
 
27
8
  shipment = EasyPost::Shipment.create(
28
- :to_address => to_address,
29
- :from_address => from_address,
30
- :parcel => parcel
9
+ :to_address => ADDRESS[:california],
10
+ :from_address => ADDRESS[:missouri],
11
+ :parcel => PARCEL[:dimensions]
31
12
  )
32
13
  expect(shipment).to be_an_instance_of(EasyPost::Shipment)
33
14
  expect(shipment.from_address).to be_an_instance_of(EasyPost::Address)
@@ -37,47 +18,31 @@ describe EasyPost::Shipment do
37
18
 
38
19
  describe '#buy' do
39
20
  it 'purchases postage for an international shipment' do
40
- to_address = address_canada
41
- from_address = address_california
42
- expect(to_address).to be_an_instance_of(EasyPost::Address)
43
-
44
- parcel = parcel_dimensions
45
- expect(parcel).to be_an_instance_of(EasyPost::Parcel)
46
-
47
- customs_info = customs_info_poor
48
- expect(customs_info).to be_an_instance_of(EasyPost::CustomsInfo)
49
21
 
50
22
  shipment = EasyPost::Shipment.create(
51
- :to_address => to_address,
52
- :from_address => from_address,
53
- :parcel => parcel,
54
- :customs_info => customs_info
23
+ :to_address => ADDRESS[:canada],
24
+ :from_address => ADDRESS[:california],
25
+ :parcel => PARCEL[:dimensions],
26
+ :customs_info => CUSTOMS_INFO[:shirt]
55
27
  )
56
28
  expect(shipment).to be_an_instance_of(EasyPost::Shipment)
57
29
 
58
30
  shipment.buy(
59
- :rate => shipment.lowest_rate('usps')
31
+ :rate => shipment.lowest_rate("usps")
60
32
  )
61
33
  expect(shipment.postage_label.label_url.length).to be > 0
62
34
  end
63
35
 
64
36
  it 'purchases postage for a domestic shipment' do
65
- to_address = address_california
66
- from_address = address_missouri
67
- expect(from_address).to be_an_instance_of(EasyPost::Address)
68
-
69
- parcel = parcel_dimensions
70
- expect(parcel).to be_an_instance_of(EasyPost::Parcel)
71
-
72
37
  shipment = EasyPost::Shipment.create(
73
- :to_address => to_address,
74
- :from_address => from_address,
75
- :parcel => parcel
38
+ :to_address => ADDRESS[:missouri],
39
+ :from_address => ADDRESS[:california],
40
+ :parcel => PARCEL[:dimensions]
76
41
  )
77
42
  expect(shipment).to be_an_instance_of(EasyPost::Shipment)
78
43
 
79
44
  shipment.buy(
80
- :rate => shipment.lowest_rate
45
+ :rate => shipment.lowest_rate("usps")
81
46
  )
82
47
  expect(shipment.postage_label.label_url.length).to be > 0
83
48
  end
@@ -85,17 +50,10 @@ describe EasyPost::Shipment do
85
50
 
86
51
  describe '#stamp' do
87
52
  it 'returns a stamp for a domestic shipment' do
88
- to_address = address_california
89
- from_address = address_missouri
90
- expect(from_address).to be_an_instance_of(EasyPost::Address)
91
-
92
- parcel = parcel_dimensions
93
- expect(parcel).to be_an_instance_of(EasyPost::Parcel)
94
-
95
53
  shipment = EasyPost::Shipment.create(
96
- :to_address => to_address,
97
- :from_address => from_address,
98
- :parcel => parcel
54
+ :to_address => ADDRESS[:missouri],
55
+ :from_address => ADDRESS[:california],
56
+ :parcel => PARCEL[:dimensions]
99
57
  )
100
58
  expect(shipment).to be_an_instance_of(EasyPost::Shipment)
101
59
 
@@ -111,17 +69,10 @@ describe EasyPost::Shipment do
111
69
 
112
70
  describe '#barcode' do
113
71
  it 'returns a barcode for a domestic shipment' do
114
- to_address = address_california
115
- from_address = address_missouri
116
- expect(from_address).to be_an_instance_of(EasyPost::Address)
117
-
118
- parcel = parcel_dimensions
119
- expect(parcel).to be_an_instance_of(EasyPost::Parcel)
120
-
121
72
  shipment = EasyPost::Shipment.create(
122
- :to_address => to_address,
123
- :from_address => from_address,
124
- :parcel => parcel
73
+ :to_address => ADDRESS[:missouri],
74
+ :from_address => ADDRESS[:california],
75
+ :parcel => PARCEL[:dimensions]
125
76
  )
126
77
  expect(shipment).to be_an_instance_of(EasyPost::Shipment)
127
78
 
@@ -139,10 +90,10 @@ describe EasyPost::Shipment do
139
90
  context 'domestic shipment' do
140
91
  before :all do
141
92
  @shipment = EasyPost::Shipment.create(
142
- :from_address => address_california,
143
- :to_address => address_missouri,
144
- :parcel => parcel_dimensions
145
- )
93
+ :to_address => ADDRESS[:missouri],
94
+ :from_address => ADDRESS[:california],
95
+ :parcel => PARCEL[:dimensions]
96
+ )
146
97
  end
147
98
 
148
99
  it 'filters negative services' do
@@ -153,16 +104,4 @@ describe EasyPost::Shipment do
153
104
  end
154
105
  end
155
106
 
156
- describe '#track_with_code' do
157
- it 'returns tracking information' do
158
- tracking = EasyPost::Shipment.track_with_code({
159
- :carrier => 'usps',
160
- :tracking_code => '9499907123456123456781'
161
- })
162
- expect(tracking).to be_an_instance_of(Array)
163
- expect(tracking[0][:status].length).to be > 0
164
- expect(tracking[0][:message].length).to be > 0
165
- end
166
- end
167
-
168
107
  end