From 3da5c0d7fd0e5cd65ae1c6a65d9594eb98c74093 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Tue, 16 Feb 2021 13:21:57 +0000 Subject: [PATCH] Update TaxRate transition spec Setting a tax rate to included fails a validation if a default zone doesn't exist, so that's added. Also improved the tested scenarios and some of the details checked on the updated objects. --- .../spree/admin/tax_rates_controller_spec.rb | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) 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