diff --git a/spec/controllers/spree/admin/tax_rates_controller_spec.rb b/spec/controllers/spree/admin/tax_rates_controller_spec.rb index 2acc969225..1a5668b727 100644 --- a/spec/controllers/spree/admin/tax_rates_controller_spec.rb +++ b/spec/controllers/spree/admin/tax_rates_controller_spec.rb @@ -7,9 +7,10 @@ module Spree describe TaxRatesController, type: :controller do include AuthenticationHelper + let!(:default_tax_zone) { create(:zone, default_tax: true) } let!(:tax_rate) { create(:tax_rate, name: "Original Rate", amount: 0.1, included_in_price: false, - calculator: build(:calculator)) + calculator: build(:calculator), zone: default_tax_zone) } describe "#update" do @@ -34,7 +35,7 @@ module Spree end end - context "when the amount or included flag are changed" do + context "when the amount is changed" do it "duplicates the record and soft-deletes the duplicate" do expect { spree_put :update, id: tax_rate.id, tax_rate: { name: "Changed Rate", amount: "0.5" } @@ -50,6 +51,29 @@ module Spree updated_rate = Spree::TaxRate.last expect(updated_rate.name).to eq "Changed Rate" expect(updated_rate.amount).to eq 0.5 + expect(updated_rate.deleted?).to be false + end + end + + context "when included_in_price is changed" do + it "duplicates the record and soft-deletes the duplicate" do + expect { + spree_put :update, id: tax_rate.id, tax_rate: { name: "Changed Rate", included_in_price: "1" } + }.to change{ Spree::TaxRate.with_deleted.count }.by(1) + + expect(response).to redirect_to spree.admin_tax_rates_url + + deprecated_rate = tax_rate.reload + expect(deprecated_rate.name).to eq "Original Rate" + expect(deprecated_rate.amount).to eq 0.1 + expect(deprecated_rate.included_in_price).to be false + expect(deprecated_rate.deleted?).to be true + + updated_rate = Spree::TaxRate.last + expect(updated_rate.name).to eq "Changed Rate" + expect(updated_rate.amount).to eq 0.1 + expect(updated_rate.included_in_price).to be true + expect(updated_rate.deleted?).to be false end end end