1 # frozen_string_literal: true
5 class LeadingWhitespaceValidatable
6 include ActiveModel::Validations
8 validates :string, :whitespace => { :leading => false }
12 class TrailingWhitespaceValidatable
13 include ActiveModel::Validations
15 validates :string, :whitespace => { :trailing => false }
19 class WhitespaceValidatorTest < ActiveSupport::TestCase
20 include Rails::Dom::Testing::Assertions::SelectorAssertions
22 def test_with_leading_whitespace
23 validator = LeadingWhitespaceValidatable.new
25 strings = [" ", " test", " ", "\ttest"]
29 assert_not_predicate validator, :valid?, "'#{v}' should not be valid"
33 def test_without_leading_whitespace
34 validator = LeadingWhitespaceValidatable.new
36 strings = ["test", "test ", "t est", "test\t", ".test", "_test"]
40 assert_predicate validator, :valid?, "'#{v}' should be valid"
44 def test_with_trailing_whitespace
45 validator = TrailingWhitespaceValidatable.new
47 strings = [" ", "test ", " ", "test\t", "_test_ "]
51 assert_not_predicate validator, :valid?, "'#{v}' should not be valid"
55 def test_without_trailing_whitespace
56 validator = TrailingWhitespaceValidatable.new
58 strings = ["test", " test", "tes t", "\ttest", "test.", "test_"]
62 assert_predicate validator, :valid?, "'#{v}' should be valid"