Last active
August 29, 2015 14:07
-
-
Save AWaselnuk/86dbb6ac187bd0e1565e to your computer and use it in GitHub Desktop.
Test ActiveRecord callbacks
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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