Sha256: 3a7625baab80f79ee294584941bf7035840e7e808e995dfa6262be59461c2dc8

Contents?: true

Size: 1.55 KB

Versions: 32

Compression:

Stored size: 1.55 KB

Contents

require 'spec_helper'

module Spree
  module ReturnItem::ExchangeVariantEligibility
    describe SameProduct, type: :model do
      describe ".eligible_variants" do
        context "product has no variants" do
          it "returns the master variant for the same product" do
            product = create(:product)
            product.master.stock_items.first.update_column(:count_on_hand, 10)

            expect(SameProduct.eligible_variants(product.master)).to eq [product.master]
          end
        end

        context "product has variants" do
          it "returns all variants for the same product" do
            product = create(:product, variants: Array.new(3) { create(:variant) })
            product.variants.map { |v| v.stock_items.first.update_column(:count_on_hand, 10) }

            expect(SameProduct.eligible_variants(product.variants.first).sort).to eq product.variants.sort
          end
        end

        it "does not return variants for another product" do
          variant = create(:variant)
          other_product_variant = create(:variant)
          expect(SameProduct.eligible_variants(variant)).not_to include other_product_variant
        end

        it "only returns variants that are on hand" do
          product = create(:product, variants: Array.new(2) { create(:variant) })
          in_stock_variant = product.variants.first

          in_stock_variant.stock_items.first.update_column(:count_on_hand, 10)
          expect(SameProduct.eligible_variants(in_stock_variant)).to eq [in_stock_variant]
        end
      end
    end
  end
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
solidus_core-2.3.1 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.2.2 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.1.1 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.0.3 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-1.4.2 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-1.3.2 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.3.0 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.3.0.rc3 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.3.0.rc2 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.3.0.rc1 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.3.0.beta1 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.0.2 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-1.4.1 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.2.1 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.2.0 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.2.0.rc1 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.2.0.beta1 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.1.0 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.1.0.rc1 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb
solidus_core-2.0.1 spec/models/spree/return_item/exchange_variant_eligibility/same_product_spec.rb