Sha256: eae23f87662ff7495469201cc39d298cd1836baa16aa2b6c3e3cd97a3d2a0593

Contents?: true

Size: 1.71 KB

Versions: 3

Compression:

Stored size: 1.71 KB

Contents

# frozen_string_literal: true

require 'spec_helper'

describe Spree::Product do
  before do
    @product = FactoryBot.create(:product, name: "Foo Bar")
    @master_variant = Spree::Variant.where(is_master: true).find_by(product_id: @product.id)
  end

  describe ".search_can_be_part" do
    subject { described_class.search_can_be_part("matching") }

    let!(:name_matching_product) { create :product, can_be_part: true, name: "matching" }
    let!(:sku_matching_product) { create :product, can_be_part: true, master: variant }
    let(:variant) { create :master_variant, sku: "matching" }

    before do
      create :product, can_be_part: false, name: "matching"
      create :product, deleted_at: 1.day.ago, can_be_part: true, name: "matching"
      create :product, can_be_part: true, name: "Something else"
    end

    it "returns non-deleted products matching the search that can be parts" do
      expect(subject).to contain_exactly(name_matching_product, sku_matching_product)
    end
  end

  describe "Spree::Product Assembly" do
    before do
      @product = create(:product)
      @part1 = create(:product, can_be_part: true)
      @part2 = create(:product, can_be_part: true)
      @product.add_part @part1.master, 1
      @product.add_part @part2.master, 4
    end

    it "is an assembly" do
      expect(@product).to be_assembly
    end

    it "cannot be part" do
      expect(@product).to be_assembly
      @product.can_be_part = true
      expect(@product).not_to be_valid
      expect(@product.errors[:can_be_part]).to eq ["assembly can't be part"]
    end

    it 'changing part qty changes count on_hand' do
      @product.set_part_count(@part2.master, 2)
      expect(@product.count_of(@part2.master)).to eq 2
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
solidus_product_assembly-1.4.0 spec/models/spree/product_spec.rb
solidus_product_assembly-1.3.0 spec/models/spree/product_spec.rb
solidus_product_assembly-1.2.0 spec/models/spree/product_spec.rb