mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-27 06:05:19 +00:00
Product and variant deletion removes the product or variant from any order cycles
This commit is contained in:
@@ -148,9 +148,11 @@ Spree::Product.class_eval do
|
||||
end
|
||||
|
||||
def delete_with_delete_from_order_cycles
|
||||
delete_without_delete_from_order_cycles
|
||||
transaction do
|
||||
delete_without_delete_from_order_cycles
|
||||
|
||||
ExchangeVariant.where('exchange_variants.variant_id IN (?)', self.variants_including_master_and_deleted).destroy_all
|
||||
ExchangeVariant.where('exchange_variants.variant_id IN (?)', self.variants_including_master_and_deleted).destroy_all
|
||||
end
|
||||
end
|
||||
alias_method_chain :delete, :delete_from_order_cycles
|
||||
|
||||
|
||||
@@ -52,7 +52,10 @@ Spree::Variant.class_eval do
|
||||
end
|
||||
|
||||
def delete
|
||||
self.update_column(:deleted_at, Time.now)
|
||||
transaction do
|
||||
self.update_column(:deleted_at, Time.now)
|
||||
ExchangeVariant.where(variant_id: self).destroy_all
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
@@ -591,11 +591,11 @@ module Spree
|
||||
end
|
||||
|
||||
describe "deletion" do
|
||||
let(:p) { create(:simple_product) }
|
||||
let(:v) { create(:variant, product: p) }
|
||||
let(:p) { create(:simple_product) }
|
||||
let(:v) { create(:variant, product: p) }
|
||||
let(:oc) { create(:simple_order_cycle) }
|
||||
let(:s) { create(:supplier_enterprise) }
|
||||
let(:e) { create(:exchange, order_cycle: oc, incoming: true, sender: s, receiver: oc.coordinator) }
|
||||
let(:s) { create(:supplier_enterprise) }
|
||||
let(:e) { create(:exchange, order_cycle: oc, incoming: true, sender: s, receiver: oc.coordinator) }
|
||||
|
||||
it "removes the master variant from all order cycles" do
|
||||
e.variants << p.master
|
||||
|
||||
@@ -277,16 +277,24 @@ module Spree
|
||||
end
|
||||
|
||||
describe "deletion" do
|
||||
let(:v) { create(:variant) }
|
||||
let(:e) { create(:exchange, variants: [v]) }
|
||||
|
||||
it "marks the variant as deleted" do
|
||||
v = create(:variant)
|
||||
v.deleted_at.should be_nil
|
||||
v.delete
|
||||
v.deleted_at.should_not be_nil
|
||||
end
|
||||
|
||||
it "removes the variant from all order cycles" do
|
||||
e
|
||||
v.delete
|
||||
e.variants(true).should be_empty
|
||||
end
|
||||
end
|
||||
|
||||
describe "destruction" do
|
||||
it "destroys exchange variants" do
|
||||
it "removes the variant from all order cycles" do
|
||||
v = create(:variant)
|
||||
e = create(:exchange, variants: [v])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user