rspec rails 3 views authenticate

21 views
Skip to first unread message

Aashish Kiran

unread,
May 24, 2013, 6:43:40 AM5/24/13
to rubyonra...@googlegroups.com
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'

--
Posted via http://www.ruby-forum.com/.

and...@benjamin.dk

unread,
May 26, 2013, 7:04:33 AM5/26/13
to rubyonra...@googlegroups.com
First thing, there is a forum here: https://groups.google.com/forum/?fromgroups#!forum/plataformatec-devise 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.


so probably you should use factory girl (https://github.com/thoughtbot/factory_girl) 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:

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

Aashish Kiran

unread,
May 27, 2013, 3:07:00 AM5/27/13
to rubyonra...@googlegroups.com
unknown wrote in post #1110178:
> First thing, there is a forum
> here:
> https://groups.google.com/forum/?fromgroups#!forum/plataformatec-devise
> 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
> (https://github.com/thoughtbot/factory_girl) 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: http://railscasts.com/episodes/275-how-i-test
> 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.
Reply all
Reply to author
Forward
0 new messages