Warden and System Tests are driving me insane.
Im using Warden for authentication and are now trying to write system test. But when I run a system test I get the following error:
Failure/Error: if current_user.admin?
NoMethodError:
undefined method `admin?' for nil:NilClass
Meaning current_user is not set. How to fix this? I have set up so I can do controller tests with Warden and that works. But I can not figure this out and I don't find any documentation with working code.
Please help me out, I'm going crazy!
signin_helper.rb
module SigninHelper
def sign_in_as(user)
visit signin_path
fill_in 'authentications_email', with: user.email
fill_in 'authentications_password', with: user.password
click_button 'Logga in'
end
def sign_out
click_link "Logga ut"
end
end
exempel testcase:
require 'rails_helper'
require 'pry'
RSpec.describe "UserEdits", type: :system do
let(:user) { Fabricate(:confirmed_user) }
it "should update a users email" do
sign_in_as(user)
visit user_url(user.guid)
click_link 'Ändra medlemsuppgifter'
fill_in 'user_email', with: "newusereamail@yahoo.com"
expect {
click_button 'Uppdatera uppgifter'
user.reload
}.to change { user.email }
end
end
I was trying to use "driven_by :rack_test" when changing to driven_by :selenium_chrome_headless it works as expected.