variant_test.rb 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. require 'test_helper'
  2. class VariantTest < Test::Unit::TestCase
  3. def setup
  4. super
  5. @version_unstable = ShopifyAPI::ApiVersion.find_version('unstable')
  6. @version_2019_07 = ShopifyAPI::ApiVersion.find_version('2019-07')
  7. @version_2019_10 = ShopifyAPI::ApiVersion.find_version('2019-10')
  8. @version_2020_01 = ShopifyAPI::ApiVersion.find_version('2020-01')
  9. end
  10. def test_get_variants
  11. fake "products/632910392/variants", :method => :get, :body => load_fixture('variants')
  12. variants = ShopifyAPI::Variant.find(:all, :params => { :product_id => 632910392 })
  13. assert_equal variants.map(&:id).sort, [39072856, 49148385, 457924702, 808950810]
  14. end
  15. def test_get_variant_namespaced
  16. fake "products/632910392/variants/808950810", :method => :get, :body => load_fixture('variant')
  17. v = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
  18. assert_equal 632910392, v.product_id
  19. end
  20. def test_get_variant
  21. fake "variants/808950810", :method => :get, :body => load_fixture('variant')
  22. v = ShopifyAPI::Variant.find(808950810)
  23. assert_equal 632910392, v.product_id
  24. end
  25. def test_product_id_should_be_accessible_if_via_product_endpoint
  26. fake "products/632910392/variants/808950810", :method => :get, :body => load_fixture('variant')
  27. v = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
  28. assert_equal 632910392, v.product_id
  29. end
  30. def test_product_id_should_be_accessible_if_via_variant_endpoint
  31. fake "variants/808950810", :method => :get, :body => load_fixture('variant')
  32. v = ShopifyAPI::Variant.find(808950810)
  33. assert_equal 632910392, v.product_id
  34. end
  35. def test_delete_variant
  36. fake "products/632910392/variants/808950810", :method => :get, :body => load_fixture('variant')
  37. fake "products/632910392/variants/808950810", :method => :delete, :body => 'destroyed'
  38. v = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
  39. assert v.destroy
  40. end
  41. def test_deprecated_inventory_fields_are_included_in_2019_07
  42. ShopifyAPI::Base.api_version = '2019-07'
  43. fake(
  44. "products/632910392/variants/808950810",
  45. method: :get,
  46. body: load_fixture('variant'),
  47. api_version: @version_2019_07
  48. )
  49. variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
  50. assert variant.as_json.include?('inventory_quantity')
  51. end
  52. def test_deprecated_inventory_fields_are_removed_in_2020_01
  53. ShopifyAPI::Base.api_version = '2020-01'
  54. fake(
  55. "products/632910392/variants/808950810",
  56. method: :get,
  57. body: load_fixture('variant'),
  58. api_version: @version_2020_01
  59. )
  60. variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
  61. refute variant.as_json.include?('inventory_quantity')
  62. end
  63. def test_setting_variant_inventory_quantity_adjustment_passes_in_api_before_2019_10
  64. ShopifyAPI::Base.api_version = '2019-07'
  65. fake(
  66. "products/632910392/variants/808950810",
  67. method: :get,
  68. body: load_fixture('variant'),
  69. api_version: @version_2019_07
  70. )
  71. variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
  72. variant.inventory_quantity_adjustment = 8
  73. end
  74. def test_setting_variant_inventory_quantity_adjustment_fails_in_2019_10_api
  75. ShopifyAPI::Base.api_version = '2019-10'
  76. fake(
  77. "products/632910392/variants/808950810",
  78. method: :get,
  79. body: load_fixture('variant'),
  80. api_version: @version_2019_10
  81. )
  82. variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
  83. assert_raises(ShopifyAPI::ValidationException) do
  84. variant.inventory_quantity_adjustment = 8
  85. end
  86. end
  87. def test_setting_variant_inventory_quantity_adjustment_fails_in_the_unstable_api
  88. ShopifyAPI::Base.api_version = :unstable
  89. fake(
  90. "products/632910392/variants/808950810",
  91. method: :get,
  92. body: load_fixture('variant'),
  93. api_version: @version_unstable
  94. )
  95. variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
  96. assert_raises(ShopifyAPI::ValidationException) do
  97. variant.inventory_quantity_adjustment = 8
  98. end
  99. end
  100. def test_setting_variant_inventory_quantity_passes_in_api_before_2019_10
  101. ShopifyAPI::Base.api_version = '2019-07'
  102. fake(
  103. "products/632910392/variants/808950810",
  104. method: :get,
  105. body: load_fixture('variant'),
  106. api_version: @version_2019_07
  107. )
  108. variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
  109. variant.inventory_quantity = 8
  110. end
  111. def test_setting_variant_inventory_quantity_fails_in_2019_10_api
  112. ShopifyAPI::Base.api_version = '2019-10'
  113. fake(
  114. "products/632910392/variants/808950810",
  115. method: :get,
  116. body: load_fixture('variant'),
  117. api_version: @version_2019_10
  118. )
  119. variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
  120. assert_raises(ShopifyAPI::ValidationException) do
  121. variant.inventory_quantity = 8
  122. end
  123. end
  124. def test_setting_variant_inventory_quantity_fails_in_the_unstable_api
  125. ShopifyAPI::Base.api_version = :unstable
  126. fake(
  127. "products/632910392/variants/808950810",
  128. method: :get,
  129. body: load_fixture('variant'),
  130. api_version: @version_unstable
  131. )
  132. variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
  133. assert_raises(ShopifyAPI::ValidationException) do
  134. variant.inventory_quantity = 8
  135. end
  136. end
  137. def test_setting_variant_old_inventory_quantity_passes_in_api_before_2019_10
  138. ShopifyAPI::Base.api_version = '2019-07'
  139. fake(
  140. "products/632910392/variants/808950810",
  141. method: :get,
  142. body: load_fixture('variant'),
  143. api_version: @version_2019_07
  144. )
  145. variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
  146. variant.old_inventory_quantity = 8
  147. end
  148. def test_setting_variant_old_inventory_quantity_fails_in_2019_10_api
  149. ShopifyAPI::Base.api_version = '2019-10'
  150. fake(
  151. "products/632910392/variants/808950810",
  152. method: :get,
  153. body: load_fixture('variant'),
  154. api_version: @version_2019_10
  155. )
  156. variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
  157. assert_raises(ShopifyAPI::ValidationException) do
  158. variant.old_inventory_quantity = 8
  159. end
  160. end
  161. def test_setting_variant_old_inventory_quantity_fails_in_the_unstable_api
  162. ShopifyAPI::Base.api_version = :unstable
  163. fake(
  164. "products/632910392/variants/808950810",
  165. method: :get,
  166. body: load_fixture('variant'),
  167. api_version: @version_unstable
  168. )
  169. variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
  170. assert_raises(ShopifyAPI::ValidationException) do
  171. variant.old_inventory_quantity = 8
  172. end
  173. end
  174. end