From ff2e6d9ca46806af706181c9087e77c603823826 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Fri, 17 Apr 2015 17:25:13 +1000 Subject: [PATCH] Test deletion rather than destruction on variant model spec --- app/models/spree/variant_decorator.rb | 2 ++ spec/models/spree/variant_spec.rb | 14 ++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/models/spree/variant_decorator.rb b/app/models/spree/variant_decorator.rb index 20c4f20cf7..88c9b14e26 100644 --- a/app/models/spree/variant_decorator.rb +++ b/app/models/spree/variant_decorator.rb @@ -104,10 +104,12 @@ Spree::Variant.class_eval do def delete if product.variants == [self] # Only variant left on product errors.add :product, "must have at least one variant" + false else transaction do self.update_column(:deleted_at, Time.now) ExchangeVariant.where(variant_id: self).destroy_all + self end end end diff --git a/spec/models/spree/variant_spec.rb b/spec/models/spree/variant_spec.rb index 2c37065916..7910087dfd 100644 --- a/spec/models/spree/variant_spec.rb +++ b/spec/models/spree/variant_spec.rb @@ -401,15 +401,17 @@ module Spree end context "as the last variant of a product" do - let!(:product) { create(:simple_product) } - let!(:first_variant) { product.variants(:reload).first } - let!(:extra_variant) { create(:variant, product: product) } + let!(:extra_variant) { create(:variant) } + let!(:product) { extra_variant.product } + let!(:first_variant) { product.variants.first } + + before { product.reload } it "cannot be deleted" do - expect(product.variants(:reload).length).to eq 2 - expect(extra_variant.destroy).to eq extra_variant + expect(product.variants.length).to eq 2 + expect(extra_variant.delete).to eq extra_variant expect(product.variants(:reload).length).to eq 1 - expect(first_variant.destroy).to be_false + expect(first_variant.delete).to be_false expect(product.variants(:reload).length).to eq 1 expect(first_variant.errors[:product]).to include "must have at least one variant" end