Skip to content

Commit

Permalink
Add tests for deprecation of product and variant inventory-related fi…
Browse files Browse the repository at this point in the history
…elds
  • Loading branch information
djhoughton committed Jan 14, 2020
1 parent e180de4 commit 14a697c
Show file tree
Hide file tree
Showing 5 changed files with 126 additions and 1 deletion.
9 changes: 9 additions & 0 deletions lib/shopify_api/resources/product.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,15 @@ def price_range
end
end

def serializable_hash(options = {})
super.except("total_inventory")
end

def total_inventory=(new_value)
raise(ShopifyAPI::ValidationException, 'deprecated behaviour') unless Base.api_version < ApiVersion.find_version('2019-10')
super
end

def collections
CustomCollection.find(:all, :params => {:product_id => self.id})
end
Expand Down
19 changes: 19 additions & 0 deletions lib/shopify_api/resources/variant.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,24 @@ class Variant < Base
include DisablePrefixCheck

conditional_prefix :product

def serializable_hash(options = {})
super.except("inventory_quantity_adjustment", "inventory_quantity", "old_inventory_quantity")
end

def inventory_quantity_adjustment=(new_value)
raise(ShopifyAPI::ValidationException, 'deprecated behaviour') unless Base.api_version < ApiVersion.find_version('2019-10')
super
end

def inventory_quantity=(new_value)
raise(ShopifyAPI::ValidationException, 'deprecated behaviour') unless Base.api_version < ApiVersion.find_version('2019-10')
super
end

def old_inventory_quantity=(new_value)
raise(ShopifyAPI::ValidationException, 'deprecated behaviour') unless Base.api_version < ApiVersion.find_version('2019-10')
super
end
end
end
22 changes: 22 additions & 0 deletions test/product_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,26 @@ def test_price_range_when_has_different_price

assert_equal('100.00 - 199.00', @product.price_range)
end

def test_setting_product_total_inventory_passes_in_api_before_2019_10
ShopifyAPI::Base.api_version = '2019-07'
fake("products/632910392", {:body => load_fixture('product')})
@product.total_inventory = 8
end

def test_setting_product_total_inventory_fails_in_2019_10_api
ShopifyAPI::Base.api_version = '2019-10'
fake("products/632910392", {:body => load_fixture('product')})
assert_raises(ShopifyAPI::ValidationException) do
@product.total_inventory = 8
end
end

def test_setting_product_total_inventory_fails_in_the_unstable_api
ShopifyAPI::Base.api_version = :unstable
fake("products/632910392", {:body => load_fixture('product')})
assert_raises(ShopifyAPI::ValidationException) do
@product.total_inventory = 8
end
end
end
2 changes: 1 addition & 1 deletion test/test_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ def fake(endpoint, options={})
body = options.has_key?(:body) ? options.delete(:body) : load_fixture(endpoint)
format = options.delete(:format) || :json
method = options.delete(:method) || :get
api_version = options.delete(:api_version) || ShopifyAPI::ApiVersion.find_version('2019-01')
api_version = options.delete(:api_version) || ShopifyAPI::Base.api_version
extension = ".#{options.delete(:extension)||'json'}" unless options[:extension]==false
status = options.delete(:status) || 200
url = if options.has_key?(:url)
Expand Down
75 changes: 75 additions & 0 deletions test/variant_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,79 @@ def test_delete_variant
v = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
assert v.destroy
end

def test_setting_variant_inventory_quantity_adjustment_passes_in_api_before_2019_10
ShopifyAPI::Base.api_version = '2019-07'
fake "products/632910392/variants/808950810", :method => :get, :body => load_fixture('variant')
variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
variant.inventory_quantity_adjustment = 8
end

def test_setting_variant_inventory_quantity_adjustment_fails_in_2019_10_api
ShopifyAPI::Base.api_version = '2019-10'
fake "products/632910392/variants/808950810", :method => :get, :body => load_fixture('variant')
variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
assert_raises(ShopifyAPI::ValidationException) do
variant.inventory_quantity_adjustment = 8
end
end

def test_setting_variant_inventory_quantity_adjustment_fails_in_the_unstable_api
ShopifyAPI::Base.api_version = :unstable
fake "products/632910392/variants/808950810", :method => :get, :body => load_fixture('variant')
variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
assert_raises(ShopifyAPI::ValidationException) do
variant.inventory_quantity_adjustment = 8
end
end

def test_setting_variant_inventory_quantity_passes_in_api_before_2019_10
ShopifyAPI::Base.api_version = '2019-07'
fake "products/632910392/variants/808950810", :method => :get, :body => load_fixture('variant')
variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
variant.inventory_quantity = 8
end

def test_setting_variant_inventory_quantity_fails_in_2019_10_api
ShopifyAPI::Base.api_version = '2019-10'
fake "products/632910392/variants/808950810", :method => :get, :body => load_fixture('variant')
variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
assert_raises(ShopifyAPI::ValidationException) do
variant.inventory_quantity = 8
end
end

def test_setting_variant_inventory_quantity_fails_in_the_unstable_api
ShopifyAPI::Base.api_version = :unstable
fake "products/632910392/variants/808950810", :method => :get, :body => load_fixture('variant')
variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
assert_raises(ShopifyAPI::ValidationException) do
variant.inventory_quantity = 8
end
end

def test_setting_variant_old_inventory_quantity_passes_in_api_before_2019_10
ShopifyAPI::Base.api_version = '2019-07'
fake "products/632910392/variants/808950810", :method => :get, :body => load_fixture('variant')
variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
variant.old_inventory_quantity = 8
end

def test_setting_variant_old_inventory_quantity_fails_in_2019_10_api
ShopifyAPI::Base.api_version = '2019-10'
fake "products/632910392/variants/808950810", :method => :get, :body => load_fixture('variant')
variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
assert_raises(ShopifyAPI::ValidationException) do
variant.old_inventory_quantity = 8
end
end

def test_setting_variant_old_inventory_quantity_fails_in_the_unstable_api
ShopifyAPI::Base.api_version = :unstable
fake "products/632910392/variants/808950810", :method => :get, :body => load_fixture('variant')
variant = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
assert_raises(ShopifyAPI::ValidationException) do
variant.old_inventory_quantity = 8
end
end
end

0 comments on commit 14a697c

Please sign in to comment.