1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
require 'active_model/cases/test_base'
class ActiveModel::NumericalityValidatorTest < ClientSideValidations::ActiveModelTestBase
def test_numericality_client_side_hash
expected_hash = { :messages => { :numericality => "is not a number" } }
assert_equal expected_hash, NumericalityValidator.new(:attributes => [:age]).client_side_hash(@person, :age)
end
def test_numericality_client_side_hash_with_allow_nil
expected_hash = { :messages => { :numericality => "is not a number" }, :allow_blank => true }
assert_equal expected_hash, NumericalityValidator.new(:attributes => [:age], :allow_nil => true).client_side_hash(@person, :age)
end
def test_numericality_client_side_hash_with_custom_message
expected_hash = { :messages => { :numericality => "bad number" } }
assert_equal expected_hash, NumericalityValidator.new(:attributes => [:age], :message => "bad number").client_side_hash(@person, :age)
end
def test_numericality_client_side_hash_with_options
expected_hash = {
:messages => {
:numericality => "is not a number",
:only_integer => "must be an integer",
:greater_than => "must be greater than 10",
:greater_than_or_equal_to => "must be greater than or equal to 10",
:equal_to => "must be equal to 10",
:less_than => "must be less than 10",
:less_than_or_equal_to => "must be less than or equal to 10",
:odd => "must be odd",
:even => "must be even"
},
:only_integer => true,
:greater_than => 10,
:greater_than_or_equal_to => 10,
:equal_to => 10,
:less_than => 10,
:less_than_or_equal_to => 10,
:odd => true,
:even => true
}
test_hash = NumericalityValidator.new(:attributes => [:age],
:only_integer => true, :greater_than => 10, :greater_than_or_equal_to => 10,
:equal_to => 10, :less_than => 10, :less_than_or_equal_to => 10,
:odd => true, :even => true).client_side_hash(@person, :age)
assert_equal expected_hash, test_hash
end
def test_numericality_message_always_present
expected_hash = { :messages => { :numericality => 'is not a number', :only_integer => 'must be an integer' }, :only_integer => true }
assert_equal expected_hash, NumericalityValidator.new(:attributes => [:age], :only_integer => true).client_side_hash(@person, :age)
end
def test_numericality_client_side_hash_ignore_proc
@person.stubs(:years).returns(5)
expected_hash = { :messages => { :numericality => "is not a number" } }
assert_equal expected_hash, NumericalityValidator.new(:attributes => [:age], :equal_to => Proc.new { |o| o.years }).client_side_hash(@person, :age)
end
def test_numericality_client_side_hash_observe_proc
@person.stubs(:years).returns(5)
expected_hash = { :messages => { :numericality => "is not a number", :equal_to => 'must be equal to 5' }, :equal_to => 5 }
assert_equal expected_hash, NumericalityValidator.new(:attributes => [:age], :equal_to => Proc.new { |o| o.years }).client_side_hash(@person, :age, true)
end
end
|