Sha256: a08df638ee04fcab95e90e4a2ced0bfc21486df91f68ab0556a228fcac13c6dd

Contents?: true

Size: 1.15 KB

Versions: 2

Compression:

Stored size: 1.15 KB

Contents

require 'spec_helper'

RSpec.describe SolidusAvataxCertified::OrderAdjuster, :vcr do
  subject(:adjuster) { described_class.new(order) }

  describe '#adjust!' do
    context 'before payment state' do
      let(:line_item) { build_stubbed(:line_item) }
      let(:shipment) { build_stubbed(:shipment) }
      let(:order) { build_stubbed(:order, state: 'delivery', line_items: [line_item], shipments: [shipment]) }

      it 'does not create new tax adjustments' do
        expect{ adjuster.adjust! }.to_not change { Spree::Adjustment.count }
      end

      it 'returns an array of all line items and shipments' do
        expect(adjuster.adjust!).to include(line_item)
        expect(adjuster.adjust!).to include(shipment)
      end
    end

    context 'at & after payment state' do
      let(:order) { create(:avalara_order) }

      before do
        order.reload # Allow order to create
        order.line_items.update_all(price: 20)
      end

      it 'updates the adjustments' do
        expect(order.state).to eq('payment')
        expect{ adjuster.adjust! }.to change { order.line_items.first.adjustments.tax.first.amount }.from(0.4).to(0.8)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
solidus_avatax_certified-3.0.0 spec/models/solidus_avatax_certified/order_adjuster_spec.rb
solidus_avatax_certified-2.0.0 spec/models/solidus_avatax_certified/order_adjuster_spec.rb