mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-31 21:37:16 +00:00
58 lines
1.5 KiB
Ruby
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
|