Ensure adjustments can access soft-deleted originators

Note: originator is generally an EnterpriseFee or a TaxRate
This commit is contained in:
Matt-Yorkley
2021-01-15 15:16:56 +00:00
parent c4a8a38c8d
commit 6a9505cf67
2 changed files with 27 additions and 0 deletions

View File

@@ -162,6 +162,13 @@ module Spree
result
end
# Allow accessing soft-deleted originator objects
def originator
return if originator_type.blank?
originator_type.constantize.unscoped { super }
end
private
def update_adjustable

View File

@@ -139,4 +139,24 @@ describe EnterpriseFee do
end.to change(order.adjustments, :count).by(0)
end
end
describe "soft-deletion" do
let(:tax_category) { create(:tax_category) }
let(:enterprise_fee) { create(:enterprise_fee, tax_category: tax_category ) }
let!(:adjustment) { create(:adjustment, originator: enterprise_fee) }
before do
enterprise_fee.destroy
enterprise_fee.reload
end
it "soft-deletes the enterprise fee" do
expect(enterprise_fee.deleted_at).to_not be_nil
end
it "can be accessed by old adjustments" do
expect(adjustment.reload.originator).to eq enterprise_fee
expect(adjustment.originator.tax_category).to eq enterprise_fee.tax_category
end
end
end