walmart_open 0.0.8 → 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.
- data/README.md +0 -101
- data/lib/walmart_open/client.rb +0 -17
- data/lib/walmart_open/config.rb +1 -17
- data/lib/walmart_open/connection_manager.rb +5 -15
- data/lib/walmart_open/errors.rb +0 -6
- data/lib/walmart_open/request.rb +13 -6
- data/lib/walmart_open/requests/feed.rb +2 -2
- data/lib/walmart_open/requests/lookup.rb +2 -2
- data/lib/walmart_open/requests/search.rb +2 -2
- data/lib/walmart_open/requests/taxonomy.rb +2 -2
- data/lib/walmart_open/version.rb +1 -1
- data/spec/walmart_open/client_spec.rb +0 -18
- data/spec/walmart_open/config_spec.rb +2 -9
- data/spec/walmart_open/connection_manager_spec.rb +3 -10
- metadata +2 -27
- data/lib/walmart_open/auth_token.rb +0 -25
- data/lib/walmart_open/commerce_request.rb +0 -23
- data/lib/walmart_open/order.rb +0 -55
- data/lib/walmart_open/order_item.rb +0 -17
- data/lib/walmart_open/order_results.rb +0 -40
- data/lib/walmart_open/order_xml_builder.rb +0 -62
- data/lib/walmart_open/ordered_item.rb +0 -31
- data/lib/walmart_open/product_request.rb +0 -28
- data/lib/walmart_open/requests/place_order.rb +0 -58
- data/lib/walmart_open/requests/token.rb +0 -30
- data/lib/walmart_open/shipping_address.rb +0 -46
- data/spec/walmart_open/auth_token_spec.rb +0 -53
- data/spec/walmart_open/order_item_spec.rb +0 -43
- data/spec/walmart_open/order_results_spec.rb +0 -83
- data/spec/walmart_open/order_spec.rb +0 -130
- data/spec/walmart_open/requests/place_order_spec.rb +0 -151
- data/spec/walmart_open/requests/token_spec.rb +0 -49
- data/spec/walmart_open/shipping_address_spec.rb +0 -142
@@ -1,43 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require "walmart_open/order_item"
|
3
|
-
|
4
|
-
describe WalmartOpen::OrderItem do
|
5
|
-
context ".new" do
|
6
|
-
it "sets value correctly" do
|
7
|
-
item_id = 10371356
|
8
|
-
item_price = 1.23
|
9
|
-
item_shipping_price = 2.20
|
10
|
-
order_item = WalmartOpen::OrderItem.new(item_id, 1, item_price, item_shipping_price)
|
11
|
-
|
12
|
-
expect(order_item.item_id).to eq(item_id)
|
13
|
-
expect(order_item.quantity).to eq(1)
|
14
|
-
expect(order_item.item_price).to eq(item_price)
|
15
|
-
expect(order_item.shipping_price).to eq(item_shipping_price)
|
16
|
-
expect(order_item).to be_valid
|
17
|
-
end
|
18
|
-
|
19
|
-
context "#valid?" do
|
20
|
-
context "when required field are present" do
|
21
|
-
it "returns true" do
|
22
|
-
item_id = 10371356
|
23
|
-
order_item = WalmartOpen::OrderItem.new(item_id, 1)
|
24
|
-
|
25
|
-
expect(order_item.item_id).to eq(item_id)
|
26
|
-
expect(order_item.quantity).to eq(1)
|
27
|
-
expect(order_item).to be_valid
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
context "when required field are not present" do
|
32
|
-
it "returns false" do
|
33
|
-
item_id = nil
|
34
|
-
order_item = WalmartOpen::OrderItem.new(item_id, 1)
|
35
|
-
|
36
|
-
expect(order_item.item_id).to eq(item_id)
|
37
|
-
expect(order_item.quantity).to eq(1)
|
38
|
-
expect(order_item).not_to be_valid
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
@@ -1,83 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require "walmart_open/order_results"
|
3
|
-
|
4
|
-
describe WalmartOpen::OrderResults do
|
5
|
-
let(:order_results_1_item_attrs) do
|
6
|
-
{
|
7
|
-
"response" => {
|
8
|
-
"orderId" =>"2677921715556",
|
9
|
-
"partnerOrderId" =>"43",
|
10
|
-
"items" => {
|
11
|
-
"item" => {
|
12
|
-
"itemId"=>"10371356",
|
13
|
-
"quantity"=>"1",
|
14
|
-
"itemPrice"=>"22.97"
|
15
|
-
}
|
16
|
-
},
|
17
|
-
"total" => "29.95",
|
18
|
-
"itemTotal" => "22.97",
|
19
|
-
"shipping" =>"4.97",
|
20
|
-
"salesTax" =>"2.01",
|
21
|
-
"surcharge" =>"0.00"
|
22
|
-
}
|
23
|
-
}
|
24
|
-
end
|
25
|
-
|
26
|
-
let(:order_results_2_item_attrs) do
|
27
|
-
{
|
28
|
-
"response" => {
|
29
|
-
"orderId" => "2677922016720",
|
30
|
-
"partnerOrderId" => "44",
|
31
|
-
"items" => {
|
32
|
-
"item" => [
|
33
|
-
{
|
34
|
-
"itemId" => "20658394",
|
35
|
-
"quantity" => "1",
|
36
|
-
"itemPrice" => "12.99"
|
37
|
-
},
|
38
|
-
{
|
39
|
-
"itemId" => "10371356",
|
40
|
-
"quantity" => "1",
|
41
|
-
"itemPrice" => "22.97"
|
42
|
-
}
|
43
|
-
]
|
44
|
-
},
|
45
|
-
"total" => "39.11",
|
46
|
-
"itemTotal" => "35.96",
|
47
|
-
"shipping" => "0",
|
48
|
-
"salesTax" => "3.15",
|
49
|
-
"surcharge" => "0.00"
|
50
|
-
}
|
51
|
-
}
|
52
|
-
end
|
53
|
-
|
54
|
-
context ".new" do
|
55
|
-
it "sets value correctly with one item" do
|
56
|
-
res = WalmartOpen::OrderResults.new(order_results_1_item_attrs)
|
57
|
-
|
58
|
-
expect(res.order_id).to eq(order_results_1_item_attrs["response"]["orderId"])
|
59
|
-
expect(res.partner_order_id).to eq(order_results_1_item_attrs["response"]["partnerOrderId"])
|
60
|
-
expect(res.total).to eq(order_results_1_item_attrs["response"]["itemTotal"])
|
61
|
-
expect(res.shipping).to eq(order_results_1_item_attrs["response"]["shipping"])
|
62
|
-
expect(res.sales_tax).to eq(order_results_1_item_attrs["response"]["salesTax"])
|
63
|
-
expect(res.surcharge).to eq(order_results_1_item_attrs["response"]["surcharge"])
|
64
|
-
expect(res.raw_attributes).to eq(order_results_1_item_attrs)
|
65
|
-
expect(res.items.count).to eq(1)
|
66
|
-
expect(res).not_to be_error
|
67
|
-
end
|
68
|
-
|
69
|
-
it "sets value correctly with multiple items" do
|
70
|
-
res = WalmartOpen::OrderResults.new(order_results_2_item_attrs)
|
71
|
-
|
72
|
-
expect(res.order_id).to eq(order_results_2_item_attrs["response"]["orderId"])
|
73
|
-
expect(res.partner_order_id).to eq(order_results_2_item_attrs["response"]["partnerOrderId"])
|
74
|
-
expect(res.total).to eq(order_results_2_item_attrs["response"]["itemTotal"])
|
75
|
-
expect(res.shipping).to eq(order_results_2_item_attrs["response"]["shipping"])
|
76
|
-
expect(res.sales_tax).to eq(order_results_2_item_attrs["response"]["salesTax"])
|
77
|
-
expect(res.surcharge).to eq(order_results_2_item_attrs["response"]["surcharge"])
|
78
|
-
expect(res.raw_attributes).to eq(order_results_2_item_attrs)
|
79
|
-
expect(res.items.count).to eq(2)
|
80
|
-
expect(res).not_to be_error
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
@@ -1,130 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require "walmart_open/order"
|
3
|
-
|
4
|
-
describe WalmartOpen::Order do
|
5
|
-
# mix symbol key and string key for testing purpose
|
6
|
-
let(:basic_order_params) do
|
7
|
-
{
|
8
|
-
billing_record_id: 1,
|
9
|
-
partner_order_id: "42",
|
10
|
-
partner_order_time: Time.now
|
11
|
-
}
|
12
|
-
end
|
13
|
-
|
14
|
-
let(:shipping_addr_params) do
|
15
|
-
{
|
16
|
-
first_name: "Testfirstname",
|
17
|
-
last_name: "Fong",
|
18
|
-
street1: "Listia Inc, 200 Blossom Ln",
|
19
|
-
street2: "street2 test",
|
20
|
-
city: "Mountain View",
|
21
|
-
state: "CA",
|
22
|
-
zipcode: "94043",
|
23
|
-
country: "USA",
|
24
|
-
phone: "606-478-0850"
|
25
|
-
}
|
26
|
-
end
|
27
|
-
|
28
|
-
let(:required_attrs) do
|
29
|
-
[:billing_record_id, :first_name, :street1, :city, :state, :zipcode, :country, :phone]
|
30
|
-
end
|
31
|
-
|
32
|
-
let(:valid_order_params) { basic_order_params.merge(shipping_addr_params)}
|
33
|
-
|
34
|
-
context "create order" do
|
35
|
-
let(:order) { WalmartOpen::Order.new(valid_order_params) }
|
36
|
-
|
37
|
-
context ".new" do
|
38
|
-
it "sets value correctly" do
|
39
|
-
expect(order.billing_record_id).to eql(valid_order_params[:billing_record_id])
|
40
|
-
expect(order.partner_order_time).to eq(valid_order_params[:partner_order_time])
|
41
|
-
expect(order.partner_order_id).to eq(valid_order_params[:partner_order_id])
|
42
|
-
|
43
|
-
expect(order.shipping_address).to be_valid
|
44
|
-
expect(order.shipping_address.first_name).to eql(valid_order_params[:first_name])
|
45
|
-
expect(order.shipping_address.last_name).to eql(valid_order_params[:last_name])
|
46
|
-
expect(order.shipping_address.phone).to eql(valid_order_params[:phone])
|
47
|
-
|
48
|
-
expect(order.items).to be_empty
|
49
|
-
end
|
50
|
-
|
51
|
-
it "accepts string keys" do
|
52
|
-
stringified_valid_attrs = valid_order_params.each_with_object({}) do |pair, obj|
|
53
|
-
obj[pair.first.to_s] = pair.last
|
54
|
-
end
|
55
|
-
order = WalmartOpen::Order.new(stringified_valid_attrs)
|
56
|
-
|
57
|
-
expect(order.billing_record_id).to eql(valid_order_params[:billing_record_id])
|
58
|
-
expect(order.partner_order_time).to eq(valid_order_params[:partner_order_time])
|
59
|
-
expect(order.partner_order_id).to eq(valid_order_params[:partner_order_id])
|
60
|
-
|
61
|
-
expect(order.shipping_address).to be_valid
|
62
|
-
expect(order.shipping_address.first_name).to eql(valid_order_params[:first_name])
|
63
|
-
expect(order.shipping_address.last_name).to eql(valid_order_params[:last_name])
|
64
|
-
expect(order.shipping_address.phone).to eql(valid_order_params[:phone])
|
65
|
-
|
66
|
-
expect(order.items).to be_empty
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
context "#add_item" do
|
71
|
-
it "adds item object" do
|
72
|
-
item = double
|
73
|
-
order.add_item(item)
|
74
|
-
expect(order.items).not_to be_empty
|
75
|
-
end
|
76
|
-
|
77
|
-
it "adds item by id" do
|
78
|
-
order.add_item(1)
|
79
|
-
expect(order.items).not_to be_empty
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
context "#valid?" do
|
85
|
-
context "when required order params are present" do
|
86
|
-
before do
|
87
|
-
valid_order_params.delete(:last_name)
|
88
|
-
valid_order_params.delete("street2")
|
89
|
-
@order = WalmartOpen::Order.new(valid_order_params)
|
90
|
-
@order.add_item(1)
|
91
|
-
end
|
92
|
-
|
93
|
-
it "returns true" do
|
94
|
-
expect(@order).to be_valid
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
context "when required order params are not present" do
|
99
|
-
shared_examples_for "missing required key" do |optional_key|
|
100
|
-
before do
|
101
|
-
valid_order_params.delete(optional_key) if optional_key
|
102
|
-
end
|
103
|
-
|
104
|
-
it "returns false" do
|
105
|
-
order = WalmartOpen::Order.new(valid_order_params)
|
106
|
-
order.add_item(item_id) if item_id
|
107
|
-
|
108
|
-
expect(order).not_to be_valid
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
context "when order item present" do
|
113
|
-
let(:item_id) { 1 }
|
114
|
-
it_behaves_like "missing required key", :billing_record_id
|
115
|
-
it_behaves_like "missing required key", :first_name
|
116
|
-
it_behaves_like "missing required key", :street1
|
117
|
-
it_behaves_like "missing required key", :city
|
118
|
-
it_behaves_like "missing required key", :state
|
119
|
-
it_behaves_like "missing required key", :zipcode
|
120
|
-
it_behaves_like "missing required key", :country
|
121
|
-
it_behaves_like "missing required key", :phone
|
122
|
-
end
|
123
|
-
|
124
|
-
context "when order item not present" do
|
125
|
-
let(:item_id) {nil}
|
126
|
-
it_behaves_like "missing required key", nil
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|
@@ -1,151 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require "walmart_open/requests/place_order"
|
3
|
-
require "walmart_open/order"
|
4
|
-
require "walmart_open/client"
|
5
|
-
require "walmart_open/errors"
|
6
|
-
|
7
|
-
describe WalmartOpen::Requests::PlaceOrder do
|
8
|
-
context "#submit" do
|
9
|
-
let(:order_attrs) do
|
10
|
-
{
|
11
|
-
billing_id: 1,
|
12
|
-
first_name: "James",
|
13
|
-
last_name: "Fong",
|
14
|
-
partner_order_id: "44",
|
15
|
-
phone: "606-478-0850"
|
16
|
-
}
|
17
|
-
end
|
18
|
-
|
19
|
-
let(:multiple_order_response) do
|
20
|
-
{
|
21
|
-
"response" => {
|
22
|
-
"orderId" => "2677911169085",
|
23
|
-
"partnerOrderId" => "8",
|
24
|
-
"items" => {
|
25
|
-
"item" => [
|
26
|
-
{
|
27
|
-
"itemId" => "25174174",
|
28
|
-
"quantity" => "1",
|
29
|
-
"itemPrice" => "214.99"
|
30
|
-
},
|
31
|
-
{
|
32
|
-
"itemId" => "10371356",
|
33
|
-
"quantity" => "1",
|
34
|
-
"itemPrice" => "22.97"
|
35
|
-
}
|
36
|
-
]
|
37
|
-
},
|
38
|
-
"total" => "259.38",
|
39
|
-
"itemTotal" => "237.96",
|
40
|
-
"shipping" => "0",
|
41
|
-
"salesTax" => "21.42",
|
42
|
-
"surcharge" => "0.00"
|
43
|
-
}
|
44
|
-
}
|
45
|
-
end
|
46
|
-
|
47
|
-
let(:single_order_response) do
|
48
|
-
{
|
49
|
-
"response" => {
|
50
|
-
"orderId" => "2677913310915",
|
51
|
-
"partnerOrderId" => "20",
|
52
|
-
"items" => {
|
53
|
-
"item" => {
|
54
|
-
"itemId" => "10371356",
|
55
|
-
"quantity" => "1",
|
56
|
-
"itemPrice" => "22.97"
|
57
|
-
}
|
58
|
-
},
|
59
|
-
"total" => "29.95",
|
60
|
-
"itemTotal" => "22.97",
|
61
|
-
"shipping" => "4.97",
|
62
|
-
"salesTax" => "2.01",
|
63
|
-
"surcharge" => "0.00"
|
64
|
-
}
|
65
|
-
}
|
66
|
-
end
|
67
|
-
|
68
|
-
let(:client) { WalmartOpen::Client.new }
|
69
|
-
let(:order) { WalmartOpen::Order.new(order_attrs) }
|
70
|
-
let(:order_req) { WalmartOpen::Requests::PlaceOrder.new(order) }
|
71
|
-
let(:success_response) { double(success?: true) }
|
72
|
-
let(:fail_response) { double(success?: false) }
|
73
|
-
|
74
|
-
before do
|
75
|
-
allow(order_req).to receive(:request_options).and_return({})
|
76
|
-
end
|
77
|
-
|
78
|
-
context "when response is success" do
|
79
|
-
before do
|
80
|
-
allow(HTTParty).to receive(:post).and_return(success_response)
|
81
|
-
allow(success_response).to receive(:code).and_return(200)
|
82
|
-
end
|
83
|
-
|
84
|
-
context "when multiple orders" do
|
85
|
-
before do
|
86
|
-
allow(success_response).to receive(:parsed_response).and_return(multiple_order_response)
|
87
|
-
end
|
88
|
-
|
89
|
-
it "return response" do
|
90
|
-
order = order_req.submit(client)
|
91
|
-
expect(order.raw_attributes).to eq(multiple_order_response)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
context "when one order" do
|
96
|
-
before do
|
97
|
-
allow(success_response).to receive(:parsed_response).and_return(single_order_response)
|
98
|
-
end
|
99
|
-
|
100
|
-
it "return response" do
|
101
|
-
order = order_req.submit(client)
|
102
|
-
expect(order.raw_attributes).to eq(single_order_response)
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
context "when response is not success" do
|
108
|
-
before do
|
109
|
-
allow(HTTParty).to receive(:post).and_return(fail_response)
|
110
|
-
end
|
111
|
-
|
112
|
-
context "response has http code 400" do
|
113
|
-
before do
|
114
|
-
allow(fail_response).to receive(:code).and_return(400)
|
115
|
-
allow(fail_response).to receive(:parsed_response).and_return({
|
116
|
-
"errors" => {
|
117
|
-
"error" => {
|
118
|
-
"code" => "10020",
|
119
|
-
"message" => "This order has already been executed"
|
120
|
-
}
|
121
|
-
}
|
122
|
-
})
|
123
|
-
end
|
124
|
-
|
125
|
-
it "raises order error" do
|
126
|
-
expect{
|
127
|
-
order_req.submit(client)
|
128
|
-
}.to raise_error(WalmartOpen::OrderError)
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
context "response has http code not 400" do
|
133
|
-
before do
|
134
|
-
allow(fail_response).to receive(:code).and_return(403)
|
135
|
-
allow(fail_response).to receive(:parsed_response).and_return({
|
136
|
-
"errors" => [{
|
137
|
-
"code" => 403,
|
138
|
-
"message" => "Account Inactive"
|
139
|
-
}]
|
140
|
-
})
|
141
|
-
end
|
142
|
-
|
143
|
-
it "raises authentication error" do
|
144
|
-
expect {
|
145
|
-
order_req.submit(client)
|
146
|
-
}.to raise_error(WalmartOpen::ServerError)
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require "walmart_open/requests/token"
|
3
|
-
require "walmart_open/client"
|
4
|
-
require "walmart_open/errors"
|
5
|
-
|
6
|
-
describe WalmartOpen::Requests::Token do
|
7
|
-
context "#submit" do
|
8
|
-
let(:client) {WalmartOpen::Client.new}
|
9
|
-
let(:token_req) { WalmartOpen::Requests::Token.new }
|
10
|
-
let(:success_response) { double(success?: true) }
|
11
|
-
let(:fail_response) { double(success?: false) }
|
12
|
-
|
13
|
-
context "when response is success" do
|
14
|
-
before do
|
15
|
-
allow(HTTParty).to receive(:post).and_return(success_response)
|
16
|
-
attrs = {
|
17
|
-
"token_type" => "bearer",
|
18
|
-
"mapi" => "8tbvkxd6gu6zjzp6qbyeewb6",
|
19
|
-
"access_token" => "k5pzg6jqtetygmrkm5y6qqnr",
|
20
|
-
"expires_in" => 600
|
21
|
-
}
|
22
|
-
allow(success_response).to receive(:parsed_response).and_return(attrs)
|
23
|
-
header_attrs = {"date"=> "Sun, 01 Dec 2013 07:25:35 GMT"}
|
24
|
-
allow(success_response).to receive(:headers).and_return(header_attrs)
|
25
|
-
end
|
26
|
-
|
27
|
-
it "get response" do
|
28
|
-
token = token_req.submit(client)
|
29
|
-
|
30
|
-
expect(token.token_type).to eq("bearer")
|
31
|
-
expect(token.access_token).to eq("k5pzg6jqtetygmrkm5y6qqnr")
|
32
|
-
expect(token.time).to eq(Time.parse("Sun, 01 Dec 2013 07:25:35 GMT"))
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
context "when response is not success" do
|
37
|
-
before do
|
38
|
-
allow(HTTParty).to receive(:post).and_return(fail_response)
|
39
|
-
allow(fail_response).to receive(:parsed_response).and_return({"errors"=>[{"code"=>403, "message"=>"Account Inactive"}]})
|
40
|
-
end
|
41
|
-
|
42
|
-
it "get authentication error" do
|
43
|
-
expect{
|
44
|
-
token_req.submit(client)
|
45
|
-
}.to raise_error(WalmartOpen::ServerError)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|