]> git.openstreetmap.org Git - rails.git/blobdiff - test/validators/whitespace_validator_test.rb
Merge leading and trailing whitespace validators
[rails.git] / test / validators / whitespace_validator_test.rb
diff --git a/test/validators/whitespace_validator_test.rb b/test/validators/whitespace_validator_test.rb
new file mode 100644 (file)
index 0000000..c908538
--- /dev/null
@@ -0,0 +1,61 @@
+require "test_helper"
+
+class LeadingWhitespaceValidatable
+  include ActiveModel::Validations
+  validates :string, :whitespace => { :leading => false }
+  attr_accessor :string
+end
+
+class TrailingWhitespaceValidatable
+  include ActiveModel::Validations
+  validates :string, :whitespace => { :trailing => false }
+  attr_accessor :string
+end
+
+class WhitespaceValidatorTest < ActiveSupport::TestCase
+  include Rails::Dom::Testing::Assertions::SelectorAssertions
+
+  def test_with_leading_whitespace
+    validator = LeadingWhitespaceValidatable.new
+
+    strings = [" ", " test", "  ", "\ttest"]
+
+    strings.each do |v|
+      validator.string = v
+      assert_not validator.valid?, "'#{v}' should not be valid"
+    end
+  end
+
+  def test_without_leading_whitespace
+    validator = LeadingWhitespaceValidatable.new
+
+    strings = ["test", "test ", "t est", "test\t", ".test", "_test"]
+
+    strings.each do |v|
+      validator.string = v
+      assert validator.valid?, "'#{v}' should be valid"
+    end
+  end
+
+  def test_with_trailing_whitespace
+    validator = TrailingWhitespaceValidatable.new
+
+    strings = [" ", "test ", "  ", "test\t", "_test_ "]
+
+    strings.each do |v|
+      validator.string = v
+      assert_not validator.valid?, "'#{v}' should not be valid"
+    end
+  end
+
+  def test_without_trailing_whitespace
+    validator = TrailingWhitespaceValidatable.new
+
+    strings = ["test", " test", "tes t", "\ttest", "test.", "test_"]
+
+    strings.each do |v|
+      validator.string = v
+      assert validator.valid?, "'#{v}' should be valid"
+    end
+  end
+end