unfriended method in the user

This commit is contained in:
ilya 2010-08-13 09:47:08 -07:00
parent 26bebbe393
commit 5e33de7e56
4 changed files with 66 additions and 10 deletions

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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