ruby - rails: how to have a FactoryGirl for all my states -


say have event_type model has few event types such "live","used","offline".

those types used in other model called event. now, when testing, need have types populated on every run. more specific, event factory:

factory :event |e|     e.event_type {|v| v.association(:event_type)}     e.latitude 40.767929000000     e.longitude -73.985742000000 end 

i tried on event factory:

after(:create) {|event|   factorygirl.create(:event_type, {:name => "live"})   factorygirl.create(:event_type, {:name => "used"})   factorygirl.create(:event_type, {:name => "offline"}) } 

the problem approach if create more 1 event object event types created again each event use.

what better approach?

thanks,

you have in _spec running test. (or test)

in rspec you'd in before block @ top of spec.

require 'spec_helper'  describe event     before      factorygirl.create(:event_type, {:name => "live"})     factorygirl.create(:event_type, {:name => "used"})     factorygirl.create(:event_type, {:name => "offline"})    end    "tests something"      ...   end  end 

also you're trying trait made ... in factory

factory :event |e|    e.latitude 40.767929000000   e.longitude -73.985742000000    trait :live     e.event_type = "live"   end    trait :used     e.event_type = "used"   end    trait :offline     e.event_type = "offline"   end    # defining these not necessary may save time   factory :event_live, traits: [:live]   factory :event_used, traits: [:used]   factory :event_offline, traits: [:offline] end 

which allow create factories based on them such:

factorygirl.create :event, :live 

or call "unnecessary factories" shown above

factorygirl.create :event_live 

however if event_type association might need traits defined in separate factory can leverage this:

trait :live    e.association :event_type, factory: :event_type end 

hope helps!

you may want leverage database cleaner gem clear out items between each run don't run unique validation errors.


Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -