Commit e4b31d74a5832de06e020a5ef220ae9a0252ded8
1 parent
5955193e
Exists in
master
and in
21 other branches
friendship: make it possible to be friend again
Showing
4 changed files
with
7 additions
and
5 deletions
Show diff stats
app/models/add_friend.rb
| @@ -4,7 +4,7 @@ class AddFriend < Task | @@ -4,7 +4,7 @@ class AddFriend < Task | ||
| 4 | 4 | ||
| 5 | validates_presence_of :requestor_id, :target_id | 5 | validates_presence_of :requestor_id, :target_id |
| 6 | 6 | ||
| 7 | - validates_uniqueness_of :target_id, :scope => [ :requestor_id ] | 7 | + validates_uniqueness_of :target_id, scope: [ :requestor_id, :status ], if: proc{ |t| t.status == Task::Status::ACTIVE } |
| 8 | 8 | ||
| 9 | validates_length_of :group_for_person, :group_for_friend, :maximum => 150, :allow_nil => true | 9 | validates_length_of :group_for_person, :group_for_friend, :maximum => 150, :allow_nil => true |
| 10 | 10 |
app/models/person.rb
| @@ -150,7 +150,7 @@ roles] } | @@ -150,7 +150,7 @@ roles] } | ||
| 150 | end | 150 | end |
| 151 | 151 | ||
| 152 | def already_request_friendship?(person) | 152 | def already_request_friendship?(person) |
| 153 | - person.tasks.find_by_requestor_id(self.id, :conditions => { :type => 'AddFriend' }) | 153 | + person.tasks.where(requestor_id: self.id, type: 'AddFriend', status: Task::Status::ACTIVE).first |
| 154 | end | 154 | end |
| 155 | 155 | ||
| 156 | def remove_friend(friend) | 156 | def remove_friend(friend) |
test/unit/add_friend_test.rb
| @@ -77,9 +77,9 @@ class AddFriendTest < ActiveSupport::TestCase | @@ -77,9 +77,9 @@ class AddFriendTest < ActiveSupport::TestCase | ||
| 77 | end | 77 | end |
| 78 | 78 | ||
| 79 | should 'not add friend twice' do | 79 | should 'not add friend twice' do |
| 80 | - fast_create(AddFriend, :requestor_id => person1.id, :target_id => person2.id) | 80 | + create AddFriend, person: person1, friend: person2, status: 1 |
| 81 | assert_raise ActiveRecord::RecordInvalid do | 81 | assert_raise ActiveRecord::RecordInvalid do |
| 82 | - AddFriend.create!(:person => person1, :friend => person2) | 82 | + create AddFriend, person: person1, friend: person2, status: 1 |
| 83 | end | 83 | end |
| 84 | end | 84 | end |
| 85 | 85 |
test/unit/person_test.rb
| @@ -324,7 +324,9 @@ class PersonTest < ActiveSupport::TestCase | @@ -324,7 +324,9 @@ class PersonTest < ActiveSupport::TestCase | ||
| 324 | should 'already request friendship' do | 324 | should 'already request friendship' do |
| 325 | p1 = create_user('testuser1').person | 325 | p1 = create_user('testuser1').person |
| 326 | p2 = create_user('testuser2').person | 326 | p2 = create_user('testuser2').person |
| 327 | - create(AddFriend, :person => p1, :friend => p2) | 327 | + create(AddFriend, person: p1, friend: p2).finish |
| 328 | + assert !p1.already_request_friendship?(p2) | ||
| 329 | + create(AddFriend, person: p1, friend: p2) | ||
| 328 | assert p1.already_request_friendship?(p2) | 330 | assert p1.already_request_friendship?(p2) |
| 329 | end | 331 | end |
| 330 | 332 |