Sha256: f71dd906d9d609bf0066bfd3bb2904d20d3bc5960e25980fca0dcb7fc04631b3

Contents?: true

Size: 1.02 KB

Versions: 1

Compression:

Stored size: 1.02 KB

Contents

require 'spec_helper'

module Spree
  describe OrderContents do
    let!(:store) { create :store }
    let(:order) { Order.create }

    let(:guitar) { create(:variant) }
    let(:bass) { create(:variant) }

    let(:bundle) { create(:product) }

    subject { OrderContents.new(order) }

    before { bundle.parts.push [guitar, bass] }

    context "same variant within bundle and as regular product" do
      let!(:guitar_item) { subject.add(guitar, 3) }
      let!(:bundle_item) { subject.add(bundle.master, 5) }

      it "destroys the variant as regular product only" do
        subject.remove(guitar, 3)
        expect(order.reload.line_items.to_a).to eq [bundle_item]
      end

      context "completed order" do
        before do
          order.create_proposed_shipments
          order.touch :completed_at
        end

        it "destroys accurate number of inventory units" do
          expect {
            subject.remove(guitar, 3)
          }.to change { InventoryUnit.count }.by(-3)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
solidus_product_assembly-1.0.0 spec/models/spree/order_contents_spec.rb