Sha256: e4f47d825c95a13ad5571959147328b7c17536c34e2805ead7563c9d09988cdc

Contents?: true

Size: 1.61 KB

Versions: 48

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true

require 'rails_helper'

RSpec.describe Spree::TaxCalculator::Default do
  let(:shipping_address) { FactoryBot.create(:address, state: new_york) }
  let(:order) { FactoryBot.create(:order, ship_address: shipping_address, state: "delivery") }

  let(:new_york) { FactoryBot.create(:state, state_code: "NY") }
  let(:new_york_zone) { FactoryBot.create(:zone, states: [new_york]) }

  let(:books_category) { FactoryBot.create(:tax_category, name: "Books") }
  let!(:book_tax_rate) do
    FactoryBot.create(
      :tax_rate,
      name: "New York Sales Tax",
      tax_categories: [books_category],
      zone: new_york_zone,
      included_in_price: false,
      amount: 0.05
    )
  end

  before do
    book = FactoryBot.create(
      :product,
      price: 20,
      name: "Book",
      tax_category: books_category,
    )

    order.contents.add(book.master)
  end

  let(:calculator) { described_class.new(order) }

  describe '#calculate' do
    subject(:calculated_taxes) { calculator.calculate }

    it { is_expected.to be_a Spree::Tax::OrderTax }

    it "has tax information for the line item", aggregate_failures: true do
      expect(calculated_taxes.line_item_taxes.count).to eq 1

      line_item_tax = calculated_taxes.line_item_taxes.first
      expect(line_item_tax.amount).to eq 1
      expect(line_item_tax.included_in_price).to be false
      expect(line_item_tax.tax_rate).to eq book_tax_rate
      expect(line_item_tax.label).to eq "New York Sales Tax 5.000%"
    end

    it "has tax information for the shipments" do
      expect(calculated_taxes.shipment_taxes).to be_empty
    end
  end
end

Version data entries

48 entries across 48 versions & 2 rubygems

Version Path
solidus_core-2.10.5 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.10.3 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.10.2 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.9.6 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.8.6 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.10.1 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.9.5 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.10.0 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.9.4 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.6.6 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.7.4 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.8.5 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.9.3 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.9.2 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.10.0.beta1 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.7.3 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.6.5 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.9.1 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.9.0 spec/models/spree/tax_calculator/default_spec.rb
solidus_core-2.9.0.rc.1 spec/models/spree/tax_calculator/default_spec.rb