class NumericalityValidationTest
Constants
- BIGDECIMAL
- BIGDECIMAL_STRINGS
- BLANK
- FLOATS
- FLOAT_STRINGS
- INFINITY
- INTEGERS
- INTEGER_STRINGS
- JUNK
- NIL
Public Instance Methods
teardown()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 12 def teardown Topic.clear_validators! end
test_default_validates_numericality_of()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 27 def test_default_validates_numericality_of Topic.validates_numericality_of :approved invalid!(NIL + BLANK + JUNK) valid!(FLOATS + INTEGERS + BIGDECIMAL + INFINITY) end
test_validates_numericality_of_for_ruby_class()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 250 def test_validates_numericality_of_for_ruby_class Person.validates_numericality_of :karma, allow_nil: false p = Person.new p.karma = "Pix" assert p.invalid? assert_equal ["is not a number"], p.errors[:karma] p.karma = "1234" assert p.valid? ensure Person.clear_validators! end
test_validates_numericality_of_with_blank_allowed()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 40 def test_validates_numericality_of_with_blank_allowed Topic.validates_numericality_of :approved, allow_blank: true invalid!(JUNK) valid!(NIL + BLANK + FLOATS + INTEGERS + BIGDECIMAL + INFINITY) end
test_validates_numericality_of_with_integer_only()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 47 def test_validates_numericality_of_with_integer_only Topic.validates_numericality_of :approved, only_integer: true invalid!(NIL + BLANK + JUNK + FLOATS + BIGDECIMAL + INFINITY) valid!(INTEGERS) end
test_validates_numericality_of_with_integer_only_and_nil_allowed()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 54 def test_validates_numericality_of_with_integer_only_and_nil_allowed Topic.validates_numericality_of :approved, only_integer: true, allow_nil: true invalid!(JUNK + BLANK + FLOATS + BIGDECIMAL + INFINITY) valid!(NIL + INTEGERS) end
test_validates_numericality_of_with_integer_only_and_proc_as_value()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 68 def test_validates_numericality_of_with_integer_only_and_proc_as_value Topic.send(:define_method, :allow_only_integers?, lambda { false }) Topic.validates_numericality_of :approved, only_integer: Proc.new(&:allow_only_integers?) invalid!(NIL + BLANK + JUNK) valid!(FLOATS + INTEGERS + BIGDECIMAL + INFINITY) end
test_validates_numericality_of_with_integer_only_and_symbol_as_value()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 61 def test_validates_numericality_of_with_integer_only_and_symbol_as_value Topic.validates_numericality_of :approved, only_integer: :condition_is_true_but_its_not invalid!(NIL + BLANK + JUNK) valid!(FLOATS + INTEGERS + BIGDECIMAL + INFINITY) end
test_validates_numericality_of_with_nil_allowed()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 33 def test_validates_numericality_of_with_nil_allowed Topic.validates_numericality_of :approved, allow_nil: true invalid!(JUNK + BLANK) valid!(NIL + FLOATS + INTEGERS + BIGDECIMAL + INFINITY) end
test_validates_numericality_with_equal_to()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 118 def test_validates_numericality_with_equal_to Topic.validates_numericality_of :approved, equal_to: 10 invalid!([-10, 11] + INFINITY, "must be equal to 10") valid!([10]) end
test_validates_numericality_with_equal_to_using_differing_numeric_types()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 125 def test_validates_numericality_with_equal_to_using_differing_numeric_types Topic.validates_numericality_of :approved, equal_to: BigDecimal.new("97.18") invalid!([-97.18], "must be equal to 97.18") valid!([BigDecimal.new("97.18")]) end
test_validates_numericality_with_equal_to_using_string_value()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 132 def test_validates_numericality_with_equal_to_using_string_value Topic.validates_numericality_of :approved, equal_to: 10 invalid!(["-10", "9", "9.9", "10.1", "11"], "must be equal to 10") valid!(["10"]) end
test_validates_numericality_with_even()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 188 def test_validates_numericality_with_even Topic.validates_numericality_of :approved, even: true invalid!([-1, 1], "must be even") valid!([-2, 2]) end
test_validates_numericality_with_exponent_number()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 265 def test_validates_numericality_with_exponent_number base = 10_000_000_000_000_000 Topic.validates_numericality_of :approved, less_than_or_equal_to: base topic = Topic.new topic.approved = (base + 1).to_s assert topic.invalid? end
test_validates_numericality_with_greater_than()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 76 def test_validates_numericality_with_greater_than Topic.validates_numericality_of :approved, greater_than: 10 invalid!([-10, 10], "must be greater than 10") valid!([11]) end
test_validates_numericality_with_greater_than_less_than_and_even()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 195 def test_validates_numericality_with_greater_than_less_than_and_even Topic.validates_numericality_of :approved, greater_than: 1, less_than: 4, even: true invalid!([1, 3, 4]) valid!([2]) end
test_validates_numericality_with_greater_than_or_equal()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 97 def test_validates_numericality_with_greater_than_or_equal Topic.validates_numericality_of :approved, greater_than_or_equal_to: 10 invalid!([-9, 9], "must be greater than or equal to 10") valid!([10]) end
test_validates_numericality_with_greater_than_or_equal_using_differing_numeric_types()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 104 def test_validates_numericality_with_greater_than_or_equal_using_differing_numeric_types Topic.validates_numericality_of :approved, greater_than_or_equal_to: BigDecimal.new("97.18") invalid!([-97.18, 97.17, 97, BigDecimal.new("97.17"), BigDecimal.new("-97.18")], "must be greater than or equal to 97.18") valid!([97.18, 98, BigDecimal.new("97.19")]) end
test_validates_numericality_with_greater_than_or_equal_using_string_value()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 111 def test_validates_numericality_with_greater_than_or_equal_using_string_value Topic.validates_numericality_of :approved, greater_than_or_equal_to: 10 invalid!(["-10", "9", "9.9"], "must be greater than or equal to 10") valid!(["10", "10.1", "11"]) end
test_validates_numericality_with_greater_than_using_differing_numeric_types()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 83 def test_validates_numericality_with_greater_than_using_differing_numeric_types Topic.validates_numericality_of :approved, greater_than: BigDecimal.new("97.18") invalid!([-97.18, BigDecimal.new("97.18"), BigDecimal("-97.18")], "must be greater than 97.18") valid!([97.19, 98, BigDecimal.new("98"), BigDecimal.new("97.19")]) end
test_validates_numericality_with_greater_than_using_string_value()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 90 def test_validates_numericality_with_greater_than_using_string_value Topic.validates_numericality_of :approved, greater_than: 10 invalid!(["-10", "9", "9.9", "10"], "must be greater than 10") valid!(["10.1", "11"]) end
test_validates_numericality_with_invalid_args()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 274 def test_validates_numericality_with_invalid_args assert_raise(ArgumentError) { Topic.validates_numericality_of :approved, greater_than_or_equal_to: "foo" } assert_raise(ArgumentError) { Topic.validates_numericality_of :approved, less_than_or_equal_to: "foo" } assert_raise(ArgumentError) { Topic.validates_numericality_of :approved, greater_than: "foo" } assert_raise(ArgumentError) { Topic.validates_numericality_of :approved, less_than: "foo" } assert_raise(ArgumentError) { Topic.validates_numericality_of :approved, equal_to: "foo" } end
test_validates_numericality_with_less_than()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 139 def test_validates_numericality_with_less_than Topic.validates_numericality_of :approved, less_than: 10 invalid!([10], "must be less than 10") valid!([-9, 9]) end
test_validates_numericality_with_less_than_or_equal_to()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 160 def test_validates_numericality_with_less_than_or_equal_to Topic.validates_numericality_of :approved, less_than_or_equal_to: 10 invalid!([11], "must be less than or equal to 10") valid!([-10, 10]) end
test_validates_numericality_with_less_than_or_equal_to_using_differing_numeric_types()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 167 def test_validates_numericality_with_less_than_or_equal_to_using_differing_numeric_types Topic.validates_numericality_of :approved, less_than_or_equal_to: BigDecimal.new("97.18") invalid!([97.19, 98], "must be less than or equal to 97.18") valid!([-97.18, BigDecimal.new("-97.18"), BigDecimal.new("97.18")]) end
test_validates_numericality_with_less_than_or_equal_using_string_value()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 174 def test_validates_numericality_with_less_than_or_equal_using_string_value Topic.validates_numericality_of :approved, less_than_or_equal_to: 10 invalid!(["10.1", "11"], "must be less than or equal to 10") valid!(["-10", "9", "9.9", "10"]) end
test_validates_numericality_with_less_than_using_differing_numeric_types()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 146 def test_validates_numericality_with_less_than_using_differing_numeric_types Topic.validates_numericality_of :approved, less_than: BigDecimal.new("97.18") invalid!([97.18, BigDecimal.new("97.18")], "must be less than 97.18") valid!([-97.0, 97.0, -97, 97, BigDecimal.new("-97"), BigDecimal.new("97")]) end
test_validates_numericality_with_less_than_using_string_value()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 153 def test_validates_numericality_with_less_than_using_string_value Topic.validates_numericality_of :approved, less_than: 10 invalid!(["10", "10.1", "11"], "must be less than 10") valid!(["-10", "9", "9.9"]) end
test_validates_numericality_with_numeric_message()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 236 def test_validates_numericality_with_numeric_message Topic.validates_numericality_of :approved, less_than: 4, message: "smaller than %{count}" topic = Topic.new("title" => "numeric test", "approved" => 10) assert !topic.valid? assert_equal ["smaller than 4"], topic.errors[:approved] Topic.validates_numericality_of :approved, greater_than: 4, message: "greater than %{count}" topic = Topic.new("title" => "numeric test", "approved" => 1) assert !topic.valid? assert_equal ["greater than 4"], topic.errors[:approved] end
test_validates_numericality_with_odd()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 181 def test_validates_numericality_with_odd Topic.validates_numericality_of :approved, odd: true invalid!([-2, 2], "must be odd") valid!([-1, 1]) end
test_validates_numericality_with_other_than()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 202 def test_validates_numericality_with_other_than Topic.validates_numericality_of :approved, other_than: 0 invalid!([0, 0.0]) valid!([-1, 42]) end
test_validates_numericality_with_other_than_using_string_value()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 209 def test_validates_numericality_with_other_than_using_string_value Topic.validates_numericality_of :approved, other_than: 0 invalid!(["0", "0.0"]) valid!(["-1", "1.1", "42"]) end
test_validates_numericality_with_proc()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 216 def test_validates_numericality_with_proc Topic.send(:define_method, :min_approved, lambda { 5 }) Topic.validates_numericality_of :approved, greater_than_or_equal_to: Proc.new(&:min_approved) invalid!([3, 4]) valid!([5, 6]) ensure Topic.send(:remove_method, :min_approved) end
test_validates_numericality_with_symbol()
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 226 def test_validates_numericality_with_symbol Topic.send(:define_method, :max_approved, lambda { 5 }) Topic.validates_numericality_of :approved, less_than_or_equal_to: :max_approved invalid!([6]) valid!([4, 5]) ensure Topic.send(:remove_method, :max_approved) end
Private Instance Methods
invalid!(values, error = nil)
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 284 def invalid!(values, error = nil) with_each_topic_approved_value(values) do |topic, value| assert topic.invalid?, "#{value.inspect} not rejected as a number" assert topic.errors[:approved].any?, "FAILED for #{value.inspect}" assert_equal error, topic.errors[:approved].first if error end end
valid!(values)
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 292 def valid!(values) with_each_topic_approved_value(values) do |topic, value| assert topic.valid?, "#{value.inspect} not accepted as a number with validation error: #{topic.errors[:approved].first}" end end
with_each_topic_approved_value(values) { |topic, value| ... }
click to toggle source
# File activemodel/test/cases/validations/numericality_validation_test.rb, line 298 def with_each_topic_approved_value(values) topic = Topic.new(title: "numeric test", content: "whatever") values.each do |value| topic.approved = value yield topic, value end end