variant_test.rb 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. require 'test_helper'
  2. class VariantTest < Test::Unit::TestCase
  3. def setup
  4. super
  5. refresh_variant
  6. end
  7. def test_get_variants
  8. fake("products/632910392/variants", method: :get, body: load_fixture('variants'))
  9. variants = ShopifyAPI::Variant.find(:all, params: { product_id: 632910392 })
  10. assert_equal(variants.map(&:id).sort, [39072856, 49148385, 457924702, 808950810])
  11. end
  12. def test_get_variant_namespaced
  13. assert_equal(632910392, @variant.product_id)
  14. end
  15. def test_get_variant
  16. assert_equal(632910392, @variant.product_id)
  17. end
  18. def test_product_id_should_be_accessible_if_via_product_endpoint
  19. assert_equal(632910392, @variant.product_id)
  20. end
  21. def test_product_id_should_be_accessible_if_via_variant_endpoint
  22. assert_equal(632910392, @variant.product_id)
  23. end
  24. def test_delete_variant
  25. fake("products/632910392/variants/808950810", method: :delete, body: 'destroyed')
  26. assert(@variant.destroy)
  27. end
  28. def test_deprecated_inventory_fields_are_included_in_2019_07
  29. ShopifyAPI::Base.api_version = '2019-07'
  30. refresh_variant(api_version: ShopifyAPI::Base.api_version)
  31. assert(@variant.as_json.include?('inventory_quantity'))
  32. end
  33. def test_deprecated_inventory_fields_are_removed_in_2020_01
  34. ShopifyAPI::Base.api_version = '2020-01'
  35. refresh_variant(api_version: ShopifyAPI::Base.api_version)
  36. refute(@variant.as_json.include?('inventory_quantity'))
  37. end
  38. def test_setting_variant_inventory_quantity_adjustment_passes_in_api_before_2019_10
  39. ShopifyAPI::Base.api_version = '2019-07'
  40. refresh_variant(api_version: ShopifyAPI::Base.api_version)
  41. @variant.inventory_quantity_adjustment = 8
  42. end
  43. def test_setting_variant_inventory_quantity_adjustment_fails_in_2019_10_api
  44. ShopifyAPI::Base.api_version = '2019-10'
  45. refresh_variant(api_version: ShopifyAPI::Base.api_version)
  46. assert_raises(ShopifyAPI::ValidationException) do
  47. @variant.inventory_quantity_adjustment = 8
  48. end
  49. end
  50. def test_setting_variant_inventory_quantity_adjustment_fails_in_the_unstable_api
  51. ShopifyAPI::Base.api_version = :unstable
  52. assert_raises(ShopifyAPI::ValidationException) do
  53. @variant.inventory_quantity_adjustment = 8
  54. end
  55. end
  56. def test_setting_variant_inventory_quantity_passes_in_api_before_2019_10
  57. ShopifyAPI::Base.api_version = '2019-07'
  58. @variant.inventory_quantity = 8
  59. end
  60. def test_setting_variant_inventory_quantity_fails_in_2019_10_api
  61. ShopifyAPI::Base.api_version = '2019-10'
  62. assert_raises(ShopifyAPI::ValidationException) do
  63. @variant.inventory_quantity = 8
  64. end
  65. end
  66. def test_setting_variant_inventory_quantity_fails_in_the_unstable_api
  67. ShopifyAPI::Base.api_version = :unstable
  68. assert_raises(ShopifyAPI::ValidationException) do
  69. @variant.inventory_quantity = 8
  70. end
  71. end
  72. def test_setting_variant_old_inventory_quantity_passes_in_api_before_2019_10
  73. ShopifyAPI::Base.api_version = '2019-07'
  74. @variant.old_inventory_quantity = 8
  75. end
  76. def test_setting_variant_old_inventory_quantity_fails_in_2019_10_api
  77. ShopifyAPI::Base.api_version = '2019-10'
  78. assert_raises(ShopifyAPI::ValidationException) do
  79. @variant.old_inventory_quantity = 8
  80. end
  81. end
  82. def test_setting_variant_old_inventory_quantity_fails_in_the_unstable_api
  83. ShopifyAPI::Base.api_version = :unstable
  84. assert_raises(ShopifyAPI::ValidationException) do
  85. @variant.old_inventory_quantity = 8
  86. end
  87. end
  88. private
  89. def refresh_variant(api_version: nil)
  90. fake(
  91. "products/632910392/variants/808950810", method: :get, body: load_fixture('variant'), api_version: api_version
  92. )
  93. @variant = ShopifyAPI::Variant.find(808950810, params: { product_id: 632910392 })
  94. end
  95. end