Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FactoryGirl create_list with different values

I'm trying to user FactoryGirl to create a list of items, but I need the items to not be in order. This is what I have, but I would like it to be DRYer.

spec.rb

context "three out of order" do
  before do
    FactoryGirl.create(:thing, ordering: 3)
    FactoryGirl.create(:thing, ordering: 1)
    FactoryGirl.create(:thing, ordering: 2)
  end

   it "should sort the things in order" do
    expect(Thing.all.map(&:ordering)).to eq([1, 2, 3])
   end
end

I know that you can create multiple items with:

   FactoryGirl.create_list(:thing, ordering: 3 )

but I wanted to create items so it tested their order, and they would create all of them in order since I have sequence set up in the factory.

like image 430
AGirlThatCodes Avatar asked Nov 18 '14 21:11

AGirlThatCodes


1 Answers

What about this?

before do
  (1..3).to_a.shuffle.each do |order|
    FactoryGirl.create(:thing, ordering: order)
  end
end
like image 81
Bob Avatar answered Nov 06 '22 12:11

Bob