shipwire 0.0.5 → 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.
- checksums.yaml +4 -4
- data/.gitignore +3 -3
- data/.rspec +2 -0
- data/.ruby-version +1 -1
- data/Gemfile +0 -1
- data/README.md +53 -29
- data/Rakefile +2 -3
- data/lib/generators/shipwire/install/install_generator.rb +13 -0
- data/lib/generators/shipwire/install/templates/config/initializers/shipwire.rb +27 -0
- data/lib/shipwire.rb +26 -33
- data/lib/shipwire/api.rb +7 -0
- data/lib/shipwire/configuration.rb +13 -3
- data/lib/shipwire/orders.rb +39 -0
- data/lib/shipwire/param_converter.rb +39 -0
- data/lib/shipwire/products.rb +53 -0
- data/lib/shipwire/products/base.rb +9 -0
- data/lib/shipwire/products/insert.rb +9 -0
- data/lib/shipwire/products/kit.rb +9 -0
- data/lib/shipwire/products/virtual_kit.rb +9 -0
- data/lib/shipwire/rate.rb +7 -0
- data/lib/shipwire/receivings.rb +50 -0
- data/lib/shipwire/request.rb +73 -0
- data/lib/shipwire/response.rb +79 -0
- data/lib/shipwire/returns.rb +35 -0
- data/lib/shipwire/secret.rb +20 -0
- data/lib/shipwire/stock.rb +7 -0
- data/lib/shipwire/utility.rb +22 -0
- data/lib/shipwire/version.rb +1 -1
- data/lib/shipwire/webhooks.rb +24 -0
- data/shipwire.gemspec +12 -15
- data/spec/features/access_spec.rb +61 -0
- data/spec/features/orders_spec.rb +280 -0
- data/spec/features/product_types_spec.rb +219 -0
- data/spec/features/products_spec.rb +282 -0
- data/spec/features/rate_spec.rb +50 -0
- data/spec/features/receivings_spec.rb +333 -0
- data/spec/features/returns_spec.rb +239 -0
- data/spec/features/secret_spec.rb +57 -0
- data/spec/features/stock_spec.rb +41 -0
- data/spec/features/webhooks_spec.rb +106 -0
- data/spec/spec_helper.rb +33 -12
- data/spec/support/shipwire.rb +10 -0
- data/spec/support/vcr.rb +9 -0
- data/spec/support/vcr_cassettes/credentials_incorrect.yml +47 -0
- data/spec/support/vcr_cassettes/credentials_missing.yml +47 -0
- data/spec/support/vcr_cassettes/order.yml +48 -0
- data/spec/support/vcr_cassettes/order_cancel.yml +54 -0
- data/spec/support/vcr_cassettes/order_cancel_fail.yml +47 -0
- data/spec/support/vcr_cassettes/order_find.yml +45 -0
- data/spec/support/vcr_cassettes/order_find_fail.yml +45 -0
- data/spec/support/vcr_cassettes/order_find_with_params.yml +45 -0
- data/spec/support/vcr_cassettes/order_holds.yml +50 -0
- data/spec/support/vcr_cassettes/order_holds_fail.yml +45 -0
- data/spec/support/vcr_cassettes/order_holds_with_params.yml +50 -0
- data/spec/support/vcr_cassettes/order_items.yml +45 -0
- data/spec/support/vcr_cassettes/order_items_fail.yml +45 -0
- data/spec/support/vcr_cassettes/order_returns.yml +47 -0
- data/spec/support/vcr_cassettes/order_returns_fail.yml +47 -0
- data/spec/support/vcr_cassettes/order_trackings.yml +45 -0
- data/spec/support/vcr_cassettes/order_trackings_fail.yml +45 -0
- data/spec/support/vcr_cassettes/order_update.yml +48 -0
- data/spec/support/vcr_cassettes/order_update_fail.yml +50 -0
- data/spec/support/vcr_cassettes/order_update_with_params.yml +48 -0
- data/spec/support/vcr_cassettes/order_with_warnings.yml +96 -0
- data/spec/support/vcr_cassettes/orders_list.yml +47 -0
- data/spec/support/vcr_cassettes/orders_list_with_params.yml +47 -0
- data/spec/support/vcr_cassettes/product.yml +48 -0
- data/spec/support/vcr_cassettes/product_base.yml +48 -0
- data/spec/support/vcr_cassettes/product_base_find.yml +48 -0
- data/spec/support/vcr_cassettes/product_base_find_fail.yml +47 -0
- data/spec/support/vcr_cassettes/product_base_retire_id.yml +47 -0
- data/spec/support/vcr_cassettes/product_base_retire_nonexistent.yml +47 -0
- data/spec/support/vcr_cassettes/product_base_update.yml +48 -0
- data/spec/support/vcr_cassettes/product_base_update_fail.yml +48 -0
- data/spec/support/vcr_cassettes/product_create_fail_with_invalid_classification.yml +51 -0
- data/spec/support/vcr_cassettes/product_find.yml +48 -0
- data/spec/support/vcr_cassettes/product_find_fail.yml +47 -0
- data/spec/support/vcr_cassettes/product_insert.yml +50 -0
- data/spec/support/vcr_cassettes/product_insert_find.yml +48 -0
- data/spec/support/vcr_cassettes/product_insert_find_fail.yml +47 -0
- data/spec/support/vcr_cassettes/product_insert_retire_id.yml +47 -0
- data/spec/support/vcr_cassettes/product_insert_retire_nonexistent.yml +47 -0
- data/spec/support/vcr_cassettes/product_insert_update.yml +49 -0
- data/spec/support/vcr_cassettes/product_insert_update_fail.yml +48 -0
- data/spec/support/vcr_cassettes/product_kit.yml +48 -0
- data/spec/support/vcr_cassettes/product_kit_find.yml +48 -0
- data/spec/support/vcr_cassettes/product_kit_find_fail.yml +47 -0
- data/spec/support/vcr_cassettes/product_kit_retire_id.yml +47 -0
- data/spec/support/vcr_cassettes/product_kit_retire_nonexistent.yml +47 -0
- data/spec/support/vcr_cassettes/product_kit_update.yml +48 -0
- data/spec/support/vcr_cassettes/product_kit_update_fail.yml +47 -0
- data/spec/support/vcr_cassettes/product_multiple_create_fail.yml +102 -0
- data/spec/support/vcr_cassettes/product_multiple_create_success.yml +100 -0
- data/spec/support/vcr_cassettes/product_retire_id.yml +47 -0
- data/spec/support/vcr_cassettes/product_retire_nonexistent.yml +47 -0
- data/spec/support/vcr_cassettes/product_update.yml +48 -0
- data/spec/support/vcr_cassettes/product_update_fail.yml +48 -0
- data/spec/support/vcr_cassettes/product_virtual_kit.yml +48 -0
- data/spec/support/vcr_cassettes/product_virtual_kit_find.yml +48 -0
- data/spec/support/vcr_cassettes/product_virtual_kit_find_fail.yml +47 -0
- data/spec/support/vcr_cassettes/product_virtual_kit_retire_id.yml +47 -0
- data/spec/support/vcr_cassettes/product_virtual_kit_retire_nonexistent.yml +47 -0
- data/spec/support/vcr_cassettes/product_virtual_kit_update.yml +49 -0
- data/spec/support/vcr_cassettes/product_virtual_kit_update_fail.yml +47 -0
- data/spec/support/vcr_cassettes/products_base_list.yml +49 -0
- data/spec/support/vcr_cassettes/products_base_list_with_params.yml +49 -0
- data/spec/support/vcr_cassettes/products_insert_list.yml +47 -0
- data/spec/support/vcr_cassettes/products_insert_list_with_params.yml +47 -0
- data/spec/support/vcr_cassettes/products_kit_list.yml +47 -0
- data/spec/support/vcr_cassettes/products_kit_list_with_params.yml +47 -0
- data/spec/support/vcr_cassettes/products_list.yml +49 -0
- data/spec/support/vcr_cassettes/products_list_with_params.yml +49 -0
- data/spec/support/vcr_cassettes/products_virtual_kit_list.yml +47 -0
- data/spec/support/vcr_cassettes/products_virtual_kit_list_with_params.yml +47 -0
- data/spec/support/vcr_cassettes/rate_find.yml +53 -0
- data/spec/support/vcr_cassettes/rate_find_fail.yml +50 -0
- data/spec/support/vcr_cassettes/receiving.yml +53 -0
- data/spec/support/vcr_cassettes/receiving_cancel.yml +98 -0
- data/spec/support/vcr_cassettes/receiving_cancel_label.yml +47 -0
- data/spec/support/vcr_cassettes/receiving_cancel_label_nonexistent.yml +47 -0
- data/spec/support/vcr_cassettes/receiving_find.yml +46 -0
- data/spec/support/vcr_cassettes/receiving_find_fail.yml +45 -0
- data/spec/support/vcr_cassettes/receiving_find_with_params.yml +48 -0
- data/spec/support/vcr_cassettes/receiving_holds.yml +47 -0
- data/spec/support/vcr_cassettes/receiving_holds_fail.yml +45 -0
- data/spec/support/vcr_cassettes/receiving_holds_with_params.yml +47 -0
- data/spec/support/vcr_cassettes/receiving_instructions_recipients.yml +45 -0
- data/spec/support/vcr_cassettes/receiving_instructions_recipients_fail.yml +45 -0
- data/spec/support/vcr_cassettes/receiving_items.yml +45 -0
- data/spec/support/vcr_cassettes/receiving_items_fail.yml +45 -0
- data/spec/support/vcr_cassettes/receiving_shipments.yml +45 -0
- data/spec/support/vcr_cassettes/receiving_shipments_fail.yml +45 -0
- data/spec/support/vcr_cassettes/receiving_tracking.yml +45 -0
- data/spec/support/vcr_cassettes/receiving_tracking_fail.yml +45 -0
- data/spec/support/vcr_cassettes/receiving_update.yml +53 -0
- data/spec/support/vcr_cassettes/receiving_update_fail.yml +49 -0
- data/spec/support/vcr_cassettes/receiving_update_with_params.yml +55 -0
- data/spec/support/vcr_cassettes/receivings_list.yml +53 -0
- data/spec/support/vcr_cassettes/receivings_list_with_params.yml +46 -0
- data/spec/support/vcr_cassettes/return.yml +98 -0
- data/spec/support/vcr_cassettes/return_cancel.yml +55 -0
- data/spec/support/vcr_cassettes/return_cancel_fail.yml +47 -0
- data/spec/support/vcr_cassettes/return_find.yml +47 -0
- data/spec/support/vcr_cassettes/return_find_fail.yml +45 -0
- data/spec/support/vcr_cassettes/return_find_with_params.yml +47 -0
- data/spec/support/vcr_cassettes/return_holds.yml +45 -0
- data/spec/support/vcr_cassettes/return_holds_fail.yml +45 -0
- data/spec/support/vcr_cassettes/return_holds_with_params.yml +45 -0
- data/spec/support/vcr_cassettes/return_items.yml +45 -0
- data/spec/support/vcr_cassettes/return_items_fail.yml +45 -0
- data/spec/support/vcr_cassettes/return_labels.yml +45 -0
- data/spec/support/vcr_cassettes/return_labels_fail.yml +45 -0
- data/spec/support/vcr_cassettes/return_trackings.yml +45 -0
- data/spec/support/vcr_cassettes/return_trackings_fail.yml +45 -0
- data/spec/support/vcr_cassettes/returns_list.yml +47 -0
- data/spec/support/vcr_cassettes/returns_list_with_params.yml +47 -0
- data/spec/support/vcr_cassettes/secret.yml +47 -0
- data/spec/support/vcr_cassettes/secret_find.yml +45 -0
- data/spec/support/vcr_cassettes/secret_find_fail.yml +43 -0
- data/spec/support/vcr_cassettes/secret_list.yml +45 -0
- data/spec/support/vcr_cassettes/secret_remove.yml +45 -0
- data/spec/support/vcr_cassettes/stock_with_params.yml +45 -0
- data/spec/support/vcr_cassettes/stock_with_params_no_sku.yml +45 -0
- data/spec/support/vcr_cassettes/stock_without_params.yml +45 -0
- data/spec/support/vcr_cassettes/webhook.yml +47 -0
- data/spec/support/vcr_cassettes/webhooks_create_insecure.yml +50 -0
- data/spec/support/vcr_cassettes/webhooks_find.yml +47 -0
- data/spec/support/vcr_cassettes/webhooks_find_fail.yml +47 -0
- data/spec/support/vcr_cassettes/webhooks_list.yml +47 -0
- data/spec/support/vcr_cassettes/webhooks_remove.yml +47 -0
- data/spec/support/vcr_cassettes/webhooks_update.yml +47 -0
- data/spec/support/vcr_cassettes/webhooks_update_fail.yml +49 -0
- data/spec/unit/shipwire/response_spec.rb +46 -0
- metadata +354 -80
- data/.env +0 -4
- data/.env.example +0 -4
- data/Gemfile.lock +0 -69
- data/lib/shipwire/fulfillment.rb +0 -100
- data/lib/shipwire/inventory.rb +0 -72
- data/lib/shipwire/service_request.rb +0 -42
- data/lib/shipwire/shipping_rate.rb +0 -121
- data/lib/shipwire/tracking.rb +0 -101
- data/spec/shipwire/fulfillment_spec.rb +0 -36
- data/spec/shipwire/inventory_spec.rb +0 -25
- data/spec/shipwire/shipping_rate_spec.rb +0 -62
- data/spec/shipwire/tracking_spec.rb +0 -20
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Shipwire::Fulfillment, vcr: true do
|
|
4
|
-
let(:configuration) { Shipwire.configuration }
|
|
5
|
-
|
|
6
|
-
let(:address) {
|
|
7
|
-
{
|
|
8
|
-
first_name: 'Bill',
|
|
9
|
-
last_name: 'Rowell',
|
|
10
|
-
address1: '540 West Boylston St.',
|
|
11
|
-
city: 'Worcester',
|
|
12
|
-
state: 'MA',
|
|
13
|
-
country: 'US',
|
|
14
|
-
zip: '01606',
|
|
15
|
-
phone: '555-555-5555'
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
let(:orders) { [
|
|
20
|
-
order_number: 'W0000001',
|
|
21
|
-
shipping: 'GD',
|
|
22
|
-
email: 'test@example.com',
|
|
23
|
-
items: [{ code: '123456', quantity: 1 }],
|
|
24
|
-
address: address
|
|
25
|
-
] }
|
|
26
|
-
|
|
27
|
-
it 'should get back a valid fulfillment response' do
|
|
28
|
-
fulfillment = Shipwire::Fulfillment.new({
|
|
29
|
-
orders: orders
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
fulfillment.send
|
|
33
|
-
fulfillment.parse_response
|
|
34
|
-
expect(fulfillment.order_responses.count).to be > 0
|
|
35
|
-
end
|
|
36
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Shipwire::Inventory, vcr: true do
|
|
4
|
-
let(:configuration) { Shipwire.configuration }
|
|
5
|
-
|
|
6
|
-
let(:product_code) { 'GD802-024' }
|
|
7
|
-
|
|
8
|
-
it 'should get back a valid response for all items' do
|
|
9
|
-
inventory = Shipwire::Inventory.new()
|
|
10
|
-
|
|
11
|
-
inventory.send
|
|
12
|
-
inventory.parse_response
|
|
13
|
-
expect(inventory.inventory_responses.count).to be > 0
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
it 'should get back a valid response for a single item' do
|
|
17
|
-
pending 'Shipwire always returns 2 products. Grrrr!'
|
|
18
|
-
|
|
19
|
-
inventory = Shipwire::Inventory.new({ product_code: product_code })
|
|
20
|
-
|
|
21
|
-
inventory.send
|
|
22
|
-
inventory.parse_response
|
|
23
|
-
expect(inventory.inventory_responses.count).to eql 1
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Shipwire::ShippingRate, vcr: true do
|
|
4
|
-
let(:configuration) { Shipwire.configuration }
|
|
5
|
-
|
|
6
|
-
let(:address) {
|
|
7
|
-
{
|
|
8
|
-
address1: '540 West Boylston St.',
|
|
9
|
-
city: 'Worcester',
|
|
10
|
-
state: 'MA',
|
|
11
|
-
country: 'US',
|
|
12
|
-
zip: '01606'
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
let(:items) { [{ code: '123456', quantity: 1 }] }
|
|
17
|
-
|
|
18
|
-
let(:non_existing_items) { [{ code: 'ABCDEFG', quantity: 1 } ]}
|
|
19
|
-
|
|
20
|
-
it 'should get back a valid shipping response' do
|
|
21
|
-
shipping_rate = Shipwire::ShippingRate.new({
|
|
22
|
-
address: address,
|
|
23
|
-
items: items
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
shipping_rate.send
|
|
27
|
-
shipping_rate.parse_response
|
|
28
|
-
expect(shipping_rate.shipping_quotes.count).to be > 0
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
it 'should have no shipping rates for an unknown item code' do
|
|
32
|
-
shipping_rate = Shipwire::ShippingRate.new({
|
|
33
|
-
address: address,
|
|
34
|
-
items: non_existing_items
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
shipping_rate.send
|
|
38
|
-
shipping_rate.parse_response
|
|
39
|
-
expect(shipping_rate.shipping_quotes.count).to eql(0)
|
|
40
|
-
expect(shipping_rate.errors.count).to be > 0
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it 'should have valid return values for a shipping quote' do
|
|
44
|
-
shipping_rate = Shipwire::ShippingRate.new({
|
|
45
|
-
address: address,
|
|
46
|
-
items: items
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
shipping_rate.send
|
|
50
|
-
shipping_rate.parse_response
|
|
51
|
-
|
|
52
|
-
shipping_quote = shipping_rate.shipping_quotes.first
|
|
53
|
-
expect(shipping_quote[:service]).to_not be nil
|
|
54
|
-
expect(shipping_quote[:carrier_code]).to_not be nil
|
|
55
|
-
expect(shipping_quote[:code]).to_not be nil
|
|
56
|
-
expect(shipping_quote[:cost]).to be > 0
|
|
57
|
-
expect(shipping_quote[:subtotals][:freight]).to be > 0.0
|
|
58
|
-
expect(shipping_quote[:subtotals][:insurance]).to eql 0.0
|
|
59
|
-
expect(shipping_quote[:subtotals][:packaging]).to eql 0.0
|
|
60
|
-
expect(shipping_quote[:subtotals][:handling]).to eql 0.0
|
|
61
|
-
end
|
|
62
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Shipwire::Tracking, vcr: true do
|
|
4
|
-
let(:configuration) { Shipwire.configuration }
|
|
5
|
-
|
|
6
|
-
it 'should raise error if bookmark set to 1' do
|
|
7
|
-
expect { Shipwire::Tracking.new({ bookmark: '1' }) }.to raise_error(Shipwire::TrackingError)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'should get back some tracking responses' do
|
|
11
|
-
tracking = Shipwire::Tracking.new({
|
|
12
|
-
bookmark: '2'
|
|
13
|
-
})
|
|
14
|
-
|
|
15
|
-
tracking.send
|
|
16
|
-
tracking.parse_response
|
|
17
|
-
|
|
18
|
-
expect(tracking.order_responses.length).to be > 0
|
|
19
|
-
end
|
|
20
|
-
end
|