2013-06-29 20 views
6

Ich verwende ersinnen und simple_form für meine To-do-Liste App. Nun habe ich den folgenden Code für meine Benutzer/edit.html.erbTesting HTML 5 Validierungen Form, wenn simple_form Rails mit

<%= 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 %> 

Meine user.rb wie folgt aussieht:

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 

Nun, wenn ich auf einreichen klicken mit einem leeren NICK_NAME Feld, bekomme ich eine Popup-Art von Alarm. Es ist nicht wie eine normale Browser-Warnung, ich denke, es ist eine HTML5-Funktion. Ich erhalte diese Meldung Please fill out this field als Popup unter dem leeren Feld. Ich habe Javascript deaktiviert, aber es zeigt immer noch die gleiche Nachricht. Das ist mein NICK_NAME Eingabefeld:

<input class="string required" id="user_nick_name" name="user[nick_name]" required="required" size="50" type="text"> 

Nun, wenn ich die Anwesenheit Validierung für NICK_NAME in meinem Modell zu entfernen, das Popup nicht .Wenn Validierungsleitung kommentiert out,

erscheint
<input class="string optional" id="user_nick_name" name="user[nick_name]" size="50" type="text"> 

Ist simple_form etwas hinter den Kulissen Magie?

Da dieses Popup jede Spur von HTML-Code zeigen tut, wie für diese Validierung in Capybara/rspec testen?

+0

dass ein html5 Funktion ist nur das Attribut benötigt wird, und natürlich Unterstützung des Browsers. – Musa

+0

Ok, wie teste ich es Capybara mit? – lnreddy

Antwort

3

Eigentlich kann man es testen, indem Sie HTML-Attribut required="required" mit dem folgenden Codebeispiel zu finden:

expect(page).to have_xpath("//input[@required='required']") 
+8

Vielen Dank ..Aber ist es eine Möglichkeit, um die Nachricht zu testen, die angezeigt wird? Oder zumindest um zu überprüfen, dass das Formular nicht reicht? – lnreddy

+1

Dies wird nicht testen, dass das Formular tatsächlich zu validieren. – steel

Verwandte Themen