fulfillment_v2_test.rb 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. require 'test_helper'
  2. require 'fulfillment_order_test_helper'
  3. class FulfillmentV2Test < Test::Unit::TestCase
  4. include FulfillmentOrderTestHelper
  5. def setup
  6. super
  7. @tracking_info = {
  8. number: 'JSDHFHAG',
  9. url: 'https://example.com/fulfillment_tracking/JSDHFHAG',
  10. company: 'ACME co',
  11. }
  12. @fake_fulfillment = ActiveSupport::JSON.decode(load_fixture('fulfillment'))['fulfillment']
  13. @fake_fulfillment['tracking_number'] = @tracking_info[:number]
  14. @fake_fulfillment['tracking_numbers'] = [@tracking_info[:number]]
  15. @fake_fulfillment['tracking_url'] = @tracking_info[:url]
  16. @fake_fulfillment['tracking_urls'] = [@tracking_info[:url]]
  17. @fake_fulfillment['tracking_company'] = @tracking_info[:company]
  18. @request_body = {
  19. fulfillment: {
  20. tracking_info: @tracking_info,
  21. notify_customer: true
  22. }
  23. }
  24. @url_prefix = url_prefix_for_activated_session_for('2020-01')
  25. fake 'fulfillments',
  26. url: "#{@url_prefix}/fulfillments/#{@fake_fulfillment['id']}/update_tracking.json",
  27. method: :post,
  28. request_body: ActiveSupport::JSON.encode(@request_body),
  29. body: ActiveSupport::JSON.encode(fulfillment: @fake_fulfillment)
  30. end
  31. context "FulfillmentV2" do
  32. context "#update_tracking" do
  33. should "be able to update tracking info for a fulfillment" do
  34. fulfillment = ShopifyAPI::FulfillmentV2.new(id: @fake_fulfillment['id'])
  35. assert fulfillment.update_tracking(tracking_info: @tracking_info, notify_customer: true)
  36. assert_equal @tracking_info[:number], fulfillment.tracking_number
  37. assert_equal [@tracking_info[:number]], fulfillment.tracking_numbers
  38. assert_equal @tracking_info[:url], fulfillment.tracking_url
  39. assert_equal [@tracking_info[:url]], fulfillment.tracking_urls
  40. assert_equal @tracking_info[:company], fulfillment.tracking_company
  41. end
  42. should "raise NotImplementedError when api_version is older than 2020-01" do
  43. @url_prefix = url_prefix_for_activated_session_for('2019-10')
  44. fake 'fulfillments',
  45. url: "#{@url_prefix}/fulfillments/#{@fake_fulfillment['id']}/update_tracking.json",
  46. method: :post,
  47. request_body: ActiveSupport::JSON.encode(@request_body),
  48. body: ActiveSupport::JSON.encode(fulfillment: @fake_fulfillment)
  49. assert_raises NotImplementedError do
  50. ShopifyAPI::FulfillmentV2.new(id: @fake_fulfillment['id'])
  51. end
  52. end
  53. end
  54. end
  55. end