Skip to content

Instantly share code, notes, and snippets.

@AWaselnuk
Last active August 29, 2015 14:07
Show Gist options
  • Save AWaselnuk/86dbb6ac187bd0e1565e to your computer and use it in GitHub Desktop.
Save AWaselnuk/86dbb6ac187bd0e1565e to your computer and use it in GitHub Desktop.
Test ActiveRecord callbacks
class Team < ActiveRecord::Base
has_many :users
validates :name, presence: true, uniqueness: true
before_destroy :clear_team_members
private
# Clear team members when a team is destroyed
def clear_team_members
users = User.where(team: self)
users.update_all(team_id: nil) if users.present?
true
end
end
# requires rspec >= 3.0
# requires factory_girl gem
describe '::destroy' do
before :each do
@team = create(:team)
@team_member = create(:user, team_id: @team.id)
end
it 'should trigger clear_team_members on destroy' do
expect(@team).to receive(:clear_team_members)
@team.run_callbacks(:destroy)
end
it '#clear_team_members should set team members team_id to nil' do
@team.run_callbacks(:destroy)
@team_member.reload
expect(@team_member.team_id).to be_nil
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment