From dc7ddee65ec19736b054bf0f76d3433581cbc1f0 Mon Sep 17 00:00:00 2001 From: Daniela Soares Feitosa Date: Tue, 7 Oct 2008 16:02:59 -0300 Subject: [PATCH] ActionItem758: removing friendships when person is destroyed --- app/models/person.rb | 6 +++++- test/unit/person_test.rb | 12 ++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/models/person.rb b/app/models/person.rb index 27e86e0..c454e65 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -3,11 +3,15 @@ class Person < Profile acts_as_accessor - has_many :friendships + has_many :friendships, :dependent => :destroy has_many :friends, :class_name => 'Person', :through => :friendships has_many :requested_tasks, :class_name => 'Task', :foreign_key => :requestor_id, :dependent => :destroy + after_destroy do |person| + Friendship.find(:all, :conditions => { :friend_id => person.id}).each { |friendship| friendship.destroy } + end + def suggested_friend_groups (friend_groups + [ _('friends'), _('work'), _('school'), _('family') ]).map {|i| i if !i.empty?}.compact.uniq end diff --git a/test/unit/person_test.rb b/test/unit/person_test.rb index 0609413..efe77b4 100644 --- a/test/unit/person_test.rb +++ b/test/unit/person_test.rb @@ -217,6 +217,18 @@ class PersonTest < Test::Unit::TestCase assert_not_includes p1.friends(true), p2 end + should 'destroy friendships when person is destroyed' do + p1 = create_user('testuser1').person + p2 = create_user('testuser2').person + p1.add_friend(p2, 'friends') + p2.add_friend(p1, 'friends') + + assert_difference Friendship, :count, -2 do + p1.destroy + end + assert_not_includes p2.friends(true), p1 + end + should 'return info name instead of name when info is setted' do p = create_user('ze_maria').person assert_equal 'ze_maria', p.name -- libgit2 0.21.2