Newer
Older
# licensed under the Affero General Public License version 3 or later. See
Daniel Vincent Grippi
a validé
@aspect = @user.aspects.create(:name => "lame-os")
@aspect1 = @user.aspects.create(:name => "another aspect")
@aspect2 = @user2.aspects.create(:name => "party people")
connect_users(@user, @aspect, @user2, @aspect2)
@contact = @user.contact_for(@user2.person)
request.env["HTTP_REFERER"] = 'http://' + request.host
it "assigns @contacts to all the user's contacts" do
rescue Exception => e
raise e.original_exception
end
assigns[:contacts].should == @user.contacts
context 'performance' do
before do
require 'benchmark'
@posts = []
@users = []
8.times do |n|
user = make_user
@users << user
aspect = user.aspects.create(:name => 'people')
connect_users(@user, @aspect, user, aspect)
post = @user.post(:status_message, :message => "hello#{n}", :to => @aspect1.id)
@posts << post
user.comment "yo#{post.message}", :on => post
end
end
it 'takes time' do
Benchmark.realtime{
get :index
maxwell
a validé
describe "#show" do
it "succeeds" do
get :show, 'id' => @aspect.id.to_s
response.should be_success
end
it "assigns aspect, aspect_contacts, and posts" do
get :show, 'id' => @aspect.id.to_s
assigns(:aspect).should == @aspect
assigns(:aspect_contacts).should == @aspect.contacts
assigns(:posts).should == []
end
it "paginates" do
16.times { |i| @user2.post(:status_message, :to => @aspect2.id, :message => "hi #{i}") }
get :show, 'id' => @aspect.id.to_s
assigns(:posts).count.should == 15
get :show, 'id' => @aspect.id.to_s, 'page' => '2'
assigns(:posts).count.should == 1
end
end
describe "#create" do
describe "with valid params" do
it "creates an aspect" do
post :create, "aspect" => {"name" => "new aspect"}
end
it "redirects to the aspect page" do
post :create, "aspect" => {"name" => "new aspect"}
response.should redirect_to(aspect_path(Aspect.find_by_name("new aspect")))
end
end
describe "with invalid params" do
it "does not create an aspect" do
post :create, "aspect" => {"name" => ""}
it "goes back to the page you came from" do
post :create, "aspect" => {"name" => ""}
response.should redirect_to(:back)
describe "#manage" do
it "succeeds" do
get :manage
response.should be_success
end
it "assigns aspect to manage" do
get :manage
assigns(:aspect).should == :manage
end
it "assigns remote_requests" do
get :manage
assigns(:remote_requests).should be_empty
end
context "when the user has pending requests" do
before do
requestor = make_user
requestor_aspect = requestor.aspects.create(:name => "Meh")
requestor.send_contact_request_to(@user.person, requestor_aspect)
requestor.reload
requestor_aspect.reload
@user.reload
end
it "succeeds" do
get :manage
response.should be_success
end
it "assigns aspect to manage" do
get :manage
assigns(:aspect).should == :manage
end
it "assigns remote_requests" do
get :manage
assigns(:remote_requests).count.should == 1
end
end
end
describe "#move_contact" do
let(:opts) { {:person_id => "person_id", :from => "from_aspect_id", :to => {:to => "to_aspect_id"}} }
it 'calls the move_contact_method' do
pending "need to figure out what is the deal with remote requests"
@controller.stub!(:current_user).and_return(@user)
@user.should_receive(:move_contact).with(:person_id => "person_id", :from => "from_aspect_id", :to => "to_aspect_id")
post :move_contact, opts
describe "#update" do
before do
danielvincent
a validé
@aspect = @user.aspects.create(:name => "Bruisers")
end
it "doesn't overwrite random attributes" do
new_user = Factory.create :user
params = {"name" => "Bruisers"}
params[:user_id] = new_user.id
put('update', :id => @aspect.id, "aspect" => params)
Aspect.find(@aspect.id).user_id.should == @user.id
end
end
describe "#add_to_aspect" do
it 'adds the users to the aspect' do
@aspect1.reload
@aspect1.contacts.include?(@contact).should be_false
post 'add_to_aspect', {:person_id => @user2.person.id, :aspect_id => @aspect1.id}
@aspect1.contacts.include?(@contact).should be_true
end
describe "#remove_from_aspect" do
it 'removes contacts from an aspect' do
pending 'this needs to test with another aspect present'
@aspect.reload
danielvincent
a validé
@aspect.contacts.include?(@contact).should be true
post 'remove_from_aspect', {:person_id => @user2.person.id, :aspect_id => @aspect1.id}
@aspect1.reload
danielvincent
a validé
@aspect1.contacts.include?(@contact).should be false
end