From 3387c20b5f4657f4d08e1429f1feb4734590f749 Mon Sep 17 00:00:00 2001 From: Raphael Sofaer <raphael@joindiaspora.com> Date: Wed, 30 Mar 2011 17:17:16 -0700 Subject: [PATCH] Fix redirect away from conversation --- app/controllers/conversations_controller.rb | 17 +++++++----- .../conversations_controller_spec.rb | 26 +++++++++---------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/app/controllers/conversations_controller.rb b/app/controllers/conversations_controller.rb index cd0a01202b..b19efa588a 100644 --- a/app/controllers/conversations_controller.rb +++ b/app/controllers/conversations_controller.rb @@ -42,14 +42,17 @@ class ConversationsController < ApplicationController end def show - @conversation = Conversation.joins(:conversation_visibilities).where(:id => params[:id], - :conversation_visibilities => {:person_id => current_user.person.id}).first - if @visibility = ConversationVisibility.where(:conversation_id => params[:id], :person_id => current_user.person.id).first - @visibility.unread = 0 - @visibility.save - end + if @conversation = Conversation.joins(:conversation_visibilities).where(:id => params[:id], + :conversation_visibilities => {:person_id => current_user.person.id}).first + if @visibility = ConversationVisibility.where(:conversation_id => params[:id], :person_id => current_user.person.id).first + @visibility.unread = 0 + @visibility.save + end - respond_with @conversation + respond_with @conversation + else + redirect_to conversations_path + end end def new diff --git a/spec/controllers/conversations_controller_spec.rb b/spec/controllers/conversations_controller_spec.rb index 77216148a2..98f706f2d4 100644 --- a/spec/controllers/conversations_controller_spec.rb +++ b/spec/controllers/conversations_controller_spec.rb @@ -4,8 +4,7 @@ describe ConversationsController do render_views before do - @alice = alice - sign_in :user, @alice + sign_in :user, alice end describe '#new' do @@ -16,11 +15,11 @@ describe ConversationsController do response.should be_success end it "assigns a list of the user's contacts" do - assigns(:all_contacts_and_ids).should == @alice.contacts.collect{|c| {"value" => c.id, "name" => c.person.name}} + assigns(:all_contacts_and_ids).should == alice.contacts.collect{|c| {"value" => c.id, "name" => c.person.name}} end it "assigns a contact if passed a contact id" do - get :new, :contact_id => @alice.contacts.first.id - assigns(:contact).should == @alice.contacts.first + get :new, :contact_id => alice.contacts.first.id + assigns(:contact).should == alice.contacts.first end end @@ -31,7 +30,7 @@ describe ConversationsController do end it 'retrieves all conversations for a user' do - hash = {:author => @alice.person, :participant_ids => [@alice.contacts.first.person.id, @alice.person.id], + hash = {:author => alice.person, :participant_ids => [alice.contacts.first.person.id, alice.person.id], :subject => 'not spam', :text => 'cool stuff'} 3.times { Conversation.create(hash) } @@ -46,7 +45,7 @@ describe ConversationsController do :conversation => { :subject => "secret stuff", :text => 'text'}, - :contact_ids => [@alice.contacts.first.id] + :contact_ids => [alice.contacts.first.id] } end @@ -65,15 +64,15 @@ describe ConversationsController do it 'sets the author to the current_user' do @hash[:author] = Factory.create(:user) post :create, @hash - Message.first.author.should == @alice.person - Conversation.first.author.should == @alice.person + Message.first.author.should == alice.person + Conversation.first.author.should == alice.person end it 'dispatches the conversation' do cnv = Conversation.create( - @hash[:conversation].merge({:author => @alice.person, :participant_ids => [@alice.contacts.first.person.id]})) + @hash[:conversation].merge({:author => alice.person, :participant_ids => [alice.contacts.first.person.id]})) - p = Postzord::Dispatch.new(@alice, cnv) + p = Postzord::Dispatch.new(alice, cnv) Postzord::Dispatch.stub!(:new).and_return(p) p.should_receive(:post) post :create, @hash @@ -82,7 +81,7 @@ describe ConversationsController do describe '#show' do before do - hash = {:author => @alice.person, :participant_ids => [@alice.contacts.first.person.id, @alice.person.id], + hash = {:author => alice.person, :participant_ids => [alice.contacts.first.person.id, alice.person.id], :subject => 'not spam', :text => 'cool stuff'} @conversation = Conversation.create(hash) end @@ -94,8 +93,7 @@ describe ConversationsController do end it 'does not let you access conversations where you are not a recipient' do - user2 = eve - sign_in :user, user2 + sign_in :user, eve get :show, :id => @conversation.id response.code.should == '302' -- GitLab