product_listing_test.rb 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. # frozen_string_literal: true
  2. require 'test_helper'
  3. class ProductListingTest < Test::Unit::TestCase
  4. def test_get_product_listings
  5. fake("product_listings", method: :get, status: 201, body: load_fixture('product_listings'))
  6. product_listings = ShopifyAPI::ProductListing.find(:all)
  7. assert_equal(2, product_listings.count)
  8. assert_equal(2, product_listings.first.product_id)
  9. assert_equal(1, product_listings.last.product_id)
  10. assert_equal('Synergistic Silk Chair', product_listings.first.title)
  11. assert_equal('Rustic Copper Bottle', product_listings.last.title)
  12. end
  13. def test_get_product_listing
  14. fake("product_listings/2", method: :get, status: 201, body: load_fixture('product_listing'))
  15. product_listing = ShopifyAPI::ProductListing.find(2)
  16. assert_equal('Synergistic Silk Chair', product_listing.title)
  17. end
  18. def test_reload_product_listing
  19. fake("product_listings/2", method: :get, status: 201, body: load_fixture('product_listing'))
  20. product_listing = ShopifyAPI::ProductListing.new(product_id: 2)
  21. product_listing.reload
  22. assert_equal('Synergistic Silk Chair', product_listing.title)
  23. end
  24. def test_get_product_listing_product_ids
  25. fake("product_listings/product_ids", method: :get, status: 201, body: load_fixture('product_listing_product_ids'))
  26. product_ids = ShopifyAPI::ProductListing.product_ids
  27. assert_equal(2, product_ids.count)
  28. assert_equal(4, product_ids.first)
  29. assert_equal(3, product_ids.last)
  30. end
  31. def test_get_product_listing_product_ids_multi_page_with_cursor
  32. version = ShopifyAPI::ApiVersion.find_version('2019-10')
  33. ShopifyAPI::Base.api_version = version.to_s
  34. url = "https://this-is-my-test-shop.myshopify.com/admin/api/2019-10/product_listings/product_ids.json"
  35. next_page_info = "notarealpageinfobutthatsokay"
  36. next_page_url = "#{url}?page_info=#{next_page_info}"
  37. link_header = "<#{next_page_url}>; rel=\"next\""
  38. fake(
  39. "product_listings/product_ids",
  40. method: :get,
  41. status: 201,
  42. url: url,
  43. body: load_fixture('product_listing_product_ids'),
  44. link: link_header,
  45. )
  46. product_ids = ShopifyAPI::ProductListing.product_ids
  47. assert_equal([4, 3], product_ids)
  48. assert(product_ids.next_page?)
  49. fake(
  50. "product_listings/product_ids",
  51. method: :get,
  52. status: 201,
  53. url: next_page_url,
  54. body: load_fixture('product_listing_product_ids2'),
  55. link: link_header,
  56. )
  57. next_page = product_ids.fetch_next_page
  58. assert_equal([2, 1], next_page)
  59. end
  60. def test_get_product_listing_product_ids_multi_page_with_cursor_fails_on_older_api_version
  61. version = ShopifyAPI::ApiVersion.find_version('2019-07')
  62. ShopifyAPI::Base.api_version = version.to_s
  63. url = "https://this-is-my-test-shop.myshopify.com/admin/api/2019-07/product_listings/product_ids.json"
  64. fake(
  65. "product_listings/product_ids",
  66. method: :get,
  67. status: 201,
  68. url: url,
  69. body: load_fixture('product_listing_product_ids'),
  70. )
  71. product_ids = ShopifyAPI::ProductListing.product_ids
  72. assert_equal([4, 3], product_ids)
  73. assert_raises(NotImplementedError) do
  74. product_ids.next_page?
  75. end
  76. end
  77. end