diff options
-rw-r--r-- | lib/super_good/solidus_taxjar/tax_calculator.rb | 5 | ||||
-rw-r--r-- | spec/super_good/solidus_taxjar/tax_calculator_spec.rb | 14 |
2 files changed, 19 insertions, 0 deletions
diff --git a/lib/super_good/solidus_taxjar/tax_calculator.rb b/lib/super_good/solidus_taxjar/tax_calculator.rb index 0ddd50f..c7d44a9 100644 --- a/lib/super_good/solidus_taxjar/tax_calculator.rb +++ b/lib/super_good/solidus_taxjar/tax_calculator.rb @@ -13,6 +13,7 @@ module SuperGood def calculate return no_tax if SuperGood::SolidusTaxJar.test_mode return no_tax if incomplete_address?(order.tax_address) || order.line_items.none? + return no_tax unless taxable_order? order return no_tax unless taxable_address? order.tax_address cache do @@ -133,6 +134,10 @@ module SuperGood SuperGood::SolidusTaxJar.exception_handler end + def taxable_order?(order) + SuperGood::SolidusTaxJar.taxable_order_check.(order) + end + def taxable_address?(address) SuperGood::SolidusTaxJar.taxable_address_check.(address) end diff --git a/spec/super_good/solidus_taxjar/tax_calculator_spec.rb b/spec/super_good/solidus_taxjar/tax_calculator_spec.rb index ee4fee0..c9ecbcd 100644 --- a/spec/super_good/solidus_taxjar/tax_calculator_spec.rb +++ b/spec/super_good/solidus_taxjar/tax_calculator_spec.rb @@ -243,6 +243,20 @@ RSpec.describe ::SuperGood::SolidusTaxJar::TaxCalculator do end end + context "but the taxable order check returns false" do + before do + allow(SuperGood::SolidusTaxJar.taxable_order_check) + .to receive(:call).with(order) + .and_return(false) + end + + it "returns no taxes" do + expect(subject.order_id).to eq order.id + expect(subject.shipment_taxes).to be_empty + expect(subject.line_item_taxes).to be_empty + end + end + context "when there are shipping taxes" do let(:shipping_tax_breakdown) do instance_double ::Taxjar::Shipping, tax_collectable: 10.00 |