Skip to content
Extraits de code Groupes Projets
Valider ac40f797 rédigé par ilya's avatar ilya
Parcourir les fichiers

RS, IZ; A variety of fixes and some refactoring on unfriending and activate friend

parent bd271b7b
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -15,7 +15,7 @@ class PeopleController < ApplicationController ...@@ -15,7 +15,7 @@ class PeopleController < ApplicationController
end end
def destroy def destroy
current_user.unfriend(params[:id]) current_user.unfriend(current_user.friends.first(params[:id]))
flash[:notice] = "unfriended person." flash[:notice] = "unfriended person."
redirect_to people_url redirect_to people_url
end end
......
...@@ -27,7 +27,6 @@ class Person ...@@ -27,7 +27,6 @@ class Person
timestamps! timestamps!
before_validation :clean_url before_validation :clean_url
before_create :check_for_owner
validates_presence_of :email, :url, :profile, :serialized_key validates_presence_of :email, :url, :profile, :serialized_key
validates_format_of :url, :with => validates_format_of :url, :with =>
/^(https?):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*(\.[a-z]{2,5})?(:[0-9]{1,5})?(\/.*)?$/ix /^(https?):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*(\.[a-z]{2,5})?(:[0-9]{1,5})?(\/.*)?$/ix
...@@ -124,9 +123,6 @@ class Person ...@@ -124,9 +123,6 @@ class Person
private private
def check_for_owner
self.user_refs += 1 unless self.owner_id.nil?
end
def remove_all_traces def remove_all_traces
self.posts.delete_all self.posts.delete_all
end end
......
...@@ -60,12 +60,7 @@ class User ...@@ -60,12 +60,7 @@ class User
request = Request.where(:id => friend_request_id).first request = Request.where(:id => friend_request_id).first
n = pending_requests.delete(request) n = pending_requests.delete(request)
friends << request.person activate_friend(request.person, groups.first(:id => group_id))
save
group = self.groups.first(:id => group_id)
group.people << request.person
group.save
request.reverse self request.reverse self
...@@ -102,26 +97,22 @@ class User ...@@ -102,26 +97,22 @@ class User
end end
end end
def unfriend(friend_id) def unfriend(bad_friend)
Rails.logger.info("#{self.real_name} is unfriending #{bad_friend.inspect}" Rails.logger.info("#{self.real_name} is unfriending #{bad_friend.inspect}")
bad_friend = Person.first(:_id => friend_id)
Retraction.for(self).push_to_url(bad_friend.receive_url) Retraction.for(self).push_to_url(bad_friend.receive_url)
remove_friend friend_id remove_friend(bad_friend)
end end
def remove_friend friend_id def remove_friend(bad_friend)
bad_friend = Person.first(:_id => friend_id) raise "Friend not deleted" unless self.friend_ids.delete( bad_friend.id )
self.friend_ids.delete( friend_id )
self.save self.save
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 (bad_friend.user_refs > 0 || bad_friend.owner.nil? == false) ? bad_friend.save : bad_friend.destroy
end end
def unfriended_by friend_id def unfriended_by(bad_friend)
Rails.logger.info("#{self.real_name} is being unfriended by #{bad_friend.inspect}" Rails.logger.info("#{self.real_name} is being unfriended by #{bad_friend.inspect}")
remove_friend friend_id remove_friend bad_friend
end end
def send_request(rel_hash, group) def send_request(rel_hash, group)
...@@ -133,8 +124,10 @@ class User ...@@ -133,8 +124,10 @@ class User
end end
def activate_friend(person, group) def activate_friend(person, group)
person.user_refs += 1
group.people << person group.people << person
friends << person friends << person
person.save
group.save group.save
save save
end end
...@@ -149,7 +142,7 @@ class User ...@@ -149,7 +142,7 @@ class User
Rails.logger.debug("Receiving object:\n#{object.inspect}") Rails.logger.debug("Receiving object:\n#{object.inspect}")
if object.is_a? Retraction if object.is_a? Retraction
(object.type == 'Person' )? (unfriended_by object.post_id) : (object.perform self.id) (object.type == 'Person' )? (unfriended_by friends.first(object.post_id)) : (object.perform self.id)
elsif object.is_a? Request elsif object.is_a? Request
person = Diaspora::Parser.get_or_create_person_object_from_xml( xml ) person = Diaspora::Parser.get_or_create_person_object_from_xml( xml )
person.serialized_key ||= object.exported_key person.serialized_key ||= object.exported_key
......
...@@ -2,7 +2,11 @@ require File.dirname(__FILE__) + '/../spec_helper' ...@@ -2,7 +2,11 @@ require File.dirname(__FILE__) + '/../spec_helper'
describe Person do describe Person do
before do before do
@user = Factory.create(:user)
@user2 = Factory.create(:user)
@person = Factory.create(:person) @person = Factory.create(:person)
@group = @user.group(:name => "Dudes")
@group2 = @user2.group(:name => "Abscence of Babes")
end end
...@@ -33,8 +37,6 @@ describe Person do ...@@ -33,8 +37,6 @@ describe Person do
end end
it 'should delete all of user except comments upon user deletion' do it 'should delete all of user except comments upon user deletion' do
Factory.create(:user)
f = Factory.create(:person) f = Factory.create(:person)
Factory.create(:status_message, :person => f) Factory.create(:status_message, :person => f)
...@@ -57,45 +59,39 @@ describe Person do ...@@ -57,45 +59,39 @@ describe Person do
describe "unfriending" do describe "unfriending" do
it 'should delete an orphaned friend' do it 'should delete an orphaned friend' do
user = Factory.create(:user)
user.save
request = @user.send_friend_request_to @person.receive_url, @group.id
user.friends << @person @user.activate_friend(@person, @group)
@person.user_refs += 1 @user.reload
@person.save
Person.all.count.should == 3
@user.friends.count.should == 1
@user.unfriend(@person)
@user.reload
@user.friends.count.should == 0
Person.all.count.should == 2 Person.all.count.should == 2
user.friends.count.should == 1
user.unfriend(@person.id)
user.friends.count.should == 0
Person.all.count.should == 1
end end
it 'should not delete an un-orphaned friend' do it 'should not delete an un-orphaned friend' do
user_one = Factory.create(:user) request = @user.send_friend_request_to @person.receive_url, @group.id
user_two = Factory.create(:user) request2 = @user2.send_friend_request_to @person.receive_url, @group2.id
user_one.save
user_two.save
@user.activate_friend(@person, @group)
@user2.activate_friend(@person, @group2)
user_one.friends << @person @user.reload
user_two.friends << @person @user2.reload
user_one.save
user_two.save
@person.user_refs += 2
@person.save
Person.all.count.should == 3 Person.all.count.should == 3
user_one.friends.count.should == 1 @user.friends.count.should == 1
user_two.friends.count.should == 1 @user2.friends.count.should == 1
user_one.unfriend(@person.id) @user.unfriend(@person)
@user.reload
user_one.friends.count.should == 0 @user2.reload
user_two.friends.count.should == 1 @user.friends.count.should == 0
@user2.friends.count.should == 1
Person.all.count.should == 3 Person.all.count.should == 3
end end
......
...@@ -235,43 +235,36 @@ describe User do ...@@ -235,43 +235,36 @@ describe User do
describe 'unfriending' do describe 'unfriending' do
before do before do
@user = Factory.create :user
@user2 = Factory.create :user @user2 = Factory.create :user
@group2 = @user2.group(:name => "Gross people")
@user.friends << @user2.person
@user.person.user_refs += 1 request = @user.send_friend_request_to( @user2.receive_url, @group.id)
@user2.friends << @user.person request.reverse @user2
@user2.activate_friend(@user.person, @group2)
@user2.person.user_refs += 1 @user.receive request.to_diaspora_xml
@user2.person.save
@user.person.save
end end
it 'should unfriend the other user on the same seed' do it 'should unfriend the other user on the same seed' do
person = @user2.person @user.reload
person.url = @user.person.url @user2.reload
person.save
@user.friends.count.should == 1 @user.friends.count.should == 1
@user2.friends.count.should == 1 @user2.friends.count.should == 1
@user.person.user_refs.should == 2 @user.person.user_refs.should == 1
@user2.person.user_refs.should == 2 @user2.person.user_refs.should == 1
@user2.unfriend @user.person.id @user2.unfriend @user.person
@user2.friends.count.should be 0 @user2.friends.count.should be 0
@user.person.reload @user.person.reload
@user.person.user_refs.should == 1 @user.person.user_refs.should == 0
@user.unfriended_by @user2.person.id @user.unfriended_by @user2.person
@user2.person.reload @user2.person.reload
@user2.person.user_refs.should == 1 @user2.person.user_refs.should == 0
end end
end end
end end
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter