Написание теста для Spree, не могу создавать варианты для продуктов

Я пытаюсь написать тесты rspec для своих настроек, и мне нужно создавать продукты с вариантами. Кажется, я не могу этого сделать, хотя я, кажется, делаю то же самое, что и тесты rspec, которые являются частью ядра spree.

def build_option_type_with_values(name, values)
  ot = create(:option_type, :name => name)
  values.each do |val|
    ot.option_values.create(:name => val.downcase, :presentation => val)
  end
  ot
end


let(:number_size_option_type) do
  size = build_option_type_with_values("number sizes", %w(1 2 3 4))
end

let(:product1) { create(:product, name: 'product1') }

it "should have variants" do
  hash = {number_size_option_type.id.to_s => number_size_option_type.option_value_ids}
  product1.option_values_hash = hash
  product1.save
  product1.reload
  expect(product1.variants.length).to eq(4)
end

независимо от того, что я делаю, количество вариантов моего продукта всегда равно нулю.


person radamnyc    schedule 03.07.2015    source источник


Ответы (1)


Оказывается, product.option_values_hash необходимо добавить во время создания продукта, чтобы вызвать код создания варианта. вот измененная строка, а затем я удалил хеш из теста "должен быть вариант"

let(:product1) { create(:product, name: 'product1', option_values_hash: {number_size_option_type.id.to_s => number_size_option_type.option_value_ids}) }

it "should have variants" do
  product1.save
  expect(product1.option_type_ids.length).to eq(1)
  expect(product1.variants.length).to eq(4)
end
person radamnyc    schedule 03.07.2015