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 11 alias :friend= :target=
12 12  
13 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 16 end
17 17  
18 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 13 friendships.map {|item| item.group}.uniq
14 14 end
15 15  
  16 + def add_friend(friend, group = nil)
  17 + self.friendships.build(:friend => friend, :group => group).save!
  18 + end
  19 +
16 20 # has_many :person_friendships
17 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 147 p1 = create_user('testuser1').person
148 148 p2 = create_user('testuser2').person
149 149  
150   - Friendship.create!(:person => p1, :friend => p2)
  150 + p1.add_friend(p2)
151 151  
152 152 assert_equal [p2], p1.friends
153 153  
154 154 p3 = create_user('testuser3').person
155   - Friendship.create!(:person => p1, :friend => p3)
  155 + p1.add_friend(p3)
156 156  
157 157 assert_equal [p2,p3], p1.friends(true) # force reload
158 158  
... ... @@ -174,10 +174,10 @@ class PersonTest &lt; Test::Unit::TestCase
174 174 p2 = create_user('testuser2').person
175 175 p3 = create_user('testuser3').person
176 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 182 assert_equivalent ['group1', 'group2'], p1.friend_groups
183 183 end
... ...