Commit 6fbde715443ba8a8058fa74ff90e94fe609a5baf

Authored by AntonioTerceiro
1 parent 753dceb0

ActionItem36: refactoring: use Person#add_friend instead of manually creating Friendship instances


git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1505 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/models/add_friend.rb
@@ -11,8 +11,8 @@ class AddFriend < Task @@ -11,8 +11,8 @@ class AddFriend < Task
11 alias :friend= :target= 11 alias :friend= :target=
12 12
13 def perform 13 def perform
14 - Friendship.create!(:person => requestor, :friend => target, :group => group_for_person)  
15 - Friendship.create!(:person => target, :friend => requestor, :group => group_for_friend) 14 + requestor.add_friend(target, group_for_person)
  15 + target.add_friend(requestor, group_for_friend)
16 end 16 end
17 17
18 # Returns <tt>false</tt>. Adding friends by itself does not trigger e-mail 18 # Returns <tt>false</tt>. Adding friends by itself does not trigger e-mail
app/models/person.rb
@@ -13,6 +13,10 @@ class Person &lt; Profile @@ -13,6 +13,10 @@ class Person &lt; Profile
13 friendships.map {|item| item.group}.uniq 13 friendships.map {|item| item.group}.uniq
14 end 14 end
15 15
  16 + def add_friend(friend, group = nil)
  17 + self.friendships.build(:friend => friend, :group => group).save!
  18 + end
  19 +
16 # has_many :person_friendships 20 # has_many :person_friendships
17 # has_many :people, :through => :person_friendships, :foreign_key => 'friend_id' 21 # has_many :people, :through => :person_friendships, :foreign_key => 'friend_id'
18 22
test/unit/person_test.rb
@@ -147,12 +147,12 @@ class PersonTest &lt; Test::Unit::TestCase @@ -147,12 +147,12 @@ class PersonTest &lt; Test::Unit::TestCase
147 p1 = create_user('testuser1').person 147 p1 = create_user('testuser1').person
148 p2 = create_user('testuser2').person 148 p2 = create_user('testuser2').person
149 149
150 - Friendship.create!(:person => p1, :friend => p2) 150 + p1.add_friend(p2)
151 151
152 assert_equal [p2], p1.friends 152 assert_equal [p2], p1.friends
153 153
154 p3 = create_user('testuser3').person 154 p3 = create_user('testuser3').person
155 - Friendship.create!(:person => p1, :friend => p3) 155 + p1.add_friend(p3)
156 156
157 assert_equal [p2,p3], p1.friends(true) # force reload 157 assert_equal [p2,p3], p1.friends(true) # force reload
158 158
@@ -174,10 +174,10 @@ class PersonTest &lt; Test::Unit::TestCase @@ -174,10 +174,10 @@ class PersonTest &lt; Test::Unit::TestCase
174 p2 = create_user('testuser2').person 174 p2 = create_user('testuser2').person
175 p3 = create_user('testuser3').person 175 p3 = create_user('testuser3').person
176 p4 = create_user('testuser4').person 176 p4 = create_user('testuser4').person
177 -  
178 - Friendship.create!(:person => p1, :friend => p2, :group => 'group1')  
179 - Friendship.create!(:person => p1, :friend => p3, :group => 'group2')  
180 - Friendship.create!(:person => p1, :friend => p4, :group => 'group1') 177 +
  178 + p1.add_friend(p2, 'group1')
  179 + p1.add_friend(p3, 'group2')
  180 + p1.add_friend(p4, 'group1')
181 181
182 assert_equivalent ['group1', 'group2'], p1.friend_groups 182 assert_equivalent ['group1', 'group2'], p1.friend_groups
183 end 183 end