order_test.rb 4.5 KB

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