diff --git a/spec/models/spree/shipment_spec.rb b/spec/models/spree/shipment_spec.rb new file mode 100644 index 0000000000..b37dd498ff --- /dev/null +++ b/spec/models/spree/shipment_spec.rb @@ -0,0 +1,33 @@ +require "spec_helper" + +describe Spree::Shipment do + describe "manifest" do + let!(:product) { create(:product) } + let!(:order) { create(:order, distributor: product.supplier) } + let!(:deleted_variant) { create(:variant, product: product) } + let!(:other_variant) { create(:variant, product: product) } + let!(:line_item_for_deleted) { create(:line_item, order: order, variant: deleted_variant) } + let!(:line_item_for_other) { create(:line_item, order: order, variant: other_variant) } + let!(:shipment) { create(:shipment_with, :shipping_method, order: order) } + + context "when the variant is soft-deleted" do + before { deleted_variant.delete } + + it "can still access the variant" do + shipment.reload + variants = shipment.manifest.map(&:variant).uniq + expect(variants.sort_by(&:id)).to eq([deleted_variant, other_variant].sort_by(&:id)) + end + end + + context "when the product is soft-deleted" do + before { deleted_variant.product.delete } + + it "can still access the variant" do + shipment.reload + variants = shipment.manifest.map(&:variant) + expect(variants.sort_by(&:id)).to eq([deleted_variant, other_variant].sort_by(&:id)) + end + end + end +end