Add a couple specs, refactor in connecting

This commit is contained in:
Raphael 2010-11-21 14:02:04 -05:00
parent 4ce2de55e2
commit 0daffb7fed
3 changed files with 40 additions and 15 deletions

View file

@ -59,16 +59,7 @@ module Diaspora
#response from a contact request you sent
if original_request = original_request(contact_request)
destination_aspect = self.aspect_by_id(original_request.into_id)
activate_contact(contact_request.from, destination_aspect)
Rails.logger.info("#{self.real_name}'s contact request has been accepted")
contact_request.destroy
pending_requests.delete(original_request)
original_request.destroy
self.save
Request.send_request_accepted(self, contact_request.from, destination_aspect)
receive_request_acceptance(contact_request, original_request)
#this is a new contact request
elsif !request_from_me?(contact_request)
@ -83,6 +74,18 @@ module Diaspora
contact_request
end
def receive_request_acceptance(received_request, sent_request)
destination_aspect = self.aspect_by_id(sent_request.into_id)
activate_contact(received_request.from, destination_aspect)
Rails.logger.info("#{self.real_name}'s contact request has been accepted")
received_request.destroy
pending_requests.delete(sent_request)
sent_request.destroy
self.save
Request.send_request_accepted(self, received_request.from, destination_aspect)
end
def disconnect(bad_contact)
Rails.logger.info("#{self.real_name} is disconnecting #{bad_contact.inspect}")
retraction = Retraction.for(self)

View file

@ -179,7 +179,6 @@ describe Aspect do
it 'deletes a user from the aspect' do
user.add_person_to_aspect(user2.person.id, aspect1.id)
user.reload
aspect1.reload.contacts.include?(contact).should be true
user.delete_person_from_aspect(user2.person.id, aspect1.id)
user.reload
aspect1.reload.contacts.include?(contact).should be false
@ -188,6 +187,15 @@ describe Aspect do
it 'should check to make sure you have the aspect ' do
proc{user.delete_person_from_aspect(user2.person.id, aspect2.id) }.should raise_error /Can not delete a person from an aspect you do not own/
end
it 'deletes no posts' do
user.add_person_to_aspect(user2.person.id, aspect1.id)
user.reload
user2.post(:status_message, :message => "Hey Dude", :to => aspect2.id)
lambda{
user.delete_person_from_aspect(user2.person.id, aspect1.id)
}.should_not change(Post, :count)
end
end
context 'moving and removing posts' do

View file

@ -36,13 +36,27 @@ describe Diaspora::UserModules::Connecting do
user.receive_contact_request(r)
user.reload.pending_requests.should include r
end
end
it 'should autoaccept a request the user sent' do
request = user.send_contact_request_to(user2.person, aspect)
user.contact_for(user2.person).should be_nil
user.receive_request(request.reverse_for(user2), user2.person)
describe '#receive_request_accepted' do
before do
@original_request = user.send_contact_request_to(user2.person, aspect)
@acceptance = @original_request.reverse_for(user2)
end
it 'connects to the acceptor' do
user.receive_request(@acceptance, user2.person)
user.contact_for(user2.person).should_not be_nil
end
it 'deletes the original request' do
user.receive_request(@acceptance, user2.person)
user.pending_requests.include?(@original_request).should be_false
Request.find(@original_request.id).should be_nil
end
it 'deletes the acceptance' do
user.receive_request(@acceptance, user2.person)
user.pending_requests.include?(@acceptance).should be_false
Request.find(@acceptance.id).should be_nil
end
end
context 'requests that cross paths' do