Sha256: fc4c5840f9d6234473206304dd9b55668da2580e33c89d7f325b5645580ffbcd
Contents?: true
Size: 1.87 KB
Versions: 2
Compression:
Stored size: 1.87 KB
Contents
# frozen_string_literal: true require 'spec_helper' module Spree describe OrderInventoryAssembly do subject { described_class.new(line_item) } let(:order) { create(:order_with_line_items) } let(:line_item) { order.line_items.first } let(:bundle) { line_item.product } let(:parts) { (1..3).map { create(:variant) } } before do bundle.parts << [parts] bundle.set_part_count(parts.first, 3) line_item.update!(quantity: 3) order.reload.create_proposed_shipments order.finalize! end context "inventory units count" do it "calculates the proper value for the bundle" do expected_units_count = line_item.quantity * bundle.assemblies_parts.to_a.sum(&:count) expect(subject.inventory_units.count).to eql(expected_units_count) end end context "verify line item units" do let!(:original_units_count) { subject.inventory_units.count } context "quantity increases" do before { subject.line_item.quantity += 1 } it "inserts new inventory units for every bundle part" do expected_units_count = original_units_count + bundle.assemblies_parts.to_a.sum(&:count) subject.verify expect(described_class.new(line_item.reload).inventory_units.count).to eql(expected_units_count) end end context "quantity decreases" do before { subject.line_item.quantity -= 1 } it "remove inventory units for every bundle part" do expected_units_count = original_units_count - bundle.assemblies_parts.to_a.sum(&:count) subject.verify # needs to reload so that inventory units are fetched from updates order.shipments updated_units_count = described_class.new(line_item.reload).inventory_units.count expect(updated_units_count).to eql(expected_units_count) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
solidus_product_assembly-1.2.0 | spec/models/spree/order_inventory_assembly_spec.rb |
solidus_product_assembly-1.1.0 | spec/models/spree/order_inventory_assembly_spec.rb |