2017-01-20 3 views
0

J'ai un système de référence. Donc, si un utilisateur (pas encore inscrit), visite un lien, il va définir un cookie.Rails/RSpec - Simulation de la requête depuis le même navigateur/session/utilisateur (non connecté). Pour vérifier si un cookie a été défini dans une demande précédente

application_controller.rb

before_action :set_referral 

def set_referral 
    if params[:referral_token].present? 
    cookies.permanent[:referral_token] = params[:referral_token] 
    end 
end 

Ensuite, l'utilisateur peut faire ce qu'ils veulent, et s'ils ont ensuite inscription plus tard, je veux vérifier ce jeton de référence pour donner crédit à l'utilisateur faisant référence.

  1. Est-ce un bon/le meilleur moyen d'y parvenir? Comment puis-je tester cela dans RSpec? J'ai simplement besoin de visiter un itinéraire pour définir le jeton, puis vous inscrire.

referral_spec.rb

get "/some-route", params: {referral_token: "123abc"}, headers: something_here_maybe? 
post "/users", params: user_registration_params, headers: same_as_previous_user 

Y at-il de toute façon en RSpec pour garantir que les demandes proviennent de la même session du navigateur? Je n'ai pas beaucoup d'expérience avec les cookies/sessions/etc. alors peut-être que toute ma compréhension est fausse ici. Existe-t-il un moyen de tester cela? Y a-t-il un meilleur moyen d'y parvenir?

Répondre

0
  1. Ceci est une bonne approche
  2. Pour tester cela, vous pouvez avoir des spécifications telles:

Arrivée controller specs si le cookie est réglé correctement:

it 'sets a cookie with referral code when it is present in params' do 
    get root_path, { referral_code: 'myreferralcode' } 

    expect(response.cookies['referral_code']).to eq('myreferralcode') 
end 

Si vous voulez pour tester le chemin complet, par exemple Lorsque le cookie est défini avec le code de référence et que l'utilisateur s'enregistre et que vous souhaitez vérifier si le code de référence est défini sur le modèle, vous devez utiliser feature specs pour cela.