aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/test
diff options
context:
space:
mode:
authorkakipo <kakipo@gmail.com>2014-08-03 14:50:09 +0900
committerkakipo <kakipo@gmail.com>2014-08-03 14:50:09 +0900
commitc3fa5c3d25d9148d2806db577a2261032b341c34 (patch)
tree02db6c7a7a53bc153dd7bf900c551a16bc351403 /activemodel/test
parentf57cd78a738e1c8cf5a932686e67cd72fdbef301 (diff)
downloadrails-c3fa5c3d25d9148d2806db577a2261032b341c34.tar.gz
rails-c3fa5c3d25d9148d2806db577a2261032b341c34.tar.bz2
rails-c3fa5c3d25d9148d2806db577a2261032b341c34.zip
Allow symbol as values for `tokenize` of `LengthValidator`
Diffstat (limited to 'activemodel/test')
-rw-r--r--activemodel/test/cases/validations/length_validation_test.rb13
-rw-r--r--activemodel/test/models/topic.rb4
2 files changed, 17 insertions, 0 deletions
diff --git a/activemodel/test/cases/validations/length_validation_test.rb b/activemodel/test/cases/validations/length_validation_test.rb
index 046ffcb16f..3fa9f9274c 100644
--- a/activemodel/test/cases/validations/length_validation_test.rb
+++ b/activemodel/test/cases/validations/length_validation_test.rb
@@ -331,6 +331,19 @@ class LengthValidationTest < ActiveModel::TestCase
assert_equal ["Your essay must be at least 5 words."], t.errors[:content]
end
+
+ def test_validates_length_of_with_symbol
+ Topic.validates_length_of :content, minimum: 5, too_short: "Your essay must be at least %{count} words.",
+ tokenizer: :my_word_tokenizer
+ t = Topic.new(content: "this content should be long enough")
+ assert t.valid?
+
+ t.content = "not long enough"
+ assert t.invalid?
+ assert t.errors[:content].any?
+ assert_equal ["Your essay must be at least 5 words."], t.errors[:content]
+ end
+
def test_validates_length_of_for_fixnum
Topic.validates_length_of(:approved, is: 4)
diff --git a/activemodel/test/models/topic.rb b/activemodel/test/models/topic.rb
index 1411a093e9..fed50bc361 100644
--- a/activemodel/test/models/topic.rb
+++ b/activemodel/test/models/topic.rb
@@ -37,4 +37,8 @@ class Topic
errors.add attr, "is missing" unless send(attr)
end
+ def my_word_tokenizer(str)
+ str.scan(/\w+/)
+ end
+
end