summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/super_good/solidus_taxjar/tax_calculator.rb5
-rw-r--r--spec/super_good/solidus_taxjar/tax_calculator_spec.rb14
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