Skip to content

Commit

Permalink
feat: allow negative integers in validation (#17)
Browse files Browse the repository at this point in the history
  • Loading branch information
Salman778 committed Mar 12, 2024
1 parent 6885411 commit 5ba2ec2
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 3 deletions.
8 changes: 5 additions & 3 deletions lib/mini_defender/rules/integer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ def self.signature
end

def coerce(value)
value.to_i
Integer(value)
end

def passes?(attribute, value, validator)
value.is_a?(Integer) || value.is_a?(String) && value.match?(/^\d+$/)
end
Integer(value.to_s)
rescue
false
end

def message(attribute, value, validator)
"The value must be an integer."
Expand Down
34 changes: 34 additions & 0 deletions test/rules/integer_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,39 @@
require 'test_helper'

class IntegerTest < Minitest::Test
def setup
@rule = MiniDefender::Rules::Integer.new
end

def test_passes_with_string_positive_integer
assert(@rule.passes?("test", "10", nil))
end

def test_passes_with_string_negative_integer
assert(@rule.passes?("test", "-10", nil))
end

def test_fails_with_float
refute(@rule.passes?("test", 10.5, nil))
end

def test_fails_with_string_float
refute(@rule.passes?("test", "10.5", nil))
end

def test_fails_with_non_numeric_string
refute(@rule.passes?("test", "not a number", nil))
end

def test_fails_with_nil
refute(@rule.passes?("test", nil, nil))
end

def test_fails_with_array
refute(@rule.passes?("test", [], nil))
end

def test_fails_with_hash
refute(@rule.passes?("test", {}, nil))
end
end

0 comments on commit 5ba2ec2

Please sign in to comment.