Newer
Older
# licensed under the Affero General Public License version 3 or later. See
Daniel Vincent Grippi
a validé
describe PeopleController do
render_views
danielvincent
a validé
before do
@user = alice
@aspect = @user.aspects.first
sign_in :user, @user
end
describe '#similar_people' do
before do
@contacts = []
@aspect1 = @user.aspects.create(:name => "foos")
@aspect2 = @user.aspects.create(:name => "bars")
@contacts << Contact.create(:user => @user, :person => Factory.create(:person))
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
end
end
it 'returns people in mutual aspects' do
@contacts[0].aspects << @aspect1
@contacts[1].aspects << @aspect1
@contacts[0].save
@contacts[1].save
@controller.similar_people(@contacts[0]).should include(@contacts[1].person)
end
it 'does not return people in non-mutual aspects' do
@contacts[0].aspects << @aspect1
@contacts[1].aspects << @aspect1
@contacts[0].save
@contacts[1].save
@controller.similar_people(@contacts[0]).should_not include(@contacts[2].person)
end
it 'does not return the original contacts person' do
@contacts[0].aspects << @aspect1
@contacts[1].aspects << @aspect1
@contacts[0].save
@contacts[1].save
@controller.similar_people(@contacts[0]).should_not include(@contacts[0].person)
end
it 'returns at max 5 similar people' do
@contacts[0].aspects << @aspect1
@contacts[0].save
20.times do
c = Contact.create(:user => @user, :person => Factory.create(:person))
c.aspects << @aspect1
c.save
@contacts << c
end
@controller.similar_people(@contacts[0]).count.should == 5
end
end
describe '#share_with' do
before do
@person = Factory.create(:person)
end
it 'succeeds' do
get :share_with, :id => @person.id
response.should be_success
end
end
danielvincent
a validé
before do
:profile => Factory(:profile, :first_name => "Eugene",
:last_name => "w"))
:profile => Factory(:profile, :first_name => "Evan",
:last_name => "Korth"))
danielvincent
a validé
end
:profile => Factory(:profile, :first_name => "Eugene",
:last_name => "w"))
it 'shows a contact' do
zhitomirskiyi
a validé
get :index, :q => user2.person.profile.first_name.to_s
Raphael
a validé
it 'shows a non-contact' do
user2.person.profile.searchable = true
user2.save
zhitomirskiyi
a validé
get :index, :q => user2.person.profile.first_name.to_s
danielvincent
a validé
it "redirects to person page if there is exactly one match" do
get :index, :q => "Korth"
response.should redirect_to @korth
end
it "does not redirect if there are no matches" do
get :index, :q => "Korthsauce"
response.should_not be_redirect
end
Raphael
a validé
end
it 'goes to the current_user show page' do
get :show, :id => @user.person.id
response.should be_success
end
@user.post :status_message, :message => 'test more', :to => @aspect.id
get :show, :id => @user.person.id
response.should be_success
end
it 'renders with a post' do
message = @user.post :status_message, :message => 'test more', :to => @aspect.id
@user.comment 'I mean it', :on => message
get :show, :id => @user.person.id
it "redirects to #index if the id is invalid" do
get :show, :id => 'delicious'
response.should redirect_to people_path
end
it "redirects to #index if no person is found" do
get :show, :id => 3920397846
response.should redirect_to people_path
end
it "renders the show page of a contact" do
get :show, :id => user2.person.id
response.should be_success
end
it "renders the show page of a non-contact" do
get :show, :id => user2.person.id
response.should be_success
end
it "renders with public posts of a non-contact" do
status_message = user2.post(:status_message, :message => "hey there", :to => 'all', :public => true)
get :show, :id => user2.person.id
response.body.should include status_message.message
end
danielvincent
a validé
end
describe '#webfinger' do
it 'enqueues a webfinger job' do
Resque.should_receive(:enqueue).with(Jobs::SocketWebfinger, @user.id, @user.diaspora_handle, anything).once
get :retrieve_remote, :diaspora_handle => @user.diaspora_handle
danielvincent
a validé
describe '#update' do
put :update, :id => @user.person.id,
:profile => {
:image_url => "",
:first_name => "Will",
:last_name => "Smith"
}
flash[:notice].should_not be_empty
end
danielvincent
a validé
context 'with a profile photo set' do
@params = { :id => @user.person.id,
:profile =>
{:image_url => "",
:last_name => @user.person.profile.last_name,
:first_name => @user.person.profile.first_name }}
@user.person.profile.image_url = "http://tom.joindiaspora.com/images/user/tom.jpg"
@user.person.profile.save
end
it "doesn't overwrite the profile photo when an empty string is passed in" do
image_url = @user.person.profile.image_url
danielvincent
a validé
Person.find(@user.person.id).profile.image_url.should == image_url
danielvincent
a validé
end
end
it 'does not allow mass assignment' do
new_user = Factory.create(:user)
person.owner_id.should == @user.id
put :update, :id => @user.person.id, :owner_id => new_user.id
Person.find(person.id).owner_id.should == @user.id
it 'does not overwrite the profile diaspora handle' do
handle_params = {:id => @user.person.id,
:profile => {:diaspora_handle => 'abc@a.com'} }
Person.find(@user.person.id).profile[:diaspora_handle].should_not == 'abc@a.com'
Raphael
a validé
end