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
Post a Comment