From 1ec453df4df494a4c1c5f675b57616d3095e2a85 Mon Sep 17 00:00:00 2001 From: Anthony Musyoki <445103+anthonyms@users.noreply.github.com> Date: Thu, 21 Mar 2024 15:54:29 +0300 Subject: [PATCH] Fix Rubocop issue: Do not delete addresses having shipments The reasoning is that we should not delete an address that has ever received a shipment --- app/models/spree/address.rb | 2 +- spec/models/spree/address_spec.rb | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/models/spree/address.rb b/app/models/spree/address.rb index 9c305be78d..9d7cac881f 100644 --- a/app/models/spree/address.rb +++ b/app/models/spree/address.rb @@ -12,7 +12,7 @@ module Spree belongs_to :state, class_name: "Spree::State", optional: true has_one :enterprise, dependent: :restrict_with_exception - has_many :shipments + has_many :shipments, dependent: :restrict_with_exception validates :address1, :city, :phone, presence: true validates :company, presence: true, unless: -> { first_name.blank? || last_name.blank? } diff --git a/spec/models/spree/address_spec.rb b/spec/models/spree/address_spec.rb index 41d0a28b15..c0b4f17234 100644 --- a/spec/models/spree/address_spec.rb +++ b/spec/models/spree/address_spec.rb @@ -134,6 +134,17 @@ describe Spree::Address do end end + context "associations" do + it "destroys shipments upon destroy" do + address = create(:address) + create(:shipment, address:) + + expect { + address.destroy + }.to raise_error(ActiveRecord::DeleteRestrictionError) + end + end + context ".default" do it "sets up a new record the default country" do expect(Spree::Address.default.country).to eq DefaultCountry.country