From 8c5ddaf11cf9a870b4692bc43062f1c42edd0298 Mon Sep 17 00:00:00 2001 From: Keith Kim Date: Thu, 21 Nov 2019 16:04:24 -0500 Subject: [PATCH] Updates from PR review 2 --- .../resources/fulfillment_order.rb | 24 ++-- test/fulfillment_order_test.rb | 118 +++++++++++------- test/test_helper.rb | 5 - 3 files changed, 85 insertions(+), 62 deletions(-) diff --git a/lib/shopify_api/resources/fulfillment_order.rb b/lib/shopify_api/resources/fulfillment_order.rb index a49d46b64..b78068485 100644 --- a/lib/shopify_api/resources/fulfillment_order.rb +++ b/lib/shopify_api/resources/fulfillment_order.rb @@ -34,7 +34,7 @@ def close load_attributes_from_response(post(:close, {}, only_id)) end - def fulfillment_request(fulfillment_order_line_items:, message:) + def request_fulfillment(fulfillment_order_line_items:, message:) body = { fulfillment_request: { fulfillment_order_line_items: fulfillment_order_line_items, @@ -48,15 +48,17 @@ def fulfillment_request(fulfillment_order_line_items:, message:) keyed_fos end - def accept_fulfillment_request(params) - load_attributes_from_response(post('fulfillment_request/accept', {}, params.to_json)) + def accept_fulfillment_request(message: nil) + body = { message: message } + load_attributes_from_response(post('fulfillment_request/accept', {}, body.to_json)) end - def reject_fulfillment_request(params) - load_attributes_from_response(post('fulfillment_request/reject', {}, params.to_json)) + def reject_fulfillment_request(message: nil) + body = { message: message } + load_attributes_from_response(post('fulfillment_request/reject', {}, body.to_json)) end - def cancellation_request(message:) + def request_cancellation(message: nil) body = { cancellation_request: { message: message @@ -65,12 +67,14 @@ def cancellation_request(message:) load_attributes_from_response(post(:cancellation_request, {}, body.to_json)) end - def accept_cancellation_request(params) - load_attributes_from_response(post('cancellation_request/accept', {}, params.to_json)) + def accept_cancellation_request(message: nil) + body = { message: message } + load_attributes_from_response(post('cancellation_request/accept', {}, body.to_json)) end - def reject_cancellation_request(params) - load_attributes_from_response(post('cancellation_request/reject', {}, params.to_json)) + def reject_cancellation_request(message: nil) + body = { message: message } + load_attributes_from_response(post('cancellation_request/reject', {}, body.to_json)) end private diff --git a/test/fulfillment_order_test.rb b/test/fulfillment_order_test.rb index afdf27b46..71c7f0e05 100644 --- a/test/fulfillment_order_test.rb +++ b/test/fulfillment_order_test.rb @@ -133,17 +133,18 @@ def setup end end - context "#fulfillment_request" do - should "make a fulfillment request for a fulfillment order" do + context "#request_fulfillment" do + should "make a fulfillment request for a fulfillment order including unsubmitted" do original_fulfillment_order = ActiveSupport::JSON.decode(load_fixture('fulfillment_order')) + original_fulfillment_order['status'] = 'closed' submitted_fulfillment_order = original_fulfillment_order.clone submitted_fulfillment_order['id'] = 2 submitted_fulfillment_order['status'] = 'open' submitted_fulfillment_order['request_status'] = 'submitted' unsubmitted_fulfillment_order = original_fulfillment_order.clone unsubmitted_fulfillment_order['id'] = 3 + unsubmitted_fulfillment_order['status'] = 'open' unsubmitted_fulfillment_order['request_status'] = 'unsubmitted' - original_fulfillment_order['status'] = 'in_progress' body = { original_fulfillment_order: original_fulfillment_order, submitted_fulfillment_order: submitted_fulfillment_order, @@ -166,44 +167,85 @@ def setup fulfillment_order_line_items: [{ id: 1, quantity: 1 }], message: "Fulfill this FO, please." } - original_submitted_unsubmitted_fos = fulfillment_order.fulfillment_request(params) + response_fulfillment_orders = fulfillment_order.request_fulfillment(params) - assert_equal 'in_progress', fulfillment_order.status + assert_equal 'closed', fulfillment_order.status + assert_equal 3, response_fulfillment_orders.size - original_fo = original_submitted_unsubmitted_fos['original_fulfillment_order'] + original_fo = response_fulfillment_orders['original_fulfillment_order'] assert_equal 519788021, original_fo.id - assert_equal 'in_progress', original_fo.status + assert_equal 'closed', original_fo.status - submitted_fo = original_submitted_unsubmitted_fos['submitted_fulfillment_order'] + submitted_fo = response_fulfillment_orders['submitted_fulfillment_order'] assert_equal 2, submitted_fo.id assert_equal 'open', submitted_fo.status assert_equal 'submitted', submitted_fo.request_status - unsubmitted_fo = original_submitted_unsubmitted_fos['unsubmitted_fulfillment_order'] + unsubmitted_fo = response_fulfillment_orders['unsubmitted_fulfillment_order'] assert_equal 3, unsubmitted_fo.id assert_equal 'open', unsubmitted_fo.status assert_equal 'unsubmitted', unsubmitted_fo.request_status end + + should "make a fulfillment request for a fulfillment order excluding unsubmitted" do + original_fulfillment_order = ActiveSupport::JSON.decode(load_fixture('fulfillment_order')) + original_fulfillment_order['status'] = 'closed' + submitted_fulfillment_order = original_fulfillment_order.clone + submitted_fulfillment_order['id'] = 2 + submitted_fulfillment_order['status'] = 'open' + submitted_fulfillment_order['request_status'] = 'submitted' + body = { + original_fulfillment_order: original_fulfillment_order, + submitted_fulfillment_order: submitted_fulfillment_order, + unsubmitted_fulfillment_order: nil, + } + request_body = { + fulfillment_request: { + fulfillment_order_line_items: [ + { id: 1, quantity: 1 } + ], + message: 'Fulfill this FO, please.' + } + } + fake "fulfillment_orders/519788021/fulfillment_request", :method => :post, + :request_body => ActiveSupport::JSON.encode(request_body), + :body => ActiveSupport::JSON.encode(body) + + fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021) + params = { + fulfillment_order_line_items: [{ id: 1, quantity: 1 }], + message: "Fulfill this FO, please." + } + response_fulfillment_orders = fulfillment_order.request_fulfillment(params) + + assert_equal 'closed', fulfillment_order.status + assert_equal 3, response_fulfillment_orders.size + + original_fo = response_fulfillment_orders['original_fulfillment_order'] + assert_equal 519788021, original_fo.id + assert_equal 'closed', original_fo.status + + submitted_fo = response_fulfillment_orders['submitted_fulfillment_order'] + assert_equal 2, submitted_fo.id + assert_equal 'open', submitted_fo.status + assert_equal 'submitted', submitted_fo.request_status + + assert_nil response_fulfillment_orders['unsubmitted_fulfillment_order'] + end end context "#accept_fulfillment_request" do should "accept a fulfillment request for a fulfillment order" do fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021) - request_body = { - 'message' => "LGTM. Accept this FO fulfillment request", - 'other' => "random" - } + message = "LGTM. Accept this FO fulfillment request" + request_body = { 'message' => message } fake_response = { fulfillment_order: fulfillment_order.attributes.merge(status: 'in_progress') } fake "fulfillment_orders/519788021/fulfillment_request/accept", :method => :post, :request_body => ActiveSupport::JSON.encode(request_body), :body => ActiveSupport::JSON.encode(fake_response) - params = { - message: 'LGTM. Accept this FO fulfillment request', - other: 'random' - } - accepted = fulfillment_order.accept_fulfillment_request(params) + accepted = fulfillment_order.accept_fulfillment_request(message: message) assert_equal true, accepted assert_equal 'in_progress', fulfillment_order.status @@ -214,27 +256,21 @@ def setup should "reject a fulfillment request for a fulfillment order" do fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021) - request_body = { - 'message' => "LBTM. Reject this FO fulfillment request", - 'other' => "text" - } + message = "LBTM. Reject this FO fulfillment request" + request_body = { 'message' => message } fake_response = { fulfillment_order: fulfillment_order.attributes.merge(status: 'closed') } fake "fulfillment_orders/519788021/fulfillment_request/reject", :method => :post, :request_body => ActiveSupport::JSON.encode(request_body), :body => ActiveSupport::JSON.encode(fake_response) - params = { - message: 'LBTM. Reject this FO fulfillment request', - other: 'text' - } - rejected = fulfillment_order.reject_fulfillment_request(params) + rejected = fulfillment_order.reject_fulfillment_request(message: message) assert_equal true, rejected assert_equal 'closed', fulfillment_order.status end end - context "#cancellation_request" do + context "#request_cancellation" do should "make a cancellation request for a fulfillment order" do fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021) @@ -244,7 +280,7 @@ def setup fake "fulfillment_orders/519788021/cancellation_request", :method => :post, :body => ActiveSupport::JSON.encode(cancelling) - cancelled = fulfillment_order.cancellation_request(message: "Cancelling this please.") + cancelled = fulfillment_order.request_cancellation(message: "Cancelling this please.") assert_equal true, cancelled assert_equal 'in_progress', fulfillment_order.status @@ -256,20 +292,14 @@ def setup should "accept a cancellation request for a fulfillment order" do fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021) - request_body = { - 'message' => "Already in-progress. Reject this FO cancellation request", - 'other' => "blah" - } + message = 'Already in-progress. Reject this FO cancellation request' + request_body = { 'message' => message } fake_response = { fulfillment_order: fulfillment_order.attributes.merge(status: 'closed') } fake "fulfillment_orders/519788021/cancellation_request/accept", :method => :post, :request_body => ActiveSupport::JSON.encode(request_body), :body => ActiveSupport::JSON.encode(fake_response) - params = { - message: 'Already in-progress. Reject this FO cancellation request', - other: 'blah' - } - accepted = fulfillment_order.accept_cancellation_request(params) + accepted = fulfillment_order.accept_cancellation_request(message: message) assert_equal true, accepted assert_equal 'closed', fulfillment_order.status @@ -280,20 +310,14 @@ def setup should "reject a cancellation request for a fulfillment order" do fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021) - request_body = { - 'message' => "Already in-progress. Reject this FO cancellation request", - 'other' => "blah" - } + message = "Already in-progress. Reject this FO cancellation request" + request_body = { 'message' => message } fake_response = { fulfillment_order: fulfillment_order.attributes.merge(status: 'in_progress') } fake "fulfillment_orders/519788021/cancellation_request/reject", :method => :post, :request_body => request_body, :body => ActiveSupport::JSON.encode(fake_response) - params = { - message: 'Already in-progress. Reject this FO cancellation request', - other: 'blah' - } - rejected = fulfillment_order.reject_cancellation_request(params) + rejected = fulfillment_order.reject_cancellation_request(message: message) assert_equal true, rejected assert_equal 'in_progress', fulfillment_order.status diff --git a/test/test_helper.rb b/test/test_helper.rb index 440ff34ea..1bc275753 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -112,11 +112,6 @@ def fake(endpoint, options={}) ) end - def query_string(hash) - return '' if hash.nil? || hash.empty? - '?' + hash.map { |k, v| URI::encode(k.to_s) + '=' + URI::encode(v.to_s) }.join('&') - end - def ar_version_before?(version_string) Gem::Version.new(ActiveResource::VERSION::STRING) < Gem::Version.new(version_string) end