From 089371ac23f35550676e6c5ac99e789a97101475 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?=
 <rafaelmfranca@gmail.com>
Date: Fri, 20 Jul 2012 14:12:01 -0300
Subject: `validates_inclusion_of` and `validates_exclusion_of` now accept
 `:within` option as alias of `:in` as documented.

Fix #7118
---
 .../cases/validations/exclusion_validation_test.rb | 10 ++++++++++
 .../test/cases/validations/i18n_validation_test.rb | 22 ++++++++++++++++++++++
 .../cases/validations/inclusion_validation_test.rb | 10 ++++++++++
 3 files changed, 42 insertions(+)

(limited to 'activemodel/test')

diff --git a/activemodel/test/cases/validations/exclusion_validation_test.rb b/activemodel/test/cases/validations/exclusion_validation_test.rb
index adab8ccb2b..baccf72ecb 100644
--- a/activemodel/test/cases/validations/exclusion_validation_test.rb
+++ b/activemodel/test/cases/validations/exclusion_validation_test.rb
@@ -28,6 +28,16 @@ class ExclusionValidationTest < ActiveModel::TestCase
     assert_equal ["option monkey is restricted"], t.errors[:title]
   end
 
+  def test_validates_exclusion_of_with_within_option
+    Topic.validates_exclusion_of( :title, :within => %w( abe monkey ) )
+
+    assert Topic.new("title" => "something", "content" => "abc")
+
+    t = Topic.new("title" => "monkey")
+    assert t.invalid?
+    assert t.errors[:title].any?
+  end
+
   def test_validates_exclusion_of_for_ruby_class
     Person.validates_exclusion_of :karma, :in => %w( abe monkey )
 
diff --git a/activemodel/test/cases/validations/i18n_validation_test.rb b/activemodel/test/cases/validations/i18n_validation_test.rb
index e9f0e430fe..b9b5968e17 100644
--- a/activemodel/test/cases/validations/i18n_validation_test.rb
+++ b/activemodel/test/cases/validations/i18n_validation_test.rb
@@ -159,6 +159,17 @@ class I18nValidationTest < ActiveModel::TestCase
     end
   end
 
+  # validates_inclusion_of using :within w/ mocha
+
+  COMMON_CASES.each do |name, validation_options, generate_message_options|
+    test "validates_inclusion_of using :within on generated message #{name}" do
+      Person.validates_inclusion_of :title, validation_options.merge(:within => %w(a b c))
+      @person.title = 'z'
+      @person.errors.expects(:generate_message).with(:title, :inclusion, generate_message_options.merge(:value => 'z'))
+      @person.valid?
+    end
+  end
+
   # validates_exclusion_of w/ mocha
 
   COMMON_CASES.each do |name, validation_options, generate_message_options|
@@ -170,6 +181,17 @@ class I18nValidationTest < ActiveModel::TestCase
     end
   end
 
+  # validates_exclusion_of using :within w/ mocha
+
+  COMMON_CASES.each do |name, validation_options, generate_message_options|
+    test "validates_exclusion_of using :within generated message #{name}" do
+      Person.validates_exclusion_of :title, validation_options.merge(:within => %w(a b c))
+      @person.title = 'a'
+      @person.errors.expects(:generate_message).with(:title, :exclusion, generate_message_options.merge(:value => 'a'))
+      @person.valid?
+    end
+  end
+
   # validates_numericality_of without :only_integer w/ mocha
 
   COMMON_CASES.each do |name, validation_options, generate_message_options|
diff --git a/activemodel/test/cases/validations/inclusion_validation_test.rb b/activemodel/test/cases/validations/inclusion_validation_test.rb
index 851d345eab..c57fa75faf 100644
--- a/activemodel/test/cases/validations/inclusion_validation_test.rb
+++ b/activemodel/test/cases/validations/inclusion_validation_test.rb
@@ -60,6 +60,16 @@ class InclusionValidationTest < ActiveModel::TestCase
     assert_equal ["option uhoh is not in the list"], t.errors[:title]
   end
 
+  def test_validates_inclusion_of_with_within_option
+    Topic.validates_inclusion_of( :title, :within => %w( a b c d e f g ) )
+
+    assert Topic.new("title" => "a", "content" => "abc").valid?
+
+    t = Topic.new("title" => "uhoh", "content" => "abc")
+    assert t.invalid?
+    assert t.errors[:title].any?
+  end
+
   def test_validates_inclusion_of_for_ruby_class
     Person.validates_inclusion_of :karma, :in => %w( abe monkey )
 
-- 
cgit v1.2.3