From 43ee8ab6e2aa1efeb848885ed51f14709990cc08 Mon Sep 17 00:00:00 2001
From: Marcel Molina
Date: Wed, 26 Apr 2006 23:09:08 +0000
Subject: Allow error_messages_for to report errors for multiple objects, as
well as support for customizing the name of the object in the error summary
header. Closes #4186. [andrew@redlinesoftware.com, Marcel Molina Jr.]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4287 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
---
.../test/template/active_record_helper_test.rb | 52 +++++++++++++++++++++-
1 file changed, 51 insertions(+), 1 deletion(-)
(limited to 'actionpack/test')
diff --git a/actionpack/test/template/active_record_helper_test.rb b/actionpack/test/template/active_record_helper_test.rb
index e153e630ab..ffaae99e28 100644
--- a/actionpack/test/template/active_record_helper_test.rb
+++ b/actionpack/test/template/active_record_helper_test.rb
@@ -22,10 +22,16 @@ class ActiveRecordHelperTest < Test::Unit::TestCase
alias_method :body_before_type_cast, :body unless respond_to?(:body_before_type_cast)
alias_method :author_name_before_type_cast, :author_name unless respond_to?(:author_name_before_type_cast)
end
+
+ User = Struct.new("User", :email)
+ User.class_eval do
+ alias_method :email_before_type_cast, :email unless respond_to?(:email_before_type_cast)
+ end
+
Column = Struct.new("Column", :type, :name, :human_name)
end
- def setup
+ def setup_post
@post = Post.new
def @post.errors
Class.new {
@@ -50,6 +56,34 @@ class ActiveRecordHelperTest < Test::Unit::TestCase
@post.body = "Back to the hill and over it again!"
@post.secret = 1
@post.written_on = Date.new(2004, 6, 15)
+ end
+
+ def setup_user
+ @user = User.new
+ def @user.errors
+ Class.new {
+ def on(field) field == "email" end
+ def empty?() false end
+ def count() 1 end
+ def full_messages() [ "User email can't be empty" ] end
+ }.new
+ end
+
+ def @user.new_record?() true end
+ def @user.to_param() nil end
+
+ def @user.column_for_attribute(attr_name)
+ User.content_columns.select { |column| column.name == attr_name }.first
+ end
+
+ def User.content_columns() [ Column.new(:string, "email", "Email") ] end
+
+ @user.email = ""
+ end
+
+ def setup
+ setup_post
+ setup_user
@controller = Object.new
def @controller.url_for(options, *parameters_for_method_reference)
@@ -124,6 +158,22 @@ class ActiveRecordHelperTest < Test::Unit::TestCase
assert_equal "", error_messages_for("notthere")
end
+ def test_error_messages_for_many_objects
+ assert_dom_equal %(2 errors prohibited this post from being saved
There were problems with the following fields:
- Author name can't be empty
- User email can't be empty
), error_messages_for("post", "user")
+
+ # reverse the order, error order changes and so does the title
+ assert_dom_equal %(2 errors prohibited this user from being saved
There were problems with the following fields:
- User email can't be empty
- Author name can't be empty
), error_messages_for("user", "post")
+
+ # add the default to put post back in the title
+ assert_dom_equal %(2 errors prohibited this post from being saved
There were problems with the following fields:
- User email can't be empty
- Author name can't be empty
), error_messages_for("user", "post", :object_name => "post")
+
+ # symbols work as well
+ assert_dom_equal %(2 errors prohibited this post from being saved
There were problems with the following fields:
- User email can't be empty
- Author name can't be empty
), error_messages_for(:user, :post, :object_name => :post)
+
+ # any default works too
+ assert_dom_equal %(2 errors prohibited this monkey from being saved
There were problems with the following fields:
- User email can't be empty
- Author name can't be empty
), error_messages_for(:user, :post, :object_name => "monkey")
+ end
+
def test_form_with_string_multipart
assert_dom_equal(
%(
),
--
cgit v1.2.3