Files
openfoodnetwork/spec/models/concerns/product_stock_spec.rb

58 lines
1.5 KiB
Ruby

require "spec_helper"
describe ProductStock do
let(:product) { create(:simple_product) }
context "when product has no variants" do
before do
product.variants.first.destroy
product.variants.reload
end
describe "product.on_demand" do
it "is master.on_demand" do
expect(product.on_demand).to eq(product.master.on_demand)
end
end
describe "product.on_hand" do
it "is master.on_hand" do
expect(product.on_hand).to eq(product.master.on_hand)
end
end
end
context "when product has one variant" do
describe "product.on_demand" do
it "is the products first variant on_demand" do
expect(product.on_demand).to eq(product.variants.first.on_demand)
end
end
describe "product.on_hand" do
it "is the products first variant on_hand" do
expect(product.on_hand).to eq(product.variants.first.on_hand)
end
end
end
context 'when product has more than one variant' do
before do
product.variants << create(:variant, product: product)
end
describe "product.on_demand" do
it "raises error" do
expect { product.on_demand }
.to raise_error(StandardError, /Cannot determine product on_demand value/)
end
end
describe "product.on_hand" do
it "is the sum of the products variants on_hand values" do
expect(product.on_hand).to eq(product.variants.first.on_hand + product.variants.second.on_hand)
end
end
end
end