From 8f40702369a959a0c9d69fc2a0544eacb0886e3b Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Mon, 21 Sep 2015 15:57:04 +1000 Subject: [PATCH] Line items report whether they have tax included --- app/models/spree/line_item_decorator.rb | 4 ++++ spec/models/spree/line_item_spec.rb | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/app/models/spree/line_item_decorator.rb b/app/models/spree/line_item_decorator.rb index 0648c7919f..689cabcc6c 100644 --- a/app/models/spree/line_item_decorator.rb +++ b/app/models/spree/line_item_decorator.rb @@ -33,6 +33,10 @@ Spree::LineItem.class_eval do where('spree_adjustments.id IS NULL') + def has_tax? + adjustments.included_tax.any? + end + def price_with_adjustments # EnterpriseFee#create_locked_adjustment applies adjustments on line items to their parent order, # so line_item.adjustments returns an empty array diff --git a/spec/models/spree/line_item_spec.rb b/spec/models/spree/line_item_spec.rb index a61f4e67fc..f9c0e97f20 100644 --- a/spec/models/spree/line_item_spec.rb +++ b/spec/models/spree/line_item_spec.rb @@ -63,5 +63,20 @@ module Spree li.amount_with_adjustments.should == 122.22 end end + + describe "checking if a line item has tax included" do + let(:li_no_tax) { create(:line_item) } + let(:li_tax) { create(:line_item) } + let(:tax_rate) { create(:tax_rate, calculator: Spree::Calculator::DefaultTax.new) } + let!(:adjustment) { create(:adjustment, adjustable: li_tax, originator: tax_rate, label: "TR", amount: 123, included_tax: 10.00) } + + it "returns true when it does" do + li_tax.should have_tax + end + + it "returns false otherwise" do + li_no_tax.should_not have_tax + end + end end end