Re: [rspec-users] Failure trying to test ApplicationController

2007-10-16 Thread David Chelimsky
On 10/16/07, Steve [EMAIL PROTECTED] wrote:
 On Tue, 16 Oct 2007 00:26:13 -0500, David Chelimsky wrote:
  Part of the problem is that you're trying to spec something that
  already exists. Developing spec-first, you wouldn't likely end up with
  this problem because this method would have appeared because you
  refactored it out of an existing action, which was already spec'd.

 I see what you're saying I think. That the application controller stuff
 isn't setup properly because no initial request(get/post) has been
 made.

 Attaching these tests to every describe out there for a given
 controller seems overkill. Since if the one spec for testing the
 application controller tests all of its methods, then it should be fine
 wherever its used it would seem.

But how do you know that it's being used? The behaviour you're
spec'ing is that a given action should redirect if the user is not
logged in, right? If you look at it that way, then it seems perfectly
acceptable to do this:

describe some action on some controller do
  it_should_behave_like action that requires login
  ...
end
___
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users


Re: [rspec-users] Failure trying to test ApplicationController

2007-10-15 Thread David Chelimsky
On 10/15/07, Steve [EMAIL PROTECTED] wrote:
 I'm trying to write some tests for the ApplicationController as shared
 tests that can be run in all of my other controller tests, but am getting
 a nil.rewrite error. Below is what I have...

 describe AccountController do
   it_should_behave_like 'Application controller'
 end

 describe 'Application controller', :shared = true do

   it 'should fail require_login check if not logged in' do
 User.current = nil
 controller.require_login.should be_false
 response.should redirect_to(:controller = 'account', :action = 'logon')
   end
 end

 def require_login
   return true if User.current.logged_in?

   redirect_to :controller = account, :action = logon and return false
 end

 The line it's failing on is the redirect_to in require_login. What am I
 doing wrong?

What's the error?
___
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users


Re: [rspec-users] Failure trying to test ApplicationController

2007-10-15 Thread Steve
On Mon, 15 Oct 2007 23:46:32 -0500, David Chelimsky wrote:

 On 10/15/07, Steve [EMAIL PROTECTED] wrote:
 I'm trying to write some tests for the ApplicationController as shared
 tests that can be run in all of my other controller tests, but am getting
 a nil.rewrite error. Below is what I have...

 describe AccountController do
   it_should_behave_like 'Application controller'
 end

 describe 'Application controller', :shared = true do

   it 'should fail require_login check if not logged in' do
 User.current = nil
 controller.require_login.should be_false
 response.should redirect_to(:controller = 'account', :action = 'logon')
   end
 end

 def require_login
   return true if User.current.logged_in?

   redirect_to :controller = account, :action = logon and return false
 end

 The line it's failing on is the redirect_to in require_login. What am I
 doing wrong?
 
 What's the error?

NoMethodError in 'AccountController should fail require_login check if not 
logged in'
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.rewrite
trunk/app/controllers/application.rb:28:in `require_login'
./spec/controllers/application_controller_spec.rb:12:

The redirect_to call is line 28, and controller.require_login.should
is line 12.

___
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users


Re: [rspec-users] Failure trying to test ApplicationController

2007-10-15 Thread David Chelimsky
On 10/15/07, Steve [EMAIL PROTECTED] wrote:
 I'm trying to write some tests for the ApplicationController as shared
 tests that can be run in all of my other controller tests, but am getting
 a nil.rewrite error. Below is what I have...

 describe AccountController do
   it_should_behave_like 'Application controller'
 end

 describe 'Application controller', :shared = true do

   it 'should fail require_login check if not logged in' do
 User.current = nil
 controller.require_login.should be_false
 response.should redirect_to(:controller = 'account', :action = 'logon')


You get responses (i.e. the response object in the spec) from actions
using get, post, put, delete, not by calling methods directly on the
controller.

Part of the problem is that you're trying to spec something that
already exists. Developing spec-first, you wouldn't likely end up with
this problem because this method would have appeared because you
refactored it out of an existing action, which was already spec'd.

To be honest, I'm not quite sure how to spec this. One way would be to
set a message expectation for the call to redirect_to:

  controller.should_receive(:redirect_to)
  controller.require_login

Anybody else have any ideas?
___
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users