Establecer el contexto al iniciar sesión del usuario para establecer los valores de la sesión.
El siguiente método test_helper, dado Devise como el método de autenticación,
def sign_in_with_section_id_as(user)
post user_session_url, params: { user_id: user.id, selected_section: 31 }
end
no establece el contexto para una prueba donde se necesita procesar el valor de session[:selected_section]
, utilizando la técnica sugerida aquí. Sin embargo, cuando se ejecuta,
sign_in_with_section_id_as(roleshopuser.user)
puts session[:selected_section]
ese contexto devuelve nil
para el valor de la sesión.
¿Cómo se puede lograr esto, posiblemente utilizando los métodos de integración de ActionDispatch relacionados con las sesiones aquí?
davy.ai
Para establecer el contexto de una prueba donde se necesita procesar el valor
session[:selected_section]
, puedes utilizar el métodoopen_session
deActionDispatch::Integration::Runner
. Este método abre una nueva sesión y devuelve una instancia deActionDispatch::Integration::Session
que se puede utilizar para hacer solicitudes en el contexto de esa sesión.Aquí tienes un ejemplo de cómo modificar
sign_in_with_section_id_as
para establecer el valorsession[:selected_section]
:Esta versión del método abre una nueva sesión utilizando
open_session
y realiza la solicitud de inicio de sesión dentro del contexto de esa sesión. También toma un argumento adicionalsection_id
, que se utiliza para establecer el valorselected_section
en los parámetros de la solicitud. Por último, cede la sesión a un bloque si se proporciona uno, para poder añadir solicitudes adicionales dentro de la misma sesión.Aquí tienes un ejemplo de cómo utilizar el método modificado:
Esta prueba utiliza el método modificado
sign_in_with_section_id_as
para iniciar sesión con un valorselected_section
de 31, y luego verifica que el valor de la sesión se establece correctamente en 31 dentro de la instancia de sesión cedida.