order_test.rb 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. require 'test_helper'
  2. require 'fulfillment_order_test_helper'
  3. class OrderTest < Test::Unit::TestCase
  4. include FulfillmentOrderTestHelper
  5. test "create should create order" do
  6. fake('orders', method: :post, status: 201, body: load_fixture('order'))
  7. order = ShopifyAPI::Order.create(line_items: [{ quantity:1, variant_id:39072856 }], financial_status:"authorized")
  8. assert_equal(39072856, order.line_items.first.variant_id)
  9. end
  10. test "create should create an order with custom properties" do
  11. props = [
  12. {
  13. "By default may label with \"Roasted for ": {
  14. "Your First Name": {
  15. "\". If you want something specific on the label, enter it here:": "",
  16. },
  17. },
  18. },
  19. ]
  20. fake('orders', method: :post, status: 201, body: load_fixture('order_with_properties'))
  21. order = ShopifyAPI::Order.create(
  22. line_items: [{ quantity:1, variant_id:39072856, properties:props }], financial_status:"authorized"
  23. )
  24. assert_equal(39072856, order.line_items.first.variant_id)
  25. end
  26. test "get should get an order" do
  27. fake('orders/450789469', method: :get, status: 200, body: load_fixture('order'))
  28. order = ShopifyAPI::Order.find(450789469)
  29. assert_equal(450789469, order.id)
  30. end
  31. test "get should get an order with custom properties" do
  32. fake('orders/450789469', method: :get, status: 200, body: load_fixture('order_with_properties'))
  33. order = ShopifyAPI::Order.find(450789469)
  34. assert_equal(450789469, order.id)
  35. end
  36. test "get all should get all orders" do
  37. fake('orders', method: :get, status: 200, body: load_fixture('orders'))
  38. order = ShopifyAPI::Order.all
  39. assert_equal(450789469, order.first.id)
  40. end
  41. test "add note should add a note to order" do
  42. fake('orders/450789469', method: :get, status: 200, body: load_fixture('order'))
  43. order = ShopifyAPI::Order.find(450789469)
  44. order.note = "Test note"
  45. fake('orders/450789469', method: :put, status: 200, body: load_fixture('order'))
  46. order.save
  47. assert_equal("Test note", order.note)
  48. end
  49. test "delete should delete an order" do
  50. fake('orders/450789469', method: :get, status: 200, body: load_fixture('order'))
  51. fake('orders/450789469', method: :delete, body: 'destroyed')
  52. order = ShopifyAPI::Order.find(450789469)
  53. assert(order.destroy)
  54. end
  55. test "cancel an order with params" do
  56. fake('orders/450789469', method: :get, status: 200, body: load_fixture('order'))
  57. fake('orders/450789469/cancel', method: :post, body: load_fixture('order'))
  58. order = ShopifyAPI::Order.find(450789469)
  59. order.cancel(email: false, restock: true)
  60. assert_request_body({ 'email' => false, 'restock' => true }.to_json)
  61. end
  62. test "capture an order with currency param" do
  63. fake('orders/450789469', body: load_fixture('order'))
  64. order = ShopifyAPI::Order.find(450789469)
  65. fake('orders/450789469/transactions', method: :post, status: 201, body: load_fixture('transaction'))
  66. order.capture(100.00, currency: 'CAD')
  67. assert_request_body({
  68. transaction: {
  69. amount: 100.00,
  70. kind: 'capture',
  71. currency: 'CAD',
  72. },
  73. }.to_json)
  74. end
  75. test "fulfillment_orders should get fulfillment orders for an order with 2020-01 version" do
  76. url_prefix = url_prefix_for_activated_session_for('2020-01')
  77. fake(
  78. 'orders',
  79. url: "#{url_prefix}/orders/450789469.json",
  80. method: :get,
  81. status: 200,
  82. body: load_fixture('order'),
  83. extension: false
  84. )
  85. order = ShopifyAPI::Order.find(450789469)
  86. fake(
  87. 'orders',
  88. url: "#{url_prefix}/orders/450789469/fulfillment_orders.json",
  89. method: :get,
  90. status: 200,
  91. body: load_fixture('fulfillment_orders'),
  92. extension: false
  93. )
  94. fulfillment_orders = order.fulfillment_orders
  95. assert_equal([519788021, 519788022], fulfillment_orders.map(&:id).sort)
  96. fulfillment_orders.each do |fulfillment_order|
  97. assert(fulfillment_order.is_a?(ShopifyAPI::FulfillmentOrder))
  98. assert_equal(450789469, fulfillment_order.order_id)
  99. end
  100. end
  101. test "fulfillment_orders raises NotImplementedError when api_version is older than 2020-01" do
  102. url_prefix = url_prefix_for_activated_session_for('2019-10')
  103. fake(
  104. 'orders',
  105. url: "#{url_prefix}/orders/450789469.json",
  106. method: :get,
  107. status: 200,
  108. body: load_fixture('order'),
  109. extension: false
  110. )
  111. order = ShopifyAPI::Order.find(450789469)
  112. assert_raises(NotImplementedError) do
  113. order.fulfillment_orders
  114. end
  115. end
  116. end