summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJared Norman <jared@super.gd>2019-05-28 15:55:39 -0700
committerJared Norman <jared@super.gd>2019-05-28 15:55:39 -0700
commitcc74b661b1654627c987bb9c3a1cdf5d599dbaec (patch)
tree7b3f515a84a6af66215808611674db359d67a402
parenta7befa9c98f4863edc617ef791c7518e5b1fe168 (diff)
Make use of taxable order check
This just uses the taxable order check configuration added in the parent commit to provide a hook to short circuit order tax checks.
-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