]> git.openstreetmap.org Git - rails.git/blob - test/validators/whitespace_validator_test.rb
Merge remote-tracking branch 'upstream/pull/4293'
[rails.git] / test / validators / whitespace_validator_test.rb
1 require "test_helper"
2
3 class LeadingWhitespaceValidatable
4   include ActiveModel::Validations
5   validates :string, :whitespace => { :leading => false }
6   attr_accessor :string
7 end
8
9 class TrailingWhitespaceValidatable
10   include ActiveModel::Validations
11   validates :string, :whitespace => { :trailing => false }
12   attr_accessor :string
13 end
14
15 class WhitespaceValidatorTest < ActiveSupport::TestCase
16   include Rails::Dom::Testing::Assertions::SelectorAssertions
17
18   def test_with_leading_whitespace
19     validator = LeadingWhitespaceValidatable.new
20
21     strings = [" ", " test", "  ", "\ttest"]
22
23     strings.each do |v|
24       validator.string = v
25       assert_not validator.valid?, "'#{v}' should not be valid"
26     end
27   end
28
29   def test_without_leading_whitespace
30     validator = LeadingWhitespaceValidatable.new
31
32     strings = ["test", "test ", "t est", "test\t", ".test", "_test"]
33
34     strings.each do |v|
35       validator.string = v
36       assert_predicate validator, :valid?, "'#{v}' should be valid"
37     end
38   end
39
40   def test_with_trailing_whitespace
41     validator = TrailingWhitespaceValidatable.new
42
43     strings = [" ", "test ", "  ", "test\t", "_test_ "]
44
45     strings.each do |v|
46       validator.string = v
47       assert_not validator.valid?, "'#{v}' should not be valid"
48     end
49   end
50
51   def test_without_trailing_whitespace
52     validator = TrailingWhitespaceValidatable.new
53
54     strings = ["test", " test", "tes t", "\ttest", "test.", "test_"]
55
56     strings.each do |v|
57       validator.string = v
58       assert_predicate validator, :valid?, "'#{v}' should be valid"
59     end
60   end
61 end