私は todo list app に devise と simple_form を使用しています。今、users/edit.html.erbに次のコードがあります
<%= content_for :title,'Edit profile' %>
<h2>Edit profile</h2>
<%= simple_form_for current_user, class: 'form-horizontal' do |f| %>
<%= f.input :nick_name %>
<%= f.submit 'Update profile' %>
<% end %>
私のuser.rbは次のようになります:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email,:nick_name, :password, :password_confirmation, :remember_me
validates :nick_name, presence: true # the other fields already validated by devise
has_many :lists , dependent: :destroy
end
ここで、空の nick_name フィールドで送信ボタンをクリックすると、ポップアップのようなアラートが表示されます。これは通常のブラウザ アラートとは異なり、HTML5 の機能だと思います。Please fill out this field
空のフィールドの下にポップアップとしてこのメッセージが表示されます。JavaScript を無効にしましたが、同じメッセージが表示されます。これは私の nick_name 入力フィールドです:
<input class="string required" id="user_nick_name" name="user[nick_name]" required="required" size="50" type="text">
ここで、モデルで nick_name の存在検証を削除すると、このポップアップは表示されません。検証行がコメント化されると、
<input class="string optional" id="user_nick_name" name="user[nick_name]" size="50" type="text">
simple_form は舞台裏でマジックを行っていますか?
このポップアップには html コードの痕跡が表示されないため、capybara/rspec でこの検証をテストするにはどうすればよいですか?