Commit 6fbde715443ba8a8058fa74ff90e94fe609a5baf
1 parent
753dceb0
Exists in
master
and in
28 other branches
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
Showing
3 changed files
with
12 additions
and
8 deletions
Show diff stats
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 < Profile | @@ -13,6 +13,10 @@ class Person < 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 < Test::Unit::TestCase | @@ -147,12 +147,12 @@ class PersonTest < 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 < Test::Unit::TestCase | @@ -174,10 +174,10 @@ class PersonTest < 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 |