Skip to content

Instantly share code, notes, and snippets.

@harlow
Created December 4, 2012 20:39
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save harlow/4208438 to your computer and use it in GitHub Desktop.
Save harlow/4208438 to your computer and use it in GitHub Desktop.
Factory Girl Cheat Sheet
# This will guess the User class
Factory.define :user do
first_name 'John'
last_name 'Doe'
admin false
end
# This will use the User class (Admin would have been guessed)
Factory.define :admin, :class => User do |u|
u.first_name 'Admin'
u.last_name 'User'
u.admin true
end
# Lazy Attributes:
Factory.define :user do |u|
# ...
u.activation_code { User.generate_activation_code }
end
# Dependent Attributes:
Factory.define :user do |u|
u.first_name 'Joe'
u.last_name 'Blow'
u.email {|a| "#{a.first_name}.#{a.last_name}@example.com".downcase }
end
# Associations
Factory.define :post do |p|
# ...
p.author {|author| author.association(:user, :last_name => 'Writely') }
end
# Or in short form
Factory.define :post do |p|
p.association :author, :factory => :user
end
# Defines a new sequence
Factory.sequence :email do |n|
"person#{n}@example.com"
end
# Uses the sequence
Factory.next :email
# => "person1@example.com"
# Build and save a User instance
Factory(:user)
# Build a User instance and override the first_name property
Factory.build(:user, :first_name => 'Joe')
# Return an attributes Hash that can be used to build a User instance
attrs = Factory.attributes_for(:user)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment