ship_compliant 0.1.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 +7 -0
- data/.gitignore +17 -0
- data/.travis.yml +8 -0
- data/Gemfile +7 -0
- data/LICENSE.txt +22 -0
- data/README.md +50 -0
- data/Rakefile +47 -0
- data/cucumber.yml +9 -0
- data/features/add_update_brand.feature +20 -0
- data/features/add_update_product.feature +24 -0
- data/features/check_compliance_of_sales_order_with_address_validations.feature +18 -0
- data/features/commit_sales_order.feature +6 -0
- data/features/get_inventory_details.feature +7 -0
- data/features/get_sales_order_extended.feature +15 -0
- data/features/search_sales_orders.feature +13 -0
- data/features/step_definitions/brand_steps.rb +73 -0
- data/features/step_definitions/commit_sales_order/all_shipments.rb +15 -0
- data/features/step_definitions/compliance_check/available_product_steps.rb +175 -0
- data/features/step_definitions/compliance_check/missing_product_steps.rb +102 -0
- data/features/step_definitions/compliance_check/noncompliant_product.rb +102 -0
- data/features/step_definitions/credential_steps.rb +8 -0
- data/features/step_definitions/inventory_steps.rb +36 -0
- data/features/step_definitions/product_steps.rb +140 -0
- data/features/step_definitions/sales_order_extended_steps.rb +79 -0
- data/features/step_definitions/search_order_steps.rb +87 -0
- data/features/step_definitions/void_order_steps.rb +27 -0
- data/features/support/env.rb +14 -0
- data/features/void_sales_order.feature +11 -0
- data/fixtures/vcr_cassettes/brand_already_exists.yml +1038 -0
- data/fixtures/vcr_cassettes/brand_ignore_existing.yml +1037 -0
- data/fixtures/vcr_cassettes/brand_update_existing.yml +1037 -0
- data/fixtures/vcr_cassettes/brand_valid.yml +1037 -0
- data/fixtures/vcr_cassettes/commit_salesorder_all_shipments.yml +1034 -0
- data/fixtures/vcr_cassettes/compliance_available_product.yml +1075 -0
- data/fixtures/vcr_cassettes/compliance_missing_product.yml +1046 -0
- data/fixtures/vcr_cassettes/compliance_noncompliant_product.yml +1082 -0
- data/fixtures/vcr_cassettes/ignore_existing_product.yml +1035 -0
- data/fixtures/vcr_cassettes/invalid_search_sales_orders.yml +1038 -0
- data/fixtures/vcr_cassettes/inventory_details_for_everything.yml +1037 -0
- data/fixtures/vcr_cassettes/product_already_exists.yml +1036 -0
- data/fixtures/vcr_cassettes/product_invalid_brand.yml +1036 -0
- data/fixtures/vcr_cassettes/product_valid_brand.yml +1035 -0
- data/fixtures/vcr_cassettes/sales_order_extended.yml +1042 -0
- data/fixtures/vcr_cassettes/sales_order_missing.yml +1034 -0
- data/fixtures/vcr_cassettes/search_sales_orders.yml +1039 -0
- data/fixtures/vcr_cassettes/update_product.yml +1035 -0
- data/fixtures/vcr_cassettes/void_order.yml +1033 -0
- data/fixtures/vcr_cassettes/void_voided_order.yml +1034 -0
- data/lib/ship_compliant.rb +62 -0
- data/lib/ship_compliant/add_update_brand.rb +50 -0
- data/lib/ship_compliant/add_update_brand_result.rb +6 -0
- data/lib/ship_compliant/add_update_product.rb +66 -0
- data/lib/ship_compliant/add_update_product_result.rb +6 -0
- data/lib/ship_compliant/address.rb +87 -0
- data/lib/ship_compliant/address/suggested_address.rb +37 -0
- data/lib/ship_compliant/base_result.rb +43 -0
- data/lib/ship_compliant/channel_details.rb +31 -0
- data/lib/ship_compliant/check_compliance.rb +41 -0
- data/lib/ship_compliant/check_compliance_result.rb +95 -0
- data/lib/ship_compliant/client.rb +54 -0
- data/lib/ship_compliant/commit_sales_order.rb +48 -0
- data/lib/ship_compliant/commit_sales_order_result.rb +30 -0
- data/lib/ship_compliant/compliance_rule.rb +30 -0
- data/lib/ship_compliant/configuration.rb +46 -0
- data/lib/ship_compliant/error_result.rb +41 -0
- data/lib/ship_compliant/freight_sales_tax_rate.rb +8 -0
- data/lib/ship_compliant/get_inventory_details.rb +31 -0
- data/lib/ship_compliant/get_inventory_details_result.rb +41 -0
- data/lib/ship_compliant/get_sales_order_extended.rb +23 -0
- data/lib/ship_compliant/get_sales_order_extended_result.rb +65 -0
- data/lib/ship_compliant/inventory_product.rb +95 -0
- data/lib/ship_compliant/order_search.rb +92 -0
- data/lib/ship_compliant/package.rb +13 -0
- data/lib/ship_compliant/product_attributes.rb +98 -0
- data/lib/ship_compliant/product_sales_tax_rate.rb +23 -0
- data/lib/ship_compliant/sales_tax_rate.rb +22 -0
- data/lib/ship_compliant/search_sales_order_summary.rb +30 -0
- data/lib/ship_compliant/search_sales_orders.rb +53 -0
- data/lib/ship_compliant/search_sales_orders_result.rb +106 -0
- data/lib/ship_compliant/shipment.rb +59 -0
- data/lib/ship_compliant/shipment_compliance.rb +28 -0
- data/lib/ship_compliant/shipment_sales_tax_rate.rb +15 -0
- data/lib/ship_compliant/version.rb +3 -0
- data/lib/ship_compliant/void_sales_order.rb +42 -0
- data/lib/ship_compliant/void_sales_order_result.rb +20 -0
- data/ship_compliant.gemspec +33 -0
- data/spec/fixtures/add_update_product.xml +22 -0
- data/spec/fixtures/check_compliance.xml +125 -0
- data/spec/fixtures/coreservice.wsdl +1341 -0
- data/spec/fixtures/search_sales_orders.xml +52 -0
- data/spec/fixtures/void_order_failure.xml +31 -0
- data/spec/fixtures/void_order_success.xml +22 -0
- data/spec/lib/ship_compliant/add_update_brand_result_spec.rb +7 -0
- data/spec/lib/ship_compliant/add_update_brand_spec.rb +58 -0
- data/spec/lib/ship_compliant/add_update_product_result_spec.rb +7 -0
- data/spec/lib/ship_compliant/add_update_product_spec.rb +52 -0
- data/spec/lib/ship_compliant/address/suggested_address_spec.rb +28 -0
- data/spec/lib/ship_compliant/address_spec.rb +123 -0
- data/spec/lib/ship_compliant/base_result_spec.rb +127 -0
- data/spec/lib/ship_compliant/channel_details_spec.rb +40 -0
- data/spec/lib/ship_compliant/check_compliance_result_spec.rb +135 -0
- data/spec/lib/ship_compliant/check_compliance_spec.rb +43 -0
- data/spec/lib/ship_compliant/client_spec.rb +73 -0
- data/spec/lib/ship_compliant/commit_sales_order_result_spec.rb +32 -0
- data/spec/lib/ship_compliant/commit_sales_order_spec.rb +38 -0
- data/spec/lib/ship_compliant/compliance_rule_spec.rb +47 -0
- data/spec/lib/ship_compliant/configuration_spec.rb +47 -0
- data/spec/lib/ship_compliant/error_result_spec.rb +47 -0
- data/spec/lib/ship_compliant/freight_sales_tax_rate_spec.rb +7 -0
- data/spec/lib/ship_compliant/get_inventory_details_result_spec.rb +87 -0
- data/spec/lib/ship_compliant/get_inventory_details_spec.rb +35 -0
- data/spec/lib/ship_compliant/get_sales_order_extended_result_spec.rb +84 -0
- data/spec/lib/ship_compliant/get_sales_order_extended_spec.rb +39 -0
- data/spec/lib/ship_compliant/inventory_product_spec.rb +116 -0
- data/spec/lib/ship_compliant/order_search_spec.rb +21 -0
- data/spec/lib/ship_compliant/package_spec.rb +26 -0
- data/spec/lib/ship_compliant/product_attributes_spec.rb +36 -0
- data/spec/lib/ship_compliant/product_sales_tax_rate_spec.rb +22 -0
- data/spec/lib/ship_compliant/sales_tax_rate_spec.rb +21 -0
- data/spec/lib/ship_compliant/search_sales_order_summary_spec.rb +56 -0
- data/spec/lib/ship_compliant/search_sales_orders_result_spec.rb +121 -0
- data/spec/lib/ship_compliant/search_sales_orders_spec.rb +42 -0
- data/spec/lib/ship_compliant/shipment_compliance_spec.rb +46 -0
- data/spec/lib/ship_compliant/shipment_sales_tax_rate_spec.rb +20 -0
- data/spec/lib/ship_compliant/shipment_spec.rb +106 -0
- data/spec/lib/ship_compliant/void_sales_order_result_spec.rb +7 -0
- data/spec/lib/ship_compliant/void_sales_order_spec.rb +41 -0
- data/spec/spec_helper.rb +50 -0
- metadata +366 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module ShipCompliant
|
4
|
+
describe ProductAttributes do
|
5
|
+
|
6
|
+
context "to_h" do
|
7
|
+
it "converts keys to pascal case" do
|
8
|
+
product = ProductAttributes.new(unit_price: 10)
|
9
|
+
product.to_h.should == {
|
10
|
+
"UnitPrice" => 10
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
it "handles special cases" do
|
15
|
+
product = ProductAttributes.new(
|
16
|
+
bottle_size_ml: 'value',
|
17
|
+
gtin: 'value',
|
18
|
+
nabca: 'value',
|
19
|
+
scc: 'value',
|
20
|
+
unimerc: 'value',
|
21
|
+
upc: 'value'
|
22
|
+
)
|
23
|
+
|
24
|
+
product.to_h.should == {
|
25
|
+
'BottleSizeML' => 'value',
|
26
|
+
'GTIN' => 'value',
|
27
|
+
'NABCA' => 'value',
|
28
|
+
'SCC' => 'value',
|
29
|
+
'UNIMERC' => 'value',
|
30
|
+
'UPC' => 'value'
|
31
|
+
}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module ShipCompliant
|
4
|
+
describe ProductSalesTaxRate do
|
5
|
+
|
6
|
+
it { should be_kind_of(SalesTaxRate) }
|
7
|
+
subject { ProductSalesTaxRate.new(brand_key: 'brand-key', product_key: 'the-product') }
|
8
|
+
|
9
|
+
context "product_key" do
|
10
|
+
it "returns the product key" do
|
11
|
+
subject.product_key.should == 'the-product'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context "brand_key" do
|
16
|
+
it "returns the brand key" do
|
17
|
+
subject.brand_key.should == 'brand-key'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module ShipCompliant
|
4
|
+
describe SalesTaxRate do
|
5
|
+
|
6
|
+
context "sales_tax_due" do
|
7
|
+
it "returns sales_tax_due" do
|
8
|
+
tax_rate = SalesTaxRate.new(sales_tax_due: '34.43')
|
9
|
+
tax_rate.sales_tax_due.should == 34.43
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context "sales_tax_rate" do
|
14
|
+
it "return sales_tax_rate" do
|
15
|
+
tax_rate = SalesTaxRate.new(sales_tax_rate: '2.34')
|
16
|
+
tax_rate.sales_tax_rate.should == 2.34
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module ShipCompliant
|
4
|
+
describe SearchSalesOrderSummary do
|
5
|
+
let(:response) do
|
6
|
+
{
|
7
|
+
purchase_date: DateTime.new(2014, 1, 1),
|
8
|
+
sales_order_key: 'ORD-1',
|
9
|
+
shipments: {
|
10
|
+
shipment_summary: {
|
11
|
+
compliance: 'Perfect Score',
|
12
|
+
requested_ship_date: '2014-01-03T14:30:00',
|
13
|
+
ship_date: '2014-01-03T12:23:00',
|
14
|
+
|
15
|
+
ship_to: {
|
16
|
+
first_name: 'Bob',
|
17
|
+
last_name: 'Smith',
|
18
|
+
zip1: 80234
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
let(:summary) { SearchSalesOrderSummary.new(response) }
|
26
|
+
|
27
|
+
context "purchase_date" do
|
28
|
+
it "returns a DateTime from the purchase date" do
|
29
|
+
summary.purchase_date.should == DateTime.new(2014, 1, 1)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "order_key" do
|
34
|
+
it "returns the order_key" do
|
35
|
+
summary.order_key.should == 'ORD-1'
|
36
|
+
summary.sales_order_key.should == 'ORD-1'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "shipment_summary" do
|
41
|
+
it "the parsed hash" do
|
42
|
+
summary.shipment_summary.should == {
|
43
|
+
compliance: 'Perfect Score',
|
44
|
+
requested_ship_date: '2014-01-03T14:30:00',
|
45
|
+
ship_date: '2014-01-03T12:23:00',
|
46
|
+
|
47
|
+
ship_to: {
|
48
|
+
first_name: 'Bob',
|
49
|
+
last_name: 'Smith',
|
50
|
+
zip1: 80234
|
51
|
+
}
|
52
|
+
}
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module ShipCompliant
|
4
|
+
describe SearchSalesOrdersResult do
|
5
|
+
|
6
|
+
let(:response) do
|
7
|
+
{
|
8
|
+
paging_cookie: 'paging-cookie',
|
9
|
+
paging_cookie_expires: Date.new(2014, 1, 1),
|
10
|
+
sales_orders: {
|
11
|
+
sales_order_summary: {
|
12
|
+
shipments: {}
|
13
|
+
}
|
14
|
+
}
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
it_behaves_like "BaseResult"
|
19
|
+
|
20
|
+
context "length" do
|
21
|
+
it "returns the number of returned orders" do
|
22
|
+
response[:count_sales_orders_returned] = '5'
|
23
|
+
result = SearchSalesOrdersResult.new(response)
|
24
|
+
|
25
|
+
result.length.should == 5
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "remaining_orders_length" do
|
30
|
+
it "returns the number of orders left" do
|
31
|
+
response[:count_more_sales_orders_available] = '8'
|
32
|
+
result = SearchSalesOrdersResult.new(response)
|
33
|
+
|
34
|
+
result.remaining_orders_length.should == 8
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context "paging_cookie" do
|
39
|
+
it "gets the paging cookie" do
|
40
|
+
result = SearchSalesOrdersResult.new(response)
|
41
|
+
result.paging_cookie.should == 'paging-cookie'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context "paging_cookie_expires" do
|
46
|
+
it "gets the expiration date" do
|
47
|
+
result = SearchSalesOrdersResult.new(response)
|
48
|
+
result.paging_cookie_expires.should == Date.new(2014, 1, 1)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context "summaries" do
|
53
|
+
it "returns an array of SearchSalesOrderSummary" do
|
54
|
+
result = SearchSalesOrdersResult.new(response)
|
55
|
+
result.summaries[0].should be_kind_of(SearchSalesOrderSummary)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "returns empty array when blank" do
|
59
|
+
result = SearchSalesOrdersResult.new({})
|
60
|
+
result.summaries.should == []
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "parse!" do
|
65
|
+
it "adds missing sales_orders summaries" do
|
66
|
+
result = SearchSalesOrdersResult.new({})
|
67
|
+
result.raw.should == {
|
68
|
+
sales_orders: {
|
69
|
+
sales_order_summary: [{}]
|
70
|
+
}
|
71
|
+
}
|
72
|
+
end
|
73
|
+
|
74
|
+
it "converts single order summary to an array" do
|
75
|
+
result = SearchSalesOrdersResult.new(response)
|
76
|
+
|
77
|
+
result.raw.should == {
|
78
|
+
paging_cookie: 'paging-cookie',
|
79
|
+
paging_cookie_expires: Date.new(2014, 1, 1),
|
80
|
+
sales_orders: {
|
81
|
+
sales_order_summary: [
|
82
|
+
shipments: {}
|
83
|
+
]
|
84
|
+
}
|
85
|
+
}
|
86
|
+
end
|
87
|
+
|
88
|
+
it "converts fields to integers" do
|
89
|
+
response[:count_more_sales_orders_available] = '10'
|
90
|
+
response[:count_sales_orders_returned] = '5'
|
91
|
+
response[:sales_orders][:sales_order_summary][:shipments] = {
|
92
|
+
shipment_summary: {
|
93
|
+
shipment_key: '59',
|
94
|
+
ship_to: {
|
95
|
+
zip1: '12345'
|
96
|
+
}
|
97
|
+
}
|
98
|
+
}
|
99
|
+
|
100
|
+
result = SearchSalesOrdersResult.new(response)
|
101
|
+
|
102
|
+
result.raw.should == {
|
103
|
+
paging_cookie: 'paging-cookie',
|
104
|
+
paging_cookie_expires: Date.new(2014, 1, 1),
|
105
|
+
count_more_sales_orders_available: 10,
|
106
|
+
count_sales_orders_returned: 5,
|
107
|
+
|
108
|
+
sales_orders: {
|
109
|
+
sales_order_summary: [
|
110
|
+
{
|
111
|
+
shipments: {
|
112
|
+
shipment_summary: {shipment_key: 59, ship_to: { zip1: 12345 }}
|
113
|
+
}
|
114
|
+
}
|
115
|
+
]
|
116
|
+
}
|
117
|
+
}
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module ShipCompliant
|
4
|
+
describe SearchSalesOrders do
|
5
|
+
|
6
|
+
before { savon.mock! }
|
7
|
+
after { savon.unmock! }
|
8
|
+
|
9
|
+
context "find_by" do
|
10
|
+
|
11
|
+
let(:message) do
|
12
|
+
{
|
13
|
+
'Request' => {
|
14
|
+
'Security' => {
|
15
|
+
'PartnerKey' => 'abc-123',
|
16
|
+
'Username' => 'bob@example.com',
|
17
|
+
'Password' => 'secret'
|
18
|
+
},
|
19
|
+
'ComplianceStatus' => 45
|
20
|
+
}
|
21
|
+
}
|
22
|
+
end
|
23
|
+
let(:response) { File.read('spec/fixtures/search_sales_orders.xml') }
|
24
|
+
|
25
|
+
it "queries the client" do
|
26
|
+
savon.expects(:search_sales_orders)
|
27
|
+
.with(message: message).returns(response)
|
28
|
+
|
29
|
+
SearchSalesOrders.find_by({
|
30
|
+
compliance_status: 45
|
31
|
+
})
|
32
|
+
end
|
33
|
+
|
34
|
+
it "returns a SearchSalesOrdersResult" do
|
35
|
+
SearchSalesOrders.stub(:search_sales) { {} }
|
36
|
+
|
37
|
+
result = SearchSalesOrders.find_by({})
|
38
|
+
result.should be_kind_of(SearchSalesOrdersResult)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module ShipCompliant
|
4
|
+
describe ShipmentCompliance do
|
5
|
+
|
6
|
+
context "compliant?" do
|
7
|
+
it "check is a shipment was compliant" do
|
8
|
+
subject.compliant?.should be_true
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
context "shipment_key" do
|
13
|
+
it "returns the shipment key" do
|
14
|
+
subject.shipment_key.should == 'AN-ORDER-KEY'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "rules" do
|
19
|
+
it "returns an array of ComplianceRule" do
|
20
|
+
subject.rules.should == [
|
21
|
+
ComplianceRule.new(compliance_description: "You're clear for take off ghost rider")
|
22
|
+
]
|
23
|
+
end
|
24
|
+
|
25
|
+
it "returns an empty array when none found" do
|
26
|
+
shipment = ShipmentCompliance.new({
|
27
|
+
rules: nil
|
28
|
+
})
|
29
|
+
|
30
|
+
shipment.rules.should == []
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
subject do
|
35
|
+
ShipmentCompliance.new(
|
36
|
+
is_compliant: true,
|
37
|
+
key: 'AN-ORDER-KEY',
|
38
|
+
rules: {
|
39
|
+
rule_compliance_response: {
|
40
|
+
compliance_description: "You're clear for take off ghost rider"
|
41
|
+
}
|
42
|
+
}
|
43
|
+
)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module ShipCompliant
|
4
|
+
describe ShipmentSalesTaxRate do
|
5
|
+
|
6
|
+
context "taxes_for_product" do
|
7
|
+
it "returns product sales tax rate" do
|
8
|
+
product_1, product_2, product_3 = [1, 2, 3].map { |p_id| ProductSalesTaxRate.new(product_key: "product-#{p_id}") }
|
9
|
+
shipment = ShipmentSalesTaxRate.new(nil, nil, [
|
10
|
+
product_1,
|
11
|
+
product_2,
|
12
|
+
product_3
|
13
|
+
])
|
14
|
+
|
15
|
+
shipment.taxes_for_product('product-2').should == product_2
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module ShipCompliant
|
4
|
+
describe Shipment do
|
5
|
+
|
6
|
+
context "fulfillment_house" do
|
7
|
+
it "gets the fulfillment_house" do
|
8
|
+
subject.fulfillment_house.should == 'Chucky Cheese'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
context "fulfillment_exception_reason" do
|
13
|
+
it "gets the fulfillment_exception_reason" do
|
14
|
+
subject.fulfillment_exception_reason.should == 'Cheese must be aged.'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "fulfillment_exception_type" do
|
19
|
+
it "gets the fulfillment_exception_type" do
|
20
|
+
subject.fulfillment_exception_type.should == 'None'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "fulfillment_status" do
|
25
|
+
it "gets the fulfillment_status" do
|
26
|
+
subject.fulfillment_status.should == 'Accepted'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "handling" do
|
31
|
+
it "gets the handling" do
|
32
|
+
subject.handling.should == 338.33
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "insured_amount" do
|
37
|
+
it "gets the insured_amount" do
|
38
|
+
subject.insured_amount.should == 10000.33
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "shipping" do
|
43
|
+
it "gets the shipping" do
|
44
|
+
subject.shipping.should == 23.44
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context "ship_date" do
|
49
|
+
it "gets the ship_date" do
|
50
|
+
subject.ship_date.should == Date.new(2014, 1, 1)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context "shipment_status" do
|
55
|
+
it "gets the shipment_status" do
|
56
|
+
subject.shipment_status.should == 'Delivered'
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context "shipping_service" do
|
61
|
+
it "gets the shipping_service" do
|
62
|
+
subject.shipping_service.should == 'Snortn Boar Transport'
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context "special_instructions" do
|
67
|
+
it "gets the special_instructions" do
|
68
|
+
subject.special_instructions.should == 'Get autograph'
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context "packages" do
|
73
|
+
it "gets the packages" do
|
74
|
+
subject.packages.should == [Package.new(tracking: 'info here')]
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context "ship_to" do
|
79
|
+
it "gets the shipping address" do
|
80
|
+
subject.ship_to.should == Address.new(country: 'US')
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
subject do
|
85
|
+
Shipment.new({
|
86
|
+
fulfillment_house: 'Chucky Cheese',
|
87
|
+
fulfillment_exception_reason: 'Cheese must be aged.',
|
88
|
+
fulfillment_exception_type: 'None',
|
89
|
+
fulfillment_status: 'Accepted',
|
90
|
+
|
91
|
+
handling: '338.33',
|
92
|
+
insured_amount: '10000.33',
|
93
|
+
shipping: '23.44',
|
94
|
+
|
95
|
+
ship_date: Date.new(2014, 1, 1),
|
96
|
+
shipment_status: 'Delivered',
|
97
|
+
shipping_service: 'Snortn Boar Transport',
|
98
|
+
special_instructions: 'Get autograph',
|
99
|
+
|
100
|
+
packages: [{ package: {tracking: 'info here'} }],
|
101
|
+
|
102
|
+
ship_to: { country: 'US' }
|
103
|
+
})
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|