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é
let(:user) { Factory(:user) }
danielvincent
a validé
let!(:aspect) { user.aspects.create(:name => "lame-os") }
danielvincent
a validé
before do
sign_in :user, user
end
17
18
19
20
21
22
23
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
describe '#hashes_from_people' do
before do
@everyone = []
10.times do
@everyone << Factory.create(:person)
end
user.send_contact_request_to(@everyone[3], aspect)
user.send_contact_request_to(@everyone[2], aspect)
user.activate_contact(@everyone[4], aspect)
user.activate_contact(@everyone[5], aspect)
@people = Person.search('eugene')
@people.length.should == 10
@hashes = @controller.hashes_for_people(@people, user.aspects)
end
it 'has the correct result for no relationship' do
hash = @hashes.first
hash[:person].should == @people.first
hash[:contact].should be_false
hash[:request].should be_false
hash[:aspects].should == user.aspects
end
it 'has the correct result for a connected person' do
hash = @hashes[4]
hash[:person].should == @people[4]
hash[:contact].should be_true
hash[:request].should be_false
hash[:aspects].should == user.aspects
end
it 'has the correct result for a requested person' do
hash = @hashes[2]
hash[:person].should == @people[2]
hash[:contact].should be_false
hash[:request].should be_true
hash[:aspects].should == user.aspects
end
end
danielvincent
a validé
before do
@eugene = Factory.create(:person, :profile => {:first_name => "Eugene", :last_name => "w"})
@korth = Factory.create(:person, :profile => {:first_name => "Evan", :last_name => "Korth"})
end
it "assigns hashes" do
eugene2 = Factory.create(:person, :profile => {:first_name => "Eugene", :last_name => "w"})
get :index, :q => "Eu"
people = assigns[:hashes].map{|h| h[:person]}
people.should include @eugene
people.should include eugene2
end
it "assigns people" do
eugene2 = Factory.create(:person, :profile => {:first_name => "Eugene", :last_name => "w"})
get :index, :q => "Eu"
assigns[:people].should == [@eugene, eugene2]
it 'shows a contact' do
connect_users(user, aspect, user2, user2.aspects.create(:name => 'Neuroscience'))
zhitomirskiyi
a validé
get :index, :q => user2.person.profile.first_name.to_s
Raphael
a validé
it 'shows a non-contact' do
user2 = make_user
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
describe '#show' do
it 'should go to the current_user show page' do
get :show, :id => user.person.id
response.should be_success
end
it 'renders with a post' do
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
response.should be_success
end
it "redirects on an invalid id" do
get :show, :id => 'delicious'
response.should redirect_to people_path
end
it "redirects on a nonexistent person" do
get :show, :id => user.id
response.should redirect_to people_path
end
it "renders the show page of a contact" do
connect_users(user, aspect, user2, user2.aspects.create(:name => 'Neuroscience'))
get :show, :id => user2.person.id
response.should be_success
end
it "renders the show page of a non-contact" do
user2 = make_user
get :show, :id => user2.person.id
response.should be_success
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
end
end
danielvincent
a validé
describe '#update' do
it "sets the flash" do
put :update, "id" => user.person.id.to_s, "person" => {
"profile" => {
"image_url" => "",
"last_name" => "Smith",
"first_name" => "Will"
}
}
flash[:notice].should_not be_empty
end
danielvincent
a validé
context 'with a profile photo set' do
before do
@params = { :profile =>
{ :image_url => "",
:last_name => user.person.profile.last_name,
:first_name => user.person.profile.first_name }}
danielvincent
a validé
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
danielvincent
a validé
image_url = user.person.profile.image_url
put :update, :id => user.person.id.to_s, :person => @params
danielvincent
a validé
user.person.reload
danielvincent
a validé
user.person.profile.image_url.should == image_url
end
it 'updates a profile photo url' do
fixture_name = File.dirname(__FILE__) + '/../fixtures/button.png'
photo = user.post(:photo, :user_file => File.open(fixture_name), :to => aspect.id)
@params[:profile][:image_url] = photo.url(:thumb_medium)
put :update, :id => user.person.id, :person => @params
goal_pod_url = (APP_CONFIG[:pod_url][-1,1] == '/' ? APP_CONFIG[:pod_url].chop : APP_CONFIG[:pod_url])
user.person.reload.profile.image_url.should ==
"#{goal_pod_url}#{photo.url(:thumb_medium)}"
end
danielvincent
a validé
end
it 'does not allow mass assignment' do
new_user = make_user
put :update, :id => user.person.id, :person => {
:owner_id => new_user.id}
user.person.reload.owner_id.should_not == new_user.id
end
it 'does not overwrite the profile diaspora handle' do
handle_params = {'profile' => {'diaspora_handle' => 'abc@a.com'}}
put :update, :id => user.person.id, :person => handle_params
user.person.reload.profile[:diaspora_handle].should_not == 'abc@a.com'
end
Raphael
a validé
end