DG IZ; user refs are incremented as well as decremented for Posts
This commit is contained in:
parent
74c70d9410
commit
1d92d11841
3 changed files with 87 additions and 21 deletions
|
|
@ -122,23 +122,15 @@ class User
|
|||
end
|
||||
|
||||
def remove_friend(bad_friend)
|
||||
puts "YEAHH!!"
|
||||
raise "Friend not deleted" unless self.friend_ids.delete( bad_friend.id )
|
||||
groups.each{|g| g.person_ids.delete( bad_friend.id )}
|
||||
self.save
|
||||
|
||||
puts self.posts.find_all_by_person_id( bad_friend.id ).inspect
|
||||
self.posts.find_all_by_person_id( bad_friend.id ).each{|post|
|
||||
puts "HEYYYYYYYY"
|
||||
|
||||
self.post_ids.delete( post.id )
|
||||
puts self.posts
|
||||
post.user_refs =- 1
|
||||
|
||||
puts "ASODIJ"
|
||||
post.user_refs -= 1
|
||||
(post.user_refs > 0 || post.person.owner.nil? == false) ? post.save : post.destroy
|
||||
}
|
||||
puts self.inspect
|
||||
self.save
|
||||
|
||||
bad_friend.user_refs -= 1
|
||||
|
|
@ -200,7 +192,10 @@ class User
|
|||
|
||||
elsif object.is_a?(Post) && object.verify_creator_signature == true
|
||||
Rails.logger.debug("Saving post: #{object}")
|
||||
|
||||
object.user_refs += 1
|
||||
object.save
|
||||
|
||||
self.posts << object
|
||||
self.save
|
||||
object.socket_to_uid(id) if (object.respond_to?(:socket_to_uid) && !self.owns?(object))
|
||||
|
|
|
|||
|
|
@ -20,7 +20,15 @@ module Diaspora
|
|||
return unless body = doc.xpath("/XML/post").children.first
|
||||
|
||||
begin
|
||||
body.name.camelize.constantize.from_xml body.to_s
|
||||
new_object = body.name.camelize.constantize.from_xml body.to_s
|
||||
|
||||
if new_object.is_a? Post
|
||||
existing_object = new_object.class.find_by_id(new_object.id)
|
||||
existing_object ? (return existing_object) : (return new_object)
|
||||
end
|
||||
|
||||
new_object
|
||||
|
||||
rescue NameError => e
|
||||
if e.message.include? 'wrong constant name'
|
||||
Rails.logger.info "Not a real type: #{object.to_s}"
|
||||
|
|
|
|||
|
|
@ -275,33 +275,96 @@ describe User do
|
|||
describe 'post refs' do
|
||||
before do
|
||||
@user2 = Factory.create(:user)
|
||||
@user.activate_friend( @user2.person, @group)
|
||||
|
||||
@user3 = Factory.create(:user)
|
||||
@group3 = @user3.group(:name => 'heroes')
|
||||
|
||||
|
||||
@user.posts.count.should == 0
|
||||
end
|
||||
|
||||
it 'should be removed on unfriending' do
|
||||
@user.activate_friend( @user2.person, @group)
|
||||
|
||||
@user.posts.count.should == 0
|
||||
|
||||
status_message = @user2.post :status_message, :message => "hi"
|
||||
@user.receive status_message.to_diaspora_xml
|
||||
|
||||
|
||||
@user.posts.count.should == 1
|
||||
|
||||
@user.reload
|
||||
|
||||
@user.posts.count.should == 1
|
||||
|
||||
@user.unfriend(@user2.person)
|
||||
|
||||
puts @user.inspect
|
||||
@user.reload
|
||||
puts @user.inspect
|
||||
@user.posts.count.should == 0
|
||||
|
||||
puts Post.all.inspect
|
||||
Post.count.should be 1
|
||||
end
|
||||
|
||||
it 'should be remove a post if the noone links to it' do
|
||||
status_message = @user2.post :status_message, :message => "hi"
|
||||
@user.receive status_message.to_diaspora_xml
|
||||
@user.reload
|
||||
|
||||
@user.posts.count.should == 1
|
||||
|
||||
person = @user2.person
|
||||
@user2.destroy
|
||||
@user.unfriend(person)
|
||||
|
||||
@user.reload
|
||||
@user.posts.count.should == 0
|
||||
|
||||
Post.count.should be 0
|
||||
end
|
||||
|
||||
it 'should keep track of user references for one person ' do
|
||||
status_message = @user2.post :status_message, :message => "hi"
|
||||
@user.receive status_message.to_diaspora_xml
|
||||
@user.reload
|
||||
|
||||
@user.posts.count.should == 1
|
||||
|
||||
status_message.reload
|
||||
status_message.user_refs.should == 1
|
||||
|
||||
@user.unfriend(@user2.person)
|
||||
status_message.reload
|
||||
|
||||
@user.reload
|
||||
@user.posts.count.should == 0
|
||||
|
||||
status_message.reload
|
||||
status_message.user_refs.should == 0
|
||||
|
||||
Post.count.should be 1
|
||||
end
|
||||
|
||||
it 'should not override userrefs on receive by another person' do
|
||||
@user3 = Factory.create :user
|
||||
@user3.activate_friend(@user2, @group3)
|
||||
|
||||
status_message = @user2.post :status_message, :message => "hi"
|
||||
@user.receive status_message.to_diaspora_xml
|
||||
@user3.receive status_message.to_diaspora_xml
|
||||
@user.reload
|
||||
@user3.reload
|
||||
|
||||
@user.posts.count.should == 1
|
||||
|
||||
status_message.reload
|
||||
status_message.user_refs.should == 2
|
||||
|
||||
@user.unfriend(@user2.person)
|
||||
status_message.reload
|
||||
|
||||
@user.reload
|
||||
@user.posts.count.should == 0
|
||||
|
||||
status_message.reload
|
||||
status_message.user_refs.should == 1
|
||||
|
||||
Post.count.should be 1
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue