Product and variant deletion removes the product or variant from any order cycles

This commit is contained in:
Rohan Mitchell
2014-06-12 12:00:16 +10:00
parent 083220089f
commit 836a08606c
4 changed files with 22 additions and 9 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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])