draft_order_test.rb 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. require 'test_helper'
  2. class DraftOrderTest < Test::Unit::TestCase
  3. def setup
  4. super
  5. fake 'draft_orders/517119332', body: load_fixture('draft_order')
  6. @draft_order = ShopifyAPI::DraftOrder.find(517119332)
  7. end
  8. def test_get_draft_order
  9. fake 'draft_orders/517119332', method: :get, status: 200, body: load_fixture('draft_order')
  10. draft_order = ShopifyAPI::DraftOrder.find(517119332)
  11. assert_equal 517119332, draft_order.id
  12. end
  13. def test_get_all_draft_orders
  14. fake 'draft_orders', method: :get, status: 200, body: load_fixture('draft_orders')
  15. draft_orders = ShopifyAPI::DraftOrder.all
  16. assert_equal 1, draft_orders.length
  17. assert_equal 517119332, draft_orders.first.id
  18. end
  19. def test_create_draft_order
  20. fake 'draft_orders', method: :post, status: 201, body: load_fixture('draft_order')
  21. draft_order = ShopifyAPI::DraftOrder.create(line_items: [{ quantity: 1, variant_id: 39072856 }])
  22. assert_equal '{"draft_order":{"line_items":[{"quantity":1,"variant_id":39072856}]}}', FakeWeb.last_request.body
  23. assert_equal 39072856, draft_order.line_items.first.variant_id
  24. end
  25. def test_update_draft_order
  26. draft_order_response = ActiveSupport::JSON.decode(load_fixture('draft_order'))
  27. draft_order_response['draft_order']['note'] = 'Test new note'
  28. @draft_order.note = 'Test new note'
  29. fake 'draft_orders/517119332', method: :put, status: 200, body: ActiveSupport::JSON.encode(draft_order_response)
  30. @draft_order.save
  31. assert_equal draft_order_response['draft_order']['note'], @draft_order.note
  32. end
  33. def test_send_invoice_with_no_params
  34. fake 'draft_orders/517119332/send_invoice', method: :post, body: load_fixture('draft_order_invoice_no_params')
  35. @draft_order.send_invoice
  36. assert_equal '{"draft_order_invoice":{}}', FakeWeb.last_request.body
  37. end
  38. def test_send_invoice_with_params
  39. draft_order_invoice_fixture = load_fixture('draft_order_invoice')
  40. draft_order_invoice = ActiveSupport::JSON.decode(draft_order_invoice_fixture)
  41. fake 'draft_orders/517119332/send_invoice', method: :post, body: draft_order_invoice_fixture
  42. @draft_order.send_invoice(ShopifyAPI::DraftOrderInvoice.new(draft_order_invoice['draft_order_invoice']))
  43. assert_equal draft_order_invoice, ActiveSupport::JSON.decode(FakeWeb.last_request.body)
  44. end
  45. def test_delete_draft_order
  46. fake 'draft_orders/517119332', method: :delete, body: 'destroyed'
  47. assert @draft_order.destroy
  48. end
  49. def test_add_metafields_to_draft_order
  50. fake 'draft_orders/517119332/metafields', method: :post, status: 201, body: load_fixture('metafield')
  51. field = @draft_order.add_metafield(ShopifyAPI::Metafield.new(namespace: 'contact', key: 'email', value: '123@example.com', value_type: 'string'))
  52. assert_equal ActiveSupport::JSON.decode('{"metafield":{"namespace":"contact","key":"email","value":"123@example.com","value_type":"string"}}'), ActiveSupport::JSON.decode(FakeWeb.last_request.body)
  53. assert !field.new_record?
  54. assert_equal 'contact', field.namespace
  55. assert_equal 'email', field.key
  56. assert_equal '123@example.com', field.value
  57. end
  58. def test_get_metafields_for_draft_order
  59. fake 'draft_orders/517119332/metafields', body: load_fixture('metafields')
  60. metafields = @draft_order.metafields
  61. assert_equal 2, metafields.length
  62. assert metafields.all? { |m| m.is_a?(ShopifyAPI::Metafield) }
  63. end
  64. end