File: test_numericality_validator.rb

package info (click to toggle)
ruby-client-side-validations 3.2.6%2Bgh-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 676 kB
  • sloc: javascript: 3,019; ruby: 2,959; makefile: 2
file content (67 lines) | stat: -rw-r--r-- 3,088 bytes parent folder | download | duplicates (3)
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