diff --git a/app/models/spree/stock_item.rb b/app/models/spree/stock_item.rb index e6df19b03a..b59e2dc6dc 100644 --- a/app/models/spree/stock_item.rb +++ b/app/models/spree/stock_item.rb @@ -6,7 +6,7 @@ module Spree belongs_to :stock_location, class_name: 'Spree::StockLocation' belongs_to :variant, class_name: 'Spree::Variant' - has_many :stock_movements, dependent: :destroy + has_many :stock_movements validates :stock_location, :variant, presence: true validates :variant_id, uniqueness: { scope: [:stock_location_id, :deleted_at] } diff --git a/spec/models/spree/product_spec.rb b/spec/models/spree/product_spec.rb index c79afb511e..a192e359bd 100644 --- a/spec/models/spree/product_spec.rb +++ b/spec/models/spree/product_spec.rb @@ -220,6 +220,17 @@ module Spree end end + context "has stock movements" do + let(:product) { create(:product) } + let(:variant) { product.master } + let(:stock_item) { variant.stock_items.first } + + it "doesnt raise ReadOnlyRecord error" do + Spree::StockMovement.create!(stock_item: stock_item, quantity: 1) + expect { product.destroy }.not_to raise_error + end + end + describe "associations" do it { is_expected.to belong_to(:supplier) } it { is_expected.to belong_to(:primary_taxon) } diff --git a/spec/models/spree/stock_item_spec.rb b/spec/models/spree/stock_item_spec.rb index 9c9b233986..05060c182b 100644 --- a/spec/models/spree/stock_item_spec.rb +++ b/spec/models/spree/stock_item_spec.rb @@ -102,5 +102,13 @@ RSpec.describe Spree::StockItem do end end end + + context "with stock movements" do + before { Spree::StockMovement.create(stock_item: subject, quantity: 1) } + + it "doesnt raise ReadOnlyRecord error" do + expect { subject.destroy }.not_to raise_error + end + end end end