diff --git a/app/models/add_friend.rb b/app/models/add_friend.rb index fdd7ccb..ca060a2 100644 --- a/app/models/add_friend.rb +++ b/app/models/add_friend.rb @@ -11,8 +11,8 @@ class AddFriend < Task alias :friend= :target= def perform - Friendship.create!(:person => requestor, :friend => target, :group => group_for_person) - Friendship.create!(:person => target, :friend => requestor, :group => group_for_friend) + requestor.add_friend(target, group_for_person) + target.add_friend(requestor, group_for_friend) end # Returns false. Adding friends by itself does not trigger e-mail diff --git a/app/models/person.rb b/app/models/person.rb index c0f0d9a..f1a888d 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -13,6 +13,10 @@ class Person < Profile friendships.map {|item| item.group}.uniq end + def add_friend(friend, group = nil) + self.friendships.build(:friend => friend, :group => group).save! + end + # has_many :person_friendships # has_many :people, :through => :person_friendships, :foreign_key => 'friend_id' diff --git a/test/unit/person_test.rb b/test/unit/person_test.rb index a0d45a4..61adf28 100644 --- a/test/unit/person_test.rb +++ b/test/unit/person_test.rb @@ -147,12 +147,12 @@ class PersonTest < Test::Unit::TestCase p1 = create_user('testuser1').person p2 = create_user('testuser2').person - Friendship.create!(:person => p1, :friend => p2) + p1.add_friend(p2) assert_equal [p2], p1.friends p3 = create_user('testuser3').person - Friendship.create!(:person => p1, :friend => p3) + p1.add_friend(p3) assert_equal [p2,p3], p1.friends(true) # force reload @@ -174,10 +174,10 @@ class PersonTest < Test::Unit::TestCase p2 = create_user('testuser2').person p3 = create_user('testuser3').person p4 = create_user('testuser4').person - - Friendship.create!(:person => p1, :friend => p2, :group => 'group1') - Friendship.create!(:person => p1, :friend => p3, :group => 'group2') - Friendship.create!(:person => p1, :friend => p4, :group => 'group1') + + p1.add_friend(p2, 'group1') + p1.add_friend(p3, 'group2') + p1.add_friend(p4, 'group1') assert_equivalent ['group1', 'group2'], p1.friend_groups end -- libgit2 0.21.2