Skip to content
Extraits de code Groupes Projets
Valider 03f90a99 rédigé par Sarah Mei's avatar Sarah Mei
Parcourir les fichiers

refactor aspects controller spec

parent 1d6a69ea
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -9,18 +9,14 @@ describe AspectsController do
render_views
before do
@user = alice
@user2 = bob
@alice = alice
@alice.getting_started = false
@alice.save
sign_in :user, @alice
@alices_aspect_1 = @alice.aspects.first
@alices_aspect_2 = @alice.aspects.create(:name => "another aspect")
@aspect0 = @user.aspects.first
@aspect1 = @user.aspects.create(:name => "another aspect")
@aspect2 = @user2.aspects.first
@contact = @user.contact_for(@user2.person)
@user.getting_started = false
@user.save
sign_in :user, @user
@controller.stub(:current_user).and_return(@user)
@controller.stub(:current_user).and_return(@alice)
request.env["HTTP_REFERER"] = 'http://' + request.host
end
......@@ -47,7 +43,7 @@ describe AspectsController do
describe "custom logging on redirect" do
before do
@action = :show
@action_params = {'id' => @aspect0.id.to_s}
@action_params = {'id' => @alices_aspect_1.id.to_s}
end
it_should_behave_like "it overrides the logs on redirect"
end
......@@ -62,79 +58,74 @@ describe AspectsController do
save_fixture(html_for("body"), "aspects_index_prefill")
end
it 'generates a jasmine fixture with services' do
@user.services << Services::Facebook.create(:user_id => @user.id)
@user.services << Services::Twitter.create(:user_id => @user.id)
@alice.services << Services::Facebook.create(:user_id => @alice.id)
@alice.services << Services::Twitter.create(:user_id => @alice.id)
get :index, :prefill => "reshare things"
save_fixture(html_for("body"), "aspects_index_services")
end
it 'generates a jasmine fixture with posts' do
@user.post(:status_message, :message => "hello", :to => @aspect1.id)
@alice.post(:status_message, :message => "hello", :to => @alices_aspect_2.id)
get :index
save_fixture(html_for("body"), "aspects_index_with_posts")
end
context 'filtering' do
before do
@posts = []
@users = []
4.times do |n|
2.times do |n|
user = Factory(:user)
@users << user
aspect = user.aspects.create(:name => 'people')
connect_users(@user, @aspect0, user, aspect)
post = @user.post(:status_message, :message => "hello#{n}", :to => eval("@aspect#{(n%2)}.id"))
post.created_at = Time.now - (4 - n).seconds
connect_users(@alice, @alices_aspect_1, user, aspect)
target_aspect = n.even? ? @alices_aspect_1 : @alices_aspect_2
post = @alice.post(:status_message, :message => "hello#{n}", :to => target_aspect)
post.created_at = Time.now - (2 - n).seconds
post.save!
@posts << post
end
@user.build_comment('lalala', :on => @posts.first ).save
@alice.build_comment('lalala', :on => @posts.first ).save
end
it "returns all posts" do
@user.aspects.reload
it "returns all posts by default" do
@alice.aspects.reload
get :index
assigns(:posts).length.should == 4
end
it "returns posts filtered by a single aspect" do
get :index, :a_ids => [@aspect1.id.to_s]
assigns(:posts).length.should == 2
end
it "returns posts from filtered aspects" do
get :index, :a_ids => [@aspect0.id.to_s, @aspect1.id.to_s]
assigns(:posts).length.should == 4
it "returns posts from a single aspect" do
get :index, :a_ids => [@alices_aspect_2.id.to_s]
assigns(:posts).length.should == 1
end
it 'returns posts by updated at by default' do
get :index, :a_ids => [@aspect0.id.to_s, @aspect1.id.to_s]
assigns(:posts).should =~ @posts
assigns(:posts).should_not == @posts.reverse
it "returns posts from multiple aspects" do
get :index, :a_ids => [@alices_aspect_1.id.to_s, @alices_aspect_2.id.to_s]
assigns(:posts).length.should == 2
end
it 'return posts by created at if passed sort_order=created_at' do
get :index, :a_ids => [@aspect0.id.to_s, @aspect1.id.to_s], :sort_order => 'created_at'
assigns(:posts).should == @posts.reverse
describe "ordering" do
it "orders posts by updated_at by default" do
get :index
assigns(:posts).should == @posts
end
it "orders posts by created_at on request" do
get :index, :sort_order => 'created_at'
assigns(:posts).should == @posts.reverse
end
end
end
context 'performance', :performance => true do
before do
require 'benchmark'
@posts = []
@users = []
8.times do |n|
user = Factory.create(:user)
@users << user
aspect = user.aspects.create(:name => 'people')
connect_users(@user, @aspect0, user, aspect)
post = @user.post(:status_message, :message => "hello#{n}", :to => @aspect1.id)
@posts << post
connect_users(@alice, @alices_aspect_1, user, aspect)
post = @alice.post(:status_message, :message => "hello#{n}", :to => @alices_aspect_2.id)
8.times do |n|
user.comment "yo#{post.message}", :on => post
end
end
end
it 'takes time' do
Benchmark.realtime{
get :index
......@@ -145,7 +136,7 @@ describe AspectsController do
describe "#show" do
it "succeeds" do
get :show, 'id' => @aspect0.id.to_s
get :show, 'id' => @alices_aspect_1.id.to_s
response.should be_redirect
end
it 'redirects on an invalid id' do
......@@ -157,9 +148,9 @@ describe AspectsController do
describe "#create" do
context "with valid params" do
it "creates an aspect" do
@user.aspects.count.should == 2
@alice.aspects.count.should == 2
post :create, "aspect" => {"name" => "new aspect"}
@user.reload.aspects.count.should == 3
@alice.reload.aspects.count.should == 3
end
it "redirects to the aspect page" do
post :create, "aspect" => {"name" => "new aspect"}
......@@ -168,9 +159,9 @@ describe AspectsController do
end
context "with invalid params" do
it "does not create an aspect" do
@user.aspects.count.should == 2
@alice.aspects.count.should == 2
post :create, "aspect" => {"name" => ""}
@user.reload.aspects.count.should == 2
@alice.reload.aspects.count.should == 2
end
it "goes back to the page you came from" do
post :create, "aspect" => {"name" => ""}
......@@ -187,10 +178,10 @@ describe AspectsController do
it "performs reasonably", :performance => true do
require 'benchmark'
8.times do |n|
aspect = @user.aspects.create(:name => "aspect#{n}")
aspect = @alice.aspects.create(:name => "aspect#{n}")
8.times do |o|
person = Factory(:person)
@user.activate_contact(person, aspect)
@alice.activate_contact(person, aspect)
end
end
Benchmark.realtime{
......@@ -206,24 +197,25 @@ describe AspectsController do
assigns(:remote_requests).should be_empty
end
it "assigns contacts to only non-pending" do
Contact.unscoped.where(:user_id => @user.id).count.should == 1
@user.send_contact_request_to(Factory(:user).person, @aspect0)
Contact.unscoped.where(:user_id => @user.id).count.should == 2
contact = @alice.contact_for(bob.person)
Contact.unscoped.where(:user_id => @alice.id).count.should == 1
@alice.send_contact_request_to(Factory(:user).person, @alices_aspect_1)
Contact.unscoped.where(:user_id => @alice.id).count.should == 2
get :manage
contacts = assigns(:contacts)
contacts.count.should == 1
contacts.first.should == @contact
contacts.first.should == contact
end
context "when the user has pending requests" do
before do
requestor = Factory.create(:user)
requestor_aspect = requestor.aspects.create(:name => "Meh")
requestor.send_contact_request_to(@user.person, requestor_aspect)
requestor.send_contact_request_to(@alice.person, requestor_aspect)
requestor.reload
requestor_aspect.reload
@user.reload
@alice.reload
end
it "succeeds" do
get :manage
......@@ -249,61 +241,53 @@ describe AspectsController do
@person = Factory.create(:person)
@opts = {
:person_id => @person.id,
:from => @aspect0.id,
:from => @alices_aspect_1.id,
:to =>
{:to => @aspect1.id}
{:to => @alices_aspect_2.id}
}
end
it 'calls the move_contact_method' do
@controller.stub!(:current_user).and_return(@user)
@user.should_receive(:move_contact)
@controller.stub!(:current_user).and_return(@alice)
@alice.should_receive(:move_contact)
post "move_contact", @opts
end
end
describe "#update" do
before do
@aspect0 = @user.aspects.create(:name => "Bruisers")
@alices_aspect_1 = @alice.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 => @aspect0.id, "aspect" => params)
Aspect.find(@aspect0.id).user_id.should == @user.id
put('update', :id => @alices_aspect_1.id, "aspect" => params)
Aspect.find(@alices_aspect_1.id).user_id.should == @alice.id
end
end
describe '#edit' do
it 'renders' do
get :edit, :id => @aspect0.id
get :edit, :id => @alices_aspect_1.id
response.should be_success
end
end
describe "#hashes_for_posts" do
it 'returns only distinct people' do
pending
end
end
describe "#toggle_contact_visibility" do
it 'sets contacts visible' do
@aspect0.contacts_visible = false
@aspect0.save
@alices_aspect_1.contacts_visible = false
@alices_aspect_1.save
get :toggle_contact_visibility, :format => 'js', :aspect_id => @aspect0.id
@aspect0.reload.contacts_visible.should be_true
get :toggle_contact_visibility, :format => 'js', :aspect_id => @alices_aspect_1.id
@alices_aspect_1.reload.contacts_visible.should be_true
end
it 'sets contacts hidden' do
@aspect0.contacts_visible = true
@aspect0.save
@alices_aspect_1.contacts_visible = true
@alices_aspect_1.save
get :toggle_contact_visibility, :format => 'js', :aspect_id => @aspect0.id
@aspect0.reload.contacts_visible.should be_false
get :toggle_contact_visibility, :format => 'js', :aspect_id => @alices_aspect_1.id
@alices_aspect_1.reload.contacts_visible.should be_false
end
end
end
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter