Testando o redirecionamento após o login com o Devise
-
26-09-2019 - |
Pergunta
Eu segui a recomendação das páginas do Devise Github para isso:
Agora isso funciona muito bem, mas como você testaria que você tem esse comportamento agora?
Solução
Bem, existem duas maneiras de testá -lo no nível da unidade, escrevendo testes nos controladores que herdam o controlador de aplicativos. O código vai parecer algo como
it "should redirect to page_x after logged in" do
sign_in :user_role, @user
set_devise_mapping(:user_role)
get :new
response.should redirect_to(user_roles_dashboard_path)
end
Para o pepino, você provavelmente deve escrever uma etapa para fazer o login e afirmar se você estiver na página esperada após o sinal_in.
Outras dicas
HM ... acho que você deve escrever testes de integração para verificar o comportamento. Não há necessidade de testes de unidade ou testes funcionais se você não mexe com o código Devise.
Se você está apenas usando o mini teste, seria algo assim:
require 'test_helper'
class SessionsControllerTest < ActionDispatch::IntegrationTest
include Devise::Test::IntegrationHelpers
test "admins should be redirected to comments_url" do
sign_in(users(:one))
post user_session_url
assert_redirected_to comments_url
end
test "No admins should be redirected to root_path" do
sign_in(users(:two))
post user_session_url
assert_redirected_to root_url
end
end