Тест не удаляет пользователя после подтверждения пароля - PullRequest
1 голос
/ 06 марта 2020

Я пишу тест, чтобы подтвердить, что учетная запись пользователя удалена после того, как пользователь ввел правильный пароль.

Форма, которую я тестирую:

<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :delete }) do |f| %>
  <%= f.label :password %>Enter your password to delete your account.<br />
  <%= f.password_field :password_to_delete %><br />
  <button type="submit", data-test="delete-user-account">Delete my account</button>
<% end %>

( Я могу подтвердить, что действие работает , но тест не работает.)

Это мой текущий тест:

RSpec.feature 'user deletes account' do
  let(:user) { create :user }

  # when user puts in correct password and successfully deletes
  context 'when successful' do
    scenario 'user inputs correct password' do
      visit new_user_session_path
      fill_in 'user_email', with: user.email
      fill_in 'user_password', with: '123456'
      find('[data-test="submit"]').click
      visit edit_user_registration_path
      fill_in 'user_password_to_delete', with: '123456'

      find('[data-test="delete-user-account"]').click

      expect(user).not_to be_present
    end
  end
end

Что возвращается:

Failures:

  1) user deletes account when successful user inputs correct password
     Failure/Error: expect(user).not_to be_present
       expected `#<User id: 1>.present?` to return false, got true

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

У меня все заработало!

Я проверил User.last до и после раздела удаления, чтобы быть уверенным, и вот что вернет ноль.

Я даже проверил, сменил ли я пароль если он вернул ложное срабатывание и не получил.

0 голосов
/ 06 марта 2020

Я не эксперт в этом вопросе, но попробуйте

user.reload
expect(user).not_to be_present

Логическая причина: пользователь все еще сохраняется как переменная, но не в базе данных.

в качестве альтернативы вы можете использовать

user = User.find_by_id user 
#this will try to find the user from database which is already deleted and thus returning nil

expect(user).not_to be_present
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...