From e4b31d74a5832de06e020a5ef220ae9a0252ded8 Mon Sep 17 00:00:00 2001 From: Braulio Bhavamitra Date: Mon, 16 Mar 2015 21:13:44 -0300 Subject: [PATCH] friendship: make it possible to be friend again --- app/models/add_friend.rb | 2 +- app/models/person.rb | 2 +- test/unit/add_friend_test.rb | 4 ++-- test/unit/person_test.rb | 4 +++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/models/add_friend.rb b/app/models/add_friend.rb index df18fca..8047e71 100644 --- a/app/models/add_friend.rb +++ b/app/models/add_friend.rb @@ -4,7 +4,7 @@ class AddFriend < Task validates_presence_of :requestor_id, :target_id - validates_uniqueness_of :target_id, :scope => [ :requestor_id ] + validates_uniqueness_of :target_id, scope: [ :requestor_id, :status ], if: proc{ |t| t.status == Task::Status::ACTIVE } validates_length_of :group_for_person, :group_for_friend, :maximum => 150, :allow_nil => true diff --git a/app/models/person.rb b/app/models/person.rb index 0c88cb1..9973c1e 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -150,7 +150,7 @@ roles] } end def already_request_friendship?(person) - person.tasks.find_by_requestor_id(self.id, :conditions => { :type => 'AddFriend' }) + person.tasks.where(requestor_id: self.id, type: 'AddFriend', status: Task::Status::ACTIVE).first end def remove_friend(friend) diff --git a/test/unit/add_friend_test.rb b/test/unit/add_friend_test.rb index 04c03fd..508b7e5 100644 --- a/test/unit/add_friend_test.rb +++ b/test/unit/add_friend_test.rb @@ -77,9 +77,9 @@ class AddFriendTest < ActiveSupport::TestCase end should 'not add friend twice' do - fast_create(AddFriend, :requestor_id => person1.id, :target_id => person2.id) + create AddFriend, person: person1, friend: person2, status: 1 assert_raise ActiveRecord::RecordInvalid do - AddFriend.create!(:person => person1, :friend => person2) + create AddFriend, person: person1, friend: person2, status: 1 end end diff --git a/test/unit/person_test.rb b/test/unit/person_test.rb index c2cdede..7a13921 100644 --- a/test/unit/person_test.rb +++ b/test/unit/person_test.rb @@ -324,7 +324,9 @@ class PersonTest < ActiveSupport::TestCase should 'already request friendship' do p1 = create_user('testuser1').person p2 = create_user('testuser2').person - create(AddFriend, :person => p1, :friend => p2) + create(AddFriend, person: p1, friend: p2).finish + assert !p1.already_request_friendship?(p2) + create(AddFriend, person: p1, friend: p2) assert p1.already_request_friendship?(p2) end -- libgit2 0.21.2