fulfillment_order_test.rb 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. require 'test_helper'
  2. class FulFillmentOrderTest < Test::Unit::TestCase
  3. def setup
  4. super
  5. fake "fulfillment_orders/519788021", method: :get,
  6. body: load_fixture('fulfillment_order')
  7. fake "orders/450789469/fulfillment_orders", method: :get,
  8. body: load_fixture('fulfillment_orders')
  9. end
  10. context "FulfillmentOrder" do
  11. context "#find" do
  12. should "be able to find fulfillment order" do
  13. fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021)
  14. assert fulfillment_order.is_a?(ShopifyAPI::FulfillmentOrder)
  15. assert_equal 519788021, fulfillment_order.id
  16. assert_equal 450789469, fulfillment_order.order_id
  17. end
  18. end
  19. context "#all" do
  20. should "be able to list fulfillment orders for an order" do
  21. fake 'orders/450789469/fulfillment_orders', method: :get, body: load_fixture('fulfillment_orders')
  22. fulfillment_orders = ShopifyAPI::FulfillmentOrder.all(
  23. params: { order_id: 450789469 }
  24. )
  25. assert_equal [519788021, 519788022], fulfillment_orders.map(&:id).sort
  26. fulfillment_orders.each do |fulfillment_order|
  27. assert fulfillment_order.is_a?(ShopifyAPI::FulfillmentOrder)
  28. assert_equal 450789469, fulfillment_order.order_id
  29. end
  30. end
  31. should "require order_id" do
  32. assert_raises ShopifyAPI::ValidationException do
  33. ShopifyAPI::FulfillmentOrder.all
  34. end
  35. end
  36. end
  37. context "#fulfillments" do
  38. should "be able to list fulfillments for a fulfillment order" do
  39. fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021)
  40. fake "fulfillment_orders/#{fulfillment_order.id}/fulfillments", method: :get,
  41. body: load_fixture('fulfillments')
  42. fulfillments = fulfillment_order.fulfillments
  43. assert_equal 1, fulfillments.count
  44. fulfillment = fulfillments.first
  45. assert fulfillment.is_a?(ShopifyAPI::Fulfillment)
  46. assert_equal 450789469, fulfillment.order_id
  47. end
  48. end
  49. context "#move" do
  50. should "move a fulfillment order to a new_location_id" do
  51. fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021)
  52. new_location_id = 5
  53. fake_original_fulfillment_order = fulfillment_order.clone
  54. fake_original_fulfillment_order.status = 'closed'
  55. fake_moved_fulfillment_order = ActiveSupport::JSON.decode(load_fixture('fulfillment_order'))
  56. fake_moved_fulfillment_order['assigned_location_id'] = new_location_id
  57. request_body = { fulfillment_order: { new_location_id: 5 } }
  58. body = {
  59. original_fulfillment_order: fake_original_fulfillment_order,
  60. moved_fulfillment_order: fake_moved_fulfillment_order,
  61. remaining_fulfillment_order: nil,
  62. }
  63. fake "fulfillment_orders/519788021/move", :method => :post,
  64. :request_body => ActiveSupport::JSON.encode(request_body),
  65. :body => ActiveSupport::JSON.encode(body)
  66. response_fulfillment_orders = fulfillment_order.move(new_location_id: new_location_id)
  67. assert_equal 'closed', fulfillment_order.status
  68. assert_equal 3, response_fulfillment_orders.count
  69. original_fulfillment_order = response_fulfillment_orders['original_fulfillment_order']
  70. refute_nil original_fulfillment_order
  71. assert original_fulfillment_order.is_a?(ShopifyAPI::FulfillmentOrder)
  72. assert_equal 'closed', original_fulfillment_order.status
  73. moved_fulfillment_order = response_fulfillment_orders['moved_fulfillment_order']
  74. refute_nil moved_fulfillment_order
  75. assert moved_fulfillment_order.is_a?(ShopifyAPI::FulfillmentOrder)
  76. assert_equal 'open', moved_fulfillment_order.status
  77. assert_equal new_location_id, moved_fulfillment_order.assigned_location_id
  78. remaining_fulfillment_order = response_fulfillment_orders['remaining_fulfillment_order']
  79. assert_nil remaining_fulfillment_order
  80. end
  81. end
  82. context "#cancel" do
  83. should "cancel a fulfillment order" do
  84. fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021)
  85. assert_equal 'open', fulfillment_order.status
  86. cancelled = ActiveSupport::JSON.decode(load_fixture('fulfillment_order'))
  87. cancelled['status'] = 'cancelled'
  88. body = {
  89. fulfillment_order: cancelled,
  90. replacement_fulfillment_order: fulfillment_order,
  91. }
  92. fake "fulfillment_orders/519788021/cancel", :method => :post, :body => ActiveSupport::JSON.encode(body)
  93. response_fulfillment_orders = fulfillment_order.cancel
  94. assert_equal 'cancelled', fulfillment_order.status
  95. assert_equal 2, response_fulfillment_orders.count
  96. fulfillment_order = response_fulfillment_orders['fulfillment_order']
  97. assert_equal 'cancelled', fulfillment_order.status
  98. replacement_fulfillment_order = response_fulfillment_orders['replacement_fulfillment_order']
  99. assert_equal 'open', replacement_fulfillment_order.status
  100. end
  101. end
  102. context "#close" do
  103. should "be able to close fulfillment order" do
  104. fulfillment_order = ShopifyAPI::FulfillmentOrder.find(519788021)
  105. fulfillment_order.status = 'in_progress'
  106. closed = ActiveSupport::JSON.decode(load_fixture('fulfillment_order'))
  107. closed['status'] = 'incomplete'
  108. request_body = {
  109. fulfillment_order: {
  110. message: "Test close message."
  111. }
  112. }
  113. fake "fulfillment_orders/519788021/close", :method => :post,
  114. :request_body => ActiveSupport::JSON.encode(request_body),
  115. :body => ActiveSupport::JSON.encode(closed)
  116. assert fulfillment_order.close(message: "Test close message.")
  117. assert_equal 'incomplete', fulfillment_order.status
  118. end
  119. end
  120. end
  121. end