[rspec-users] Rspec + Devise + BaseController

2013-03-20 Thread Ezequiel Delpero
Hello there,

I'm creating a base controller for the admin section of a project. All
controllers whitin the admin section will inherit from it.

#
#app/controllers/admins/base_controller.rb

class Admins::BaseController  ApplicationController
  layout admin_cms
  before_filter :authenticate_admin!
end

#

#spec/controllers/admins/base_controller_spec.rb

require 'spec_helper'

describe Admins::BaseController do
  controller do
def index
end
  end

  describe before_filter#authenticate_admin! do
before(:each) do
  @admin = FactoryGirl.create(:admin)
  @request.env[devise.mapping] = Devise.mappings[:admin]
end

context when admin is not logged in do
  it redirect admin to sign_in path do
get :index
response.should redirect_to new_admin_session_path
  end
end

  end
end

#

I've already inclueded Devise::TestHelpers on my spec_helper.rb and I'm
getting this error when running this spec:

#

Admins::BaseController
  before_filter#authenticate_admin!
when admin is not logged in
  redirect admin to sign_in path (FAILED - 1)

Failures:

   1) Admins::BaseController before_filter#authenticate_admin! when
admin is not logged in redirect admin to sign_in path
 Failure/Error: get :index
 ActionView::MissingTemplate:
   Missing template anonymous/index, application/index with
{:locale=[:en], :formats=[:html], :handlers=[:erb, :builder,
:coffee]}. Searched in:
 *
#RSpec::Rails::ViewRendering::EmptyTemplatePathSetDecorator:0xbaf75d4
 # ./spec/controllers/admins/base_controller_spec.rb:17:in `block (4
levels) in top (required)'

Finished in 0.17124 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/controllers/admins/base_controller_spec.rb:16 #
Admins::BaseController   before_filter#authenticate_admin! when admin is
not logged in redirect admin to sign_in path

#

I changed my spec to this:

#

require 'spec_helper'

describe Admins::BaseController do
  controller do
def index
  render nothing: true
end
  end

  describe before_filter#authenticate_admin! do
context when admin is not logged in do
  it redirect admin to sign_in path do
get :index
response.should redirect_to new_admin_session_path
  end
end

  end
end

#

and now I'm getting this error:

#

Failures:

  1) Admins::BaseController before_filter#authenticate_admin! when admin
is not logged in redirect admin to sign_in path
 Failure/Error: response.should redirect_to new_admin_session_path
   Expected response to be a :redirect, but was 200
So, for some reason it's not entering in the authenticate_admin! before
filter. I'm kind of lost. Thanks again.

#

I'm using Rails 3.2.13, Ruby 2.0.0, Rspec-rails 2.13.0 and Devise 2.2.3.
I really appreacite if someone could help me out with this. Thanks in
advance.

-- 
Posted via http://www.ruby-forum.com/.
___
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users


Re: [rspec-users] Rspec + Devise + BaseController

2013-03-20 Thread Ezequiel Delpero
Finally I could solve the problem. The problem was on the definition of 
the anonymous controller on the spec:

instead of:

controller do
  def index
  end
end

I used:

controller(Admins::Base) do
  def index
  end
end

You need to specify always the anonymous controller you're testing 
unless is ApplicationController the one you're trying to test.

-- 
Posted via http://www.ruby-forum.com/.
___
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users


Re: [rspec-users] Rspec + Devise + BaseController

2013-03-20 Thread David Chelimsky
On Wed, Mar 20, 2013 at 11:21 AM, Ezequiel Delpero li...@ruby-forum.com wrote:
 Finally I could solve the problem. The problem was on the definition of
 the anonymous controller on the spec:

 instead of:

 controller do
   def index
   end
 end

 I used:

 controller(Admins::Base) do
   def index
   end
 end

 You need to specify always the anonymous controller you're testing
 unless is ApplicationController the one you're trying to test.

FYI - docs: 
http://rubydoc.info/gems/rspec-rails/RSpec/Rails/ControllerExampleGroup/ClassMethods#controller-instance_method
___
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users