Как мне проверить количество ошибок, отображаемых на веб-странице? - PullRequest
0 голосов
/ 03 ноября 2018

Вот мой тест на неудачное редактирование.

require 'test_helper'

class UsersEditTest < ActionDispatch::IntegrationTest

    def setup
        @user = users(:michael)
    end

    test 'unsuccesful edit' do
        get edit_user_path(@user)
        assert_template 'users/edit'
        patch user_path(@user), params: { user: {name: '',
                                               email: 'foo@invalid',
                                               password: "foo",

                                                password_confirmation: 'bar' } }
        assert_select 'div.alert.alert-danger', 'The form contains 4 errors.'
        assert_select 'div.alert', 4
        assert_template 'users/edit'
    end

end

Вот мой взгляд

    <% provide(:title, "Edit user") %>
    <% provide(:button_text, 'Save Changes') %>
    <h1>Update your profile</h1>

    <div class="row">
      <div class="col-md-6 col-md-offset-3">
        <%= form_for(@user) do |f| %>
  <%= render 'shared/error_messages', object: @user %>

  <%= f.label :name %>
  <%= f.text_field :name, class: 'form-control' %>

  <%= f.label :email %>
  <%= f.email_field :email, class: 'form-control' %>

  <%= f.label :password %>
  <%= f.password_field :password, class: 'form-control' %>

  <%= f.label :password_confirmation %>
  <%= f.password_field :password_confirmation, class: 'form-control' %>

  <%= f.submit yield(:button_text), class: "btn btn-primary" %>
  <% end %>
        <div class="gravatar_edit">
          <%= gravatar_for @user %>
          <a href="http://gravatar.com/emails" target="_blank" rel='noopener'>change</a>
        </div>
      </div>
    </div>

Вот мой взгляд 'shared / error_messages'

<% if @user.errors.any? %>
  <div id="error_explanation">
    <div class="alert alert-danger">
      The form contains <%= pluralize(@user.errors.count, "error") %>.
    </div>
    <ul>
    <% @user.errors.full_messages.each do |msg| %>
      <li><%= msg %></li>
    <% end %>
    </ul>
  </div>
<% end %>

Я пытаюсь проверить количество ошибок, представленных в форме. С моим тестом я ожидаю 4 ошибки, но мой тест продолжает терпеть неудачу, потому что фактический 1. 1. 1010 *

Есть ли другой метод подтверждения, который я должен использовать.

1 Ответ

0 голосов
/ 03 ноября 2018

У вас нет 4 div.alert, поэтому он терпит неудачу. У вас есть 4 li элементов.

Вы можете иметь что-то вроде:

assert_select '#error_explanation' do
  assert_select 'li', 4
end

Это проверит, что у вас есть 4 li тегов (ошибок) внутри #error_explanation div.

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