order_test.rb 4.5 KB

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