From 9474fe72dd388559aa013717e9e91b5a87aa872c Mon Sep 17 00:00:00 2001 From: Nicholas Seckar Date: Sat, 4 Feb 2006 19:58:45 +0000 Subject: Add :builder => option to form_for and friends. Closes 3268. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3536 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/test/template/form_helper_test.rb | 75 ++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) (limited to 'actionpack/test') diff --git a/actionpack/test/template/form_helper_test.rb b/actionpack/test/template/form_helper_test.rb index a38e3c6728..6cc4b50d67 100644 --- a/actionpack/test/template/form_helper_test.rb +++ b/actionpack/test/template/form_helper_test.rb @@ -234,6 +234,10 @@ class FormHelperTest < Test::Unit::TestCase assert_dom_equal expected, _erbout end + def test_form_builder_does_not_have_form_for_method + assert ! ActionView::Helpers::FormBuilder.instance_methods.include?('form_for') + end + def test_form_for_and_fields_for _erbout = '' @@ -256,4 +260,75 @@ class FormHelperTest < Test::Unit::TestCase assert_dom_equal expected, _erbout end + + class LabellingBulider < ActionView::Helpers::FormBuilder + (field_helpers - %w(hidden_field)).each do |selector| + src = <<-END_SRC + def #{selector}(field, *args, &proc) + " " + super + "
" + end + END_SRC + class_eval src, __FILE__, __LINE__ + end + end + + def test_form_for_with_labelled_builder + _erbout = '' + + form_for(:post, @post, :builder => LabellingBulider) do |f| + _erbout.concat f.text_field(:title) + _erbout.concat f.text_area(:body) + _erbout.concat f.check_box(:secret) + end + + expected = + "
" + + "
" + + "
" + + " " + + "
" + + "
" + + assert_dom_equal expected, _erbout + end + + # Perhaps this test should be moved to prototype helper tests. + def test_remote_form_for_with_labelled_builder + self.extend ActionView::Helpers::PrototypeHelper + _erbout = '' + + remote_form_for(:post, @post, :builder => LabellingBulider) do |f| + _erbout.concat f.text_field(:title) + _erbout.concat f.text_area(:body) + _erbout.concat f.check_box(:secret) + end + + expected = + "
" + + "
" + + "
" + + " " + + "
" + + "
" + + assert_dom_equal expected, _erbout + end + + def test_fields_for_with_labelled_builder + _erbout = '' + + fields_for(:post, @post, :builder => LabellingBulider) do |f| + _erbout.concat f.text_field(:title) + _erbout.concat f.text_area(:body) + _erbout.concat f.check_box(:secret) + end + + expected = + "
" + + "
" + + " " + + "
" + + assert_dom_equal expected, _erbout + end end -- cgit v1.2.3