I'm creating a Ruby on Rails application, and am trying to run a test involving my User model to see if the "Remember me" feature works. I'm using Rails' inbuilt cookies hash to store the cookies, and the session hash to store the current session. I've run various tests (integration, model, and controller) where I use the session variable, but for some reason in this particular case it isn't being recognized.
NameError: undefined local variable or method `session' for #<UserTest:0x0000000658b5c8>
The error happens in the else block in the log_in_as method below:
test_helper.rb
...
def log_in_as(user, options = {})
password = options[:password] || 'password'
remember_me = options[:remember_me] || '1'
if integration_test?
post login_path, session: { email: user.email, password: password, remember_me: remember_me }
else
session[:user_id] = user.id
end
end
I call log_in_as in my User test; both of these tests fail.
user_test.rb
require 'test_helper'
...
test "login with remembering" do
log_in_as(@user, remember_me: '1')
assert_not_nil cookies['remember_token']
end
test "login without remembering" do
log_in_as(@user, remember_me: '0')
assert_nil cookies['remember_token']
end
...
And when I remove that line of code from the helper, an error is thrown saying that cookies isn't recognized. What is the issue here?
The session hash isn't available in models, only in controllers and views and controller and view tests.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With