diff --git a/app/models/variant_override.rb b/app/models/variant_override.rb index 9549d02b2e..1efa3b406d 100644 --- a/app/models/variant_override.rb +++ b/app/models/variant_override.rb @@ -16,6 +16,10 @@ class VariantOverride < ActiveRecord::Base self.for(hub, variant).andand.count_on_hand end + def self.stock_overridden?(hub, variant) + count_on_hand_for(hub, variant).present? + end + private diff --git a/spec/models/variant_override_spec.rb b/spec/models/variant_override_spec.rb index af6ecb91b7..b0048ce853 100644 --- a/spec/models/variant_override_spec.rb +++ b/spec/models/variant_override_spec.rb @@ -40,4 +40,23 @@ describe VariantOverride do VariantOverride.count_on_hand_for(hub, variant).should be_nil end end + + describe "checking if stock levels have been overriden" do + let(:variant) { create(:variant) } + let(:hub) { create(:distributor_enterprise) } + + it "returns true when stock level has been overridden" do + vo = create(:variant_override, variant: variant, hub: hub, count_on_hand: 12) + VariantOverride.stock_overridden?(hub, variant).should be_true + end + + it "returns false when the override has no stock level" do + vo = create(:variant_override, variant: variant, hub: hub, count_on_hand: nil) + VariantOverride.stock_overridden?(hub, variant).should be_false + end + + it "returns false when there is no override for the hub/variant" do + VariantOverride.stock_overridden?(hub, variant).should be_false + end + end end