From 5d82efa213086b1315f0f82c3bb52795ee2d0417 Mon Sep 17 00:00:00 2001 From: luisramos0 Date: Fri, 1 Feb 2019 16:16:04 +0000 Subject: [PATCH] Add unit test for VariantStock.can_supply? --- spec/models/concerns/variant_stock_spec.rb | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/spec/models/concerns/variant_stock_spec.rb b/spec/models/concerns/variant_stock_spec.rb index 7dc3080b45..50c89671e4 100644 --- a/spec/models/concerns/variant_stock_spec.rb +++ b/spec/models/concerns/variant_stock_spec.rb @@ -159,4 +159,44 @@ describe VariantStock do end end end + + describe '#can_supply?' do + context 'when variant on_demand' do + let(:variant) { create(:variant, on_demand: true) } + + it "returns true for zero" do + expect(variant.can_supply?(0)).to eq(true) + end + it "returns true for large quantity" do + expect(variant.can_supply?(100000)).to eq(true) + end + end + + context 'when variant not on_demand' do + context 'when variant in stock' do + it "returns true for zero" do + expect(variant.can_supply?(0)).to eq(true) + end + it "returns true for number equal to stock level" do + expect(variant.can_supply?(variant.total_on_hand)).to eq(true) + end + + it "returns false for number above stock level" do + expect(variant.can_supply?(variant.total_on_hand + 1)).to eq(false) + end + end + + context 'when variant out of stock' do + before { variant.count_on_hand = 0 } + + it "returns true for zero" do + expect(variant.can_supply?(0)).to eq(true) + end + + it "returns false for one" do + expect(variant.can_supply?(1)).to eq(false) + end + end + end + end end