fulfillment_v2_test.rb 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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(
  26. 'fulfillments',
  27. url: "#{@url_prefix}/fulfillments/#{@fake_fulfillment['id']}/update_tracking.json",
  28. method: :post,
  29. request_body: ActiveSupport::JSON.encode(@request_body),
  30. body: ActiveSupport::JSON.encode(fulfillment: @fake_fulfillment)
  31. )
  32. end
  33. context "FulfillmentV2" do
  34. context "#update_tracking" do
  35. should "be able to update tracking info for a fulfillment" do
  36. fulfillment = ShopifyAPI::FulfillmentV2.new(id: @fake_fulfillment['id'])
  37. assert(fulfillment.update_tracking(tracking_info: @tracking_info, notify_customer: true))
  38. assert_equal(@tracking_info[:number], fulfillment.tracking_number)
  39. assert_equal([@tracking_info[:number]], fulfillment.tracking_numbers)
  40. assert_equal(@tracking_info[:url], fulfillment.tracking_url)
  41. assert_equal([@tracking_info[:url]], fulfillment.tracking_urls)
  42. assert_equal(@tracking_info[:company], fulfillment.tracking_company)
  43. end
  44. should "raise NotImplementedError when api_version is older than 2020-01" do
  45. @url_prefix = url_prefix_for_activated_session_for('2019-10')
  46. fake(
  47. 'fulfillments',
  48. url: "#{@url_prefix}/fulfillments/#{@fake_fulfillment['id']}/update_tracking.json",
  49. method: :post,
  50. request_body: ActiveSupport::JSON.encode(@request_body),
  51. body: ActiveSupport::JSON.encode(fulfillment: @fake_fulfillment)
  52. )
  53. assert_raises(NotImplementedError) do
  54. ShopifyAPI::FulfillmentV2.new(id: @fake_fulfillment['id'])
  55. end
  56. end
  57. end
  58. end
  59. end