unfriended method in the user
This commit is contained in:
parent
26bebbe393
commit
5e33de7e56
4 changed files with 66 additions and 10 deletions
|
|
@ -15,7 +15,7 @@ class Person
|
|||
|
||||
|
||||
key :owner_id, ObjectId
|
||||
key :user_refs, Integer, :default => 0
|
||||
key :user_refs, Integer, :default => 0
|
||||
|
||||
belongs_to :owner, :class_name => 'User'
|
||||
one :profile, :class_name => 'Profile'
|
||||
|
|
@ -27,7 +27,7 @@ class Person
|
|||
timestamps!
|
||||
|
||||
before_validation :clean_url
|
||||
|
||||
before_create :check_for_owner
|
||||
validates_presence_of :email, :url, :profile, :serialized_key
|
||||
validates_format_of :url, :with =>
|
||||
/^(https?):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*(\.[a-z]{2,5})?(:[0-9]{1,5})?(\/.*)?$/ix
|
||||
|
|
@ -124,6 +124,9 @@ class Person
|
|||
|
||||
private
|
||||
|
||||
def check_for_owner
|
||||
self.user_refs += 1 unless self.owner_id.nil?
|
||||
end
|
||||
def remove_all_traces
|
||||
self.posts.delete_all
|
||||
end
|
||||
|
|
|
|||
|
|
@ -82,7 +82,6 @@ class User
|
|||
Rails.logger.debug("#{self.real_name}'s friend request has been accepted")
|
||||
friend_request.destroy
|
||||
else
|
||||
|
||||
friend_request.person.user_refs += 1
|
||||
friend_request.person.save
|
||||
pending_requests << friend_request
|
||||
|
|
@ -94,15 +93,25 @@ class User
|
|||
|
||||
def unfriend(friend_id)
|
||||
bad_friend = Person.first(:_id => friend_id)
|
||||
|
||||
self.friend_ids.delete( friend_id )
|
||||
self.save
|
||||
|
||||
if bad_friend
|
||||
Retraction.for(self).push_to_url(bad_friend.receive_url)
|
||||
bad_friend.update_attributes(:user_refs => bad_friend.user_refs - 1)
|
||||
bad_friend.user_refs -= 1
|
||||
|
||||
(bad_friend.user_refs > 0 || bad_friend.owner.nil? == false) ? bad_friend.save : bad_friend.destroy
|
||||
end
|
||||
self.save
|
||||
end
|
||||
|
||||
def unfriended_by friend_id
|
||||
bad_friend = Person.first(:_id => friend_id)
|
||||
|
||||
self.friend_ids.delete( friend_id )
|
||||
bad_friend.user_refs -= 1
|
||||
|
||||
(bad_friend.user_refs > 0 || bad_friend.owner.nil? == false) ? bad_friend.save : bad_friend.destroy
|
||||
self.save
|
||||
end
|
||||
|
||||
def send_request(rel_hash)
|
||||
|
|
|
|||
|
|
@ -15,4 +15,10 @@ describe ApplicationHelper do
|
|||
it "should provide a correct show path for a given user" do
|
||||
person_url(@user).should == "/users/#{@user.id}"
|
||||
end
|
||||
|
||||
it 'should be able to give me the terse url for webfinger' do
|
||||
@user.person.url = "http://example.com/"
|
||||
|
||||
terse_url( @user.person.url ).should == 'example.com'
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -53,11 +53,7 @@ describe User do
|
|||
@user.send_friend_request_to( friend.receive_url ).should be nil
|
||||
end
|
||||
|
||||
it 'should be able to give me the terse url for webfinger' do
|
||||
@user.person.url = "http://example.com/"
|
||||
|
||||
@user.terse_url.should == 'example.com'
|
||||
end
|
||||
|
||||
describe 'multiple users accepting/rejecting the same person' do
|
||||
before do
|
||||
|
|
@ -232,4 +228,46 @@ describe User do
|
|||
StatusMessage.all.size.should == 1
|
||||
end
|
||||
end
|
||||
|
||||
describe 'unfriending' do
|
||||
before do
|
||||
@user = Factory.create :user
|
||||
@user2 = Factory.create :user
|
||||
|
||||
@user.friends << @user2.person
|
||||
@user.person.user_refs += 1
|
||||
@user2.friends << @user.person
|
||||
|
||||
@user2.person.user_refs += 1
|
||||
|
||||
@user2.person.save
|
||||
@user.person.save
|
||||
end
|
||||
|
||||
it 'should unfriend the other user on the same seed' do
|
||||
person = @user2.person
|
||||
person.url = @user.person.url
|
||||
person.save
|
||||
|
||||
@user.friends.count.should == 1
|
||||
@user2.friends.count.should == 1
|
||||
|
||||
@user.person.user_refs.should == 2
|
||||
|
||||
@user2.person.user_refs.should == 2
|
||||
|
||||
@user2.unfriend @user.person.id
|
||||
@user2.friends.count.should be 0
|
||||
|
||||
@user.person.reload
|
||||
@user.person.user_refs.should == 1
|
||||
|
||||
@user.unfriended_by @user2.person.id
|
||||
|
||||
@user2.person.reload
|
||||
@user2.person.user_refs.should == 1
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue