Quickie snippet form-macro to make sure that the page you're on has the given set of form fields. You can optionally pass in a model name for "form_for" style forms (because these are pretty common), but it also lets you just pass in straight field names (for when you check your submits and hand-crafted tags).
Stick this at the bottom of your test_helper.rb and use as below:
should_have_form_fields [:name, :email, :phone, :gender], 'user'
Note: should work for text inputs as well as radio buttons and checkboxes (which is why we check for name not id - also means you don't match the label by accident). This assumes you've used Rails' helper_methods to generate your form fields - or that you have included a name on every field.
class ActionController::TestCase # A macro to check that we should now have form fields for the given # columns. def self.should_have_form_fields(fields, model_name = nil) return if fields.blank? # short circuit fields = [fields] unless fields.respond_to?(:[]) # arrayify fields.each do |f| should "have field #{f} on form" do assert_select 'form' do if model_name.blank? assert_select "[name=#{f}]" else assert_select "[name='#{model_name}[#{f}]']" end end end end end end
No comments:
Post a Comment