rspec rails 3 views authenticate

Hi,

I am stuck at the following. Can anyone help. I am writting a spec for views.

home/index_html_haml_rspec.rb

require 'spec_helper'

describe "home/index.html.haml" do   include Devise::TestHelpers

  login_user

  it "should display header with search form" do

    render :handlers => "home/index.html.haml"     response.should contain("Hello world!" )

  end   # pending "add some examples to (or delete) #{__FILE__}" end

output:

/spec/views/home/index.html.haml_spec.rb:7:in `block in <top (required)>': undefined local variable or method `login_user' for #<Class:0xa07074c> (NameError)   from /usr/local/rvm/gems/ruby-1.9.3-p374@affluence-connect/gems/rspec-core-2.11.1/lib/rspec/core/example_group.rb:238:in `module_eval'   from /usr/local/rvm/gems/ruby-1.9.3-p374@affluence-connect/gems/rspec-core-2.11.1/lib/rspec/core/example_group.rb:238:in `subclass'   from /usr/local/rvm/gems/ruby-1.9.3-p374@affluence-connect/gems/rspec-core-2.11.1/lib/rspec/core/example_group.rb:224:in `describe'   from /usr/local/rvm/gems/ruby-1.9.3-p374@affluence-connect/gems/rspec-core-2.11.1/lib/rspec/core/dsl.rb:18:in `describe'   from /home/seneca/ashish/affluence2-staging/spec/views/home/index.html.haml_spec.rb:4:in `<top (required)>'   from /usr/local/rvm/gems/ruby-1.9.3-p374@affluence-connect/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `load'   from /usr/local/rvm/gems/ruby-1.9.3-p374@affluence-connect/gems/rspec-core-2.11.1/lib/rspec/core/configuration.rb:780:in `block in load_spec_files'

First thing, there is a forum here: Redirecting to Google Groups for devise itself. and there you might get a better help for your question.

but I googled around. something I assume you have done and it seems that login_user was a helper you had to redefine yourself. which does not really exist anymore, well, at least looking at the documentation of the devise test helpers.

http://rubydoc.info/github/plataformatec/devise/master/Devise/TestHelpers

so probably you should use factory girl (GitHub - thoughtbot/factory_bot: A library for setting up Ruby objects as test data.) to mock up a user and use the method on the documents called sign_in, something like:

@user = Factory(:user)

sign_in @user

now I also recommend you to read a little bit more about testing in rails with rspec and factory_girl:

for example to start with: #275 How I Test - RailsCasts

and you can also google a little bit more by yourself!

unknown wrote in post #1110178:

First thing, there is a forum here: Redirecting to Google Groups for devise itself. and there you might get a better help for your question.

but I googled around. something I assume you have done and it seems that login_user was a helper you had to redefine yourself. which does not really exist anymore, well, at least looking at the documentation of the devise test helpers.

http://rubydoc.info/github/plataformatec/devise/master/Devise/TestHelpers

so probably you should use factory girl (GitHub - thoughtbot/factory_bot: A library for setting up Ruby objects as test data.) to mock up a user and use the method on the documents called sign_in, something like:

@user = Factory(:user)

sign_in @user

now I also recommend you to read a little bit more about testing in rails with rspec and factory_girl:

for example to start with: #275 How I Test - RailsCasts and you can also google a little bit more by yourself!

Hi, I created macros, the code is as follows

module ControllerMacros   def login_admin     before(:each) do       @request.env["devise.mapping"] = Devise.mappings[:admin]       sign_in FactoryGirl.create(:admin) # Using factory girl as an example     end   end

  def login_user     before(:each) do       @request.env["devise.mapping"] = Devise.mappings[:user]       @current_user = FactoryGirl.create(:user)       # user.confirm! # or set a confirmed_at inside the factory. Only necessary if you are using the confirmable module       sign_in @current_user     end   end

  def login_as_paid_user     before(:each) do       @request.env["devise.mapping"] = Devise.mappings[:user]       @current_user = FactoryGirl.create(:user, :member_paid_monthly)       # user.confirm! # or set a confirmed_at inside the factory. Only necessary if you are using the confirmable module       sign_in @current_user     end   end   def logout!     after(:each) do       session[:user]     end   end end

its working in controller. The problem is with only views.