Recommended way to test ActiveRecord associations?

Posted by Sugerman on Stack Overflow See other posts from Stack Overflow or by Sugerman
Published on 2010-04-24T04:57:19Z Indexed on 2010/04/24 5:03 UTC
Read the original article Hit count: 483

Filed under:
|
|

I have written my basic models and defined their associations as well as the migrations to create the associated tables. I want to be able to test:

  • The associations are configured as intended
  • The table structures support the associations properly

I've written FG factories for all of my models in anticipation of having a complete set of test data but I can't grasp how to write a spec to test both belongs_to and has_many associations.

For example, given an Organization that has_many Users I want to be able to test that my sample Organization has a reference to my sample User.

Organization_Factory.rb:

Factory.define :boardofrec, :class => 'Organization' do |o|
  o.name 'Board of Recreation'
  o.address '115 Main Street'
  o.city 'Smallville'
  o.state 'New Jersey'
  o.zip '01929'
end

Factory.define :boardofrec_with_users, :parent => :boardofrec do |o|
  o.after_create do |org|
    org.users = [Factory.create(:johnny, :organization => org)]
  end
end

User_Factory.rb:

Factory.define :johnny, :class => 'User' do |u|
  u.name 'Johnny B. Badd'
  u.email '[email protected]'
  u.password 'password'
  u.org_admin true
  u.site_admin false
  u.association :organization, :factory => :boardofrec
end

Organization_spec.rb:

...
  it "should have the user Johnny B. Badd" do
    boardofrec_with_users = Factory.create(:boardofrec_with_users)
    boardofrec_with_users.users.should include(Factory.create(:johnny))
  end
...

This example fails because the Organization.users list and the comparison User :johnny are separate instances of the same Factory.

I realize this doesn't follow the BDD ideas behind what these plugins (FG, rspec) seemed to be geared for but seeing as this is my first rails application I'm uncomfortable moving forward without knowing that I've configured my associations and table structures properly.

© Stack Overflow or respective owner

Related posts about ruby-on-rails

Related posts about factorygirl