2017-01-10 1 views
0

Ich implementiere eine Kontoeinstellungen Funktion, wo Benutzer ihren Namen, E-Mail-Adresse, Passwort, etc. bearbeiten können. Es basiert auf Devise Registrierungsfunktionen, die eine update Methode hat.Wie kann ich mit Capybara aktualisierende Kontoinformationen testen, wenn das aktuelle Passwort erforderlich ist?

Ich möchte einen Funktionstest dafür mit RSpec und Capybara schreiben, jedoch muss der Benutzer sein aktuelles Passwort angeben, um die Kontodaten zu aktualisieren. Dies ist schwierig, da Passwörter verschlüsselt sind.

Das ist, was ich bisher habe, aber offensichtlich funktioniert es nicht:

require 'rails_helper' 

feature 'Updating account' do 
    scenario 'Updating name', :sidekiq_inline do 
    create :user 
    login_as User.first 

    visit edit_user_registration_path 

    fill_in 'Name', with: 'New name' 
    fill_in 'Current password', with: User.first.encrypted_password 

    click_button 'Save changes' 

    expect(current_path).to eq home_path 
    expect(page).to have_text 'Your account has been updated successfully.' 
    end 
end 

Antwort

1

Sie verwenden Fabrik-Girl (oder gleichwertig) Unter der Annahme, für den Test Erstellen von Objekten sollten Sie in der Lage sein, zu spezifizieren das Kennwort des Benutzers verwendet

create :user, password: 'my_password' 

und dann wieder verwenden es später im Test

fill_in 'Current password', with: 'my_password' 
+0

Ah, ja zu erstellen. D'oh. Vielen Dank. –

Verwandte Themen