Yury Kotlyarov wrote:

it "should have form with input fields" do
 render ...
 response.should have_form(users_path) do
   with_field_set 'Personal Information' do
     with_text_field 'First name', 'user[first_name]'
     ...
   end
 end
end

The minor problem with that system is it forces your test to say exactly what the code says. That's not "driven" development!

If you can forbear to use matchers (shocked gasp!), at my day-job we match blocks all the time with assert2's new xpath system:

  require 'assert2/xpath'

  assert_xhtml response

  xpath :form, :action => users_path do
    xpath :fieldset, ?. => 'Personal Information' do
      xpath :input, :type => 'text', :name => 'user[first_name]' and
      xpath :input, :type => 'text', :name => 'user[last_name]'
    end
  end

From there, wrapping the xpath() calls up into kewt with_text_field() macros would be trivial. They could also absolves the redundant 'user[]' text on the names, for example.

If any inner xpath() fails, there, the fault diagnostic contains a formatted & indented copy of the HTML block under inspection. The entire page would not spew out! Only the <form> or <fieldset> would.

--
  Phlip

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to