From 23dd740542cd041bd7e1cd09e813d2f218df3ad9 Mon Sep 17 00:00:00 2001 From: Peter Burch Date: Mon, 10 Apr 2017 11:50:10 -0500 Subject: [PATCH 1/6] Adding a method to do 'PUT' requests for https://shippingeasy.readme.io/docs/storesstore_api_keyordersexternal_order_identifier --- lib/shipping_easy/http/faraday_adapter.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/shipping_easy/http/faraday_adapter.rb b/lib/shipping_easy/http/faraday_adapter.rb index 1b06e8b..bf1650b 100644 --- a/lib/shipping_easy/http/faraday_adapter.rb +++ b/lib/shipping_easy/http/faraday_adapter.rb @@ -22,6 +22,13 @@ def post end end + def put + connection.put do |req| + req.url uri, params + req.body = request.body + end + end + def get connection.get do |req| req.url uri, params From 6a3c1b59d3b283003367e6e3f257693badc68a18 Mon Sep 17 00:00:00 2001 From: Peter Burch Date: Tue, 11 Apr 2017 13:47:42 -0500 Subject: [PATCH 2/6] Adding missing API end point methods and tests --- lib/shipping_easy/resources/order.rb | 4 ++++ lib/shipping_easy/resources/store.rb | 7 +++++++ spec/resources/order_spec.rb | 12 ++++++++++++ spec/resources/store_spec.rb | 12 ++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 lib/shipping_easy/resources/store.rb create mode 100644 spec/resources/store_spec.rb diff --git a/lib/shipping_easy/resources/order.rb b/lib/shipping_easy/resources/order.rb index e37e5c6..0fa1960 100644 --- a/lib/shipping_easy/resources/order.rb +++ b/lib/shipping_easy/resources/order.rb @@ -18,4 +18,8 @@ class ShippingEasy::Resources::Order < ShippingEasy::Resources::Base "/orders" end end + + command :update_external_order_status, http_method: :put do |args| + "/stores/#{args.delete(:store_api_key)}/orders/#{args.delete(:external_order_identifier)}/status" + end end diff --git a/lib/shipping_easy/resources/store.rb b/lib/shipping_easy/resources/store.rb new file mode 100644 index 0000000..a9763e4 --- /dev/null +++ b/lib/shipping_easy/resources/store.rb @@ -0,0 +1,7 @@ +class ShippingEasy::Resources::Store < ShippingEasy::Resources::Base + + command :stores_api_info, http_method: :get do |args| + '/stores' + end + +end \ No newline at end of file diff --git a/spec/resources/order_spec.rb b/spec/resources/order_spec.rb index 1cb8907..77d53a2 100644 --- a/spec/resources/order_spec.rb +++ b/spec/resources/order_spec.rb @@ -50,4 +50,16 @@ ShippingEasy::Resources::Order.create(:store_api_key => "123456", payload: { name: "Jack" }) end end + + describe ".update_external_order_status" do + it "sends a request with the expected options" do + ShippingEasy::Resources::Order.should_receive(:execute_request!).with({ :relative_path => "/stores/123456/orders/ABCXYZ/status", + :http_method => :put, + payload: {order: {order_status: "awaiting_payment"} } }, + :public) + ShippingEasy::Resources::Order..update_external_order_status(:store_api_key => "123456", + external_order_identifier: "ABCXYZ", + payload: {order: {order_status: "awaiting_payment"} }) + end + end end diff --git a/spec/resources/store_spec.rb b/spec/resources/store_spec.rb new file mode 100644 index 0000000..5249407 --- /dev/null +++ b/spec/resources/store_spec.rb @@ -0,0 +1,12 @@ +require "spec_helper" + +describe ShippingEasy::Resources::Store do + describe ".stores_api_info" do + it "sends a request with the expected options" do + ShippingEasy::Resources::Store.should_receive(:execute_request!).with({:relative_path=>"/stores", + :http_method=>:get}, + :public) + ShippingEasy::Resources::Store.stores_api_info + end + end +end \ No newline at end of file From 60b363753ed5ea98ffb23184c6922625ae152b4c Mon Sep 17 00:00:00 2001 From: Peter Burch Date: Tue, 11 Apr 2017 13:52:45 -0500 Subject: [PATCH 3/6] added require for new store file --- lib/shipping_easy.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/shipping_easy.rb b/lib/shipping_easy.rb index 4798a65..af902df 100644 --- a/lib/shipping_easy.rb +++ b/lib/shipping_easy.rb @@ -18,6 +18,7 @@ require "shipping_easy/resources/session" require "shipping_easy/resources/cancellation" require "shipping_easy/version" +require "shipping_easy/resources/store" module ShippingEasy From feb3e948a4289384c52eecb799511a809a8d488b Mon Sep 17 00:00:00 2001 From: Peter Burch Date: Tue, 11 Apr 2017 14:00:33 -0500 Subject: [PATCH 4/6] removed extra '.' causing order spec to fail --- spec/resources/order_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/resources/order_spec.rb b/spec/resources/order_spec.rb index 77d53a2..13d80cd 100644 --- a/spec/resources/order_spec.rb +++ b/spec/resources/order_spec.rb @@ -57,7 +57,7 @@ :http_method => :put, payload: {order: {order_status: "awaiting_payment"} } }, :public) - ShippingEasy::Resources::Order..update_external_order_status(:store_api_key => "123456", + ShippingEasy::Resources::Order.update_external_order_status(:store_api_key => "123456", external_order_identifier: "ABCXYZ", payload: {order: {order_status: "awaiting_payment"} }) end From 5ebb142b1e1daa4d837df1df5f5c1478ead3030b Mon Sep 17 00:00:00 2001 From: Peter Burch Date: Tue, 11 Apr 2017 14:37:18 -0500 Subject: [PATCH 5/6] After talking to Theo made the following changes: 1. Removed the 'Put' change from faraday_adapter 2. Removed the update order status using external order id 3. Updated order_spec to no longer have the test for the update order status (method removed) 4. Renamed :stores_api_info to :find_all for rest compliance 5. Updated store_spec --- lib/shipping_easy/http/faraday_adapter.rb | 7 ------- lib/shipping_easy/resources/order.rb | 4 ---- lib/shipping_easy/resources/store.rb | 2 +- spec/resources/order_spec.rb | 12 ------------ 4 files changed, 1 insertion(+), 24 deletions(-) diff --git a/lib/shipping_easy/http/faraday_adapter.rb b/lib/shipping_easy/http/faraday_adapter.rb index bf1650b..1b06e8b 100644 --- a/lib/shipping_easy/http/faraday_adapter.rb +++ b/lib/shipping_easy/http/faraday_adapter.rb @@ -22,13 +22,6 @@ def post end end - def put - connection.put do |req| - req.url uri, params - req.body = request.body - end - end - def get connection.get do |req| req.url uri, params diff --git a/lib/shipping_easy/resources/order.rb b/lib/shipping_easy/resources/order.rb index 0fa1960..e37e5c6 100644 --- a/lib/shipping_easy/resources/order.rb +++ b/lib/shipping_easy/resources/order.rb @@ -18,8 +18,4 @@ class ShippingEasy::Resources::Order < ShippingEasy::Resources::Base "/orders" end end - - command :update_external_order_status, http_method: :put do |args| - "/stores/#{args.delete(:store_api_key)}/orders/#{args.delete(:external_order_identifier)}/status" - end end diff --git a/lib/shipping_easy/resources/store.rb b/lib/shipping_easy/resources/store.rb index a9763e4..2e46854 100644 --- a/lib/shipping_easy/resources/store.rb +++ b/lib/shipping_easy/resources/store.rb @@ -1,6 +1,6 @@ class ShippingEasy::Resources::Store < ShippingEasy::Resources::Base - command :stores_api_info, http_method: :get do |args| + command :find_all, http_method: :get do |args| '/stores' end diff --git a/spec/resources/order_spec.rb b/spec/resources/order_spec.rb index 13d80cd..1cb8907 100644 --- a/spec/resources/order_spec.rb +++ b/spec/resources/order_spec.rb @@ -50,16 +50,4 @@ ShippingEasy::Resources::Order.create(:store_api_key => "123456", payload: { name: "Jack" }) end end - - describe ".update_external_order_status" do - it "sends a request with the expected options" do - ShippingEasy::Resources::Order.should_receive(:execute_request!).with({ :relative_path => "/stores/123456/orders/ABCXYZ/status", - :http_method => :put, - payload: {order: {order_status: "awaiting_payment"} } }, - :public) - ShippingEasy::Resources::Order.update_external_order_status(:store_api_key => "123456", - external_order_identifier: "ABCXYZ", - payload: {order: {order_status: "awaiting_payment"} }) - end - end end From 92d240d1158bd4b8a106640f7868549ec5a826c9 Mon Sep 17 00:00:00 2001 From: Peter Burch Date: Tue, 11 Apr 2017 14:39:11 -0500 Subject: [PATCH 6/6] forgot to update store_spec with find_all call --- spec/resources/store_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/resources/store_spec.rb b/spec/resources/store_spec.rb index 5249407..b98366f 100644 --- a/spec/resources/store_spec.rb +++ b/spec/resources/store_spec.rb @@ -6,7 +6,7 @@ ShippingEasy::Resources::Store.should_receive(:execute_request!).with({:relative_path=>"/stores", :http_method=>:get}, :public) - ShippingEasy::Resources::Store.stores_api_info + ShippingEasy::Resources::Store.find_all end end end \ No newline at end of file