Pergunta

Eu segui a recomendação das páginas do Devise Github para isso:

http://github.com/plataformatec/devise/wiki/how-Te :-redirect-to-a-specific-page-on-d-successful-sign-in

Agora isso funciona muito bem, mas como você testaria que você tem esse comportamento agora?

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top