walmart_open 0.0.8 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|