diff --git a/lib/webrat/page.rb b/lib/webrat/page.rb index b0a45d2..1e8376e 100644 --- a/lib/webrat/page.rb +++ b/lib/webrat/page.rb @@ -29,7 +29,7 @@ module Webrat # field can be either the value of a name attribute (i.e. user[email]) # or the text inside a element that points at the field. def fills_in(id_or_name_or_label, options = {}) - field = find_field(id_or_name_or_label, TextField, TextareaField) + field = find_field(id_or_name_or_label, TextField, TextareaField, PasswordField) field.set(options[:with]) end diff --git a/test/fills_in_test.rb b/test/fills_in_test.rb index 842e61b..0ebb567 100644 --- a/test/fills_in_test.rb +++ b/test/fills_in_test.rb @@ -21,121 +21,133 @@ class FillsInTest < Test::Unit::TestCase @session.clicks_button end - def test_should_fail_if_input_not_found - @response.stubs(:body).returns(<<-EOS) -
-
- EOS - - assert_raises RuntimeError do - @session.fills_in "Email", :with => "foo@example.com" - end - end + def test_should_work_with_password_fields + @response.stubs(:body).returns(<<-EOS) +
+ + +
+ EOS + @session.expects(:post_via_redirect).with("/login", "user" => {"text" => "pass"}) + @session.fills_in "user_text", :with => "pass" + @session.clicks_button + end + + def test_should_fail_if_input_not_found + @response.stubs(:body).returns(<<-EOS) +
+
+ EOS - def test_should_allow_overriding_default_form_values - @response.stubs(:body).returns(<<-EOS) -
- - - -
- EOS - @session.expects(:post_via_redirect).with("/login", "user" => {"email" => "foo@example.com"}) - @session.fills_in "user[email]", :with => "foo@example.com" - @session.clicks_button - end - - def test_should_choose_the_shortest_label_match - @response.stubs(:body).returns(<<-EOS) -
- - - - - -
- EOS - - @session.expects(:post_via_redirect).with("/login", "user" => {"mail1" => "", "mail2" => "value"}) - @session.fills_in "Some", :with => "value" - @session.clicks_button - end - - def test_should_choose_the_first_label_match_if_closest_is_a_tie - @response.stubs(:body).returns(<<-EOS) -
- - - - - -
- EOS - - @session.expects(:post_via_redirect).with("/login", "user" => {"mail1" => "value", "mail2" => ""}) - @session.fills_in "Some mail", :with => "value" - @session.clicks_button - end - - def test_should_anchor_label_matches_to_start_of_label - @response.stubs(:body).returns(<<-EOS) -
- - -
- EOS - - assert_raises(RuntimeError) { @session.fills_in "mail", :with => "value" } - end - - def test_should_anchor_label_matches_to_word_boundaries - @response.stubs(:body).returns(<<-EOS) -
- - -
- EOS - - assert_raises(RuntimeError) { @session.fills_in "Email", :with => "value" } - end - - def test_should_work_with_inputs_nested_in_labels - @response.stubs(:body).returns(<<-EOS) -
- - -
- EOS - @session.expects(:post_via_redirect).with("/login", "user" => {"email" => "foo@example.com"}) + assert_raises RuntimeError do @session.fills_in "Email", :with => "foo@example.com" - @session.clicks_button - end - - def test_should_work_with_full_input_names - @response.stubs(:body).returns(<<-EOS) -
- - -
- EOS - @session.expects(:post_via_redirect).with("/login", "user" => {"email" => "foo@example.com"}) - @session.fills_in "user[email]", :with => "foo@example.com" - @session.clicks_button - end - - def test_should_work_with_symbols - @response.stubs(:body).returns(<<-EOS) -
- - - -
- EOS - @session.expects(:post_via_redirect).with("/login", "user" => {"email" => "foo@example.com"}) - @session.fills_in :email, :with => "foo@example.com" - @session.clicks_button end end + + def test_should_allow_overriding_default_form_values + @response.stubs(:body).returns(<<-EOS) +
+ + + +
+ EOS + @session.expects(:post_via_redirect).with("/login", "user" => {"email" => "foo@example.com"}) + @session.fills_in "user[email]", :with => "foo@example.com" + @session.clicks_button + end + + def test_should_choose_the_shortest_label_match + @response.stubs(:body).returns(<<-EOS) +
+ + + + + +
+ EOS + + @session.expects(:post_via_redirect).with("/login", "user" => {"mail1" => "", "mail2" => "value"}) + @session.fills_in "Some", :with => "value" + @session.clicks_button + end + + def test_should_choose_the_first_label_match_if_closest_is_a_tie + @response.stubs(:body).returns(<<-EOS) +
+ + + + + +
+ EOS + + @session.expects(:post_via_redirect).with("/login", "user" => {"mail1" => "value", "mail2" => ""}) + @session.fills_in "Some mail", :with => "value" + @session.clicks_button + end + + def test_should_anchor_label_matches_to_start_of_label + @response.stubs(:body).returns(<<-EOS) +
+ + +
+ EOS + + assert_raises(RuntimeError) { @session.fills_in "mail", :with => "value" } + end + + def test_should_anchor_label_matches_to_word_boundaries + @response.stubs(:body).returns(<<-EOS) +
+ + +
+ EOS + + assert_raises(RuntimeError) { @session.fills_in "Email", :with => "value" } + end + + def test_should_work_with_inputs_nested_in_labels + @response.stubs(:body).returns(<<-EOS) +
+ + +
+ EOS + @session.expects(:post_via_redirect).with("/login", "user" => {"email" => "foo@example.com"}) + @session.fills_in "Email", :with => "foo@example.com" + @session.clicks_button + end + + def test_should_work_with_full_input_names + @response.stubs(:body).returns(<<-EOS) +
+ + +
+ EOS + @session.expects(:post_via_redirect).with("/login", "user" => {"email" => "foo@example.com"}) + @session.fills_in "user[email]", :with => "foo@example.com" + @session.clicks_button + end + + def test_should_work_with_symbols + @response.stubs(:body).returns(<<-EOS) +
+ + + +
+ EOS + @session.expects(:post_via_redirect).with("/login", "user" => {"email" => "foo@example.com"}) + @session.fills_in :email, :with => "foo@example.com" + @session.clicks_button + end +end