Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

New assertion: assert_present [#4299 state:committed]

Signed-off-by: Xavier Noria <fxn@hashref.com>
  • Loading branch information...
commit 589deb39c79cac40eec40d4ee3d86fac16c1f31f 1 parent 7212c29
Juanjo Bazán xuanxu authored fxn committed
7 activesupport/lib/active_support/testing/assertions.rb
View
@@ -69,6 +69,13 @@ def assert_no_difference(expression, message = nil, &block)
def assert_blank(object)
assert object.blank?, "#{object.inspect} is not blank"
end
+
+ # Test if an expression is not blank. Passes if object.present? is true.
+ #
+ # assert_present {:data => 'x' } # => true
+ def assert_present(object)
+ assert object.present?, "#{object.inspect} is blank"
+ end
end
end
end
22 activesupport/test/test_test.rb
View
@@ -96,7 +96,7 @@ def empty?() false; end
class AssertBlankTest < ActiveSupport::TestCase
BLANK = [ EmptyTrue.new, nil, false, '', ' ', " \n\t \r ", [], {} ]
- NOT_BLANK = [ EmptyFalse.new, Object.new, true, 0, 1, 'j', [nil], { nil => 0 } ]
+ NOT_BLANK = [ EmptyFalse.new, Object.new, true, 0, 1, 'x', [nil], { nil => 0 } ]
def test_assert_blank_true
BLANK.each { |v| assert_blank v }
@@ -114,6 +114,26 @@ def test_assert_blank_false
end
end
+class AssertPresentTest < ActiveSupport::TestCase
+ BLANK = [ EmptyTrue.new, nil, false, '', ' ', " \n\t \r ", [], {} ]
+ NOT_BLANK = [ EmptyFalse.new, Object.new, true, 0, 1, 'x', [nil], { nil => 0 } ]
+
+ def test_assert_blank_true
+ NOT_BLANK.each { |v| assert_present v }
+ end
+
+ def test_assert_blank_false
+ BLANK.each { |v|
+ begin
+ assert_present v
+ fail 'should not get to here'
+ rescue Exception => e
+ assert_match(/is blank/, e.message)
+ end
+ }
+ end
+end
+
# These should always pass
if ActiveSupport::Testing.const_defined?(:Default)
class NotTestingThingsTest < Test::Unit::TestCase

2 comments on commit 589deb3

Kieran Pilkington

This, along with the other assert_blank needs active_support/core_ext/object/blank require please. People need to remember these else it leads to patchy support for pulling in only what you need,

Xavier Noria
Owner

Added now, thank you Kieran!

Please sign in to comment.
Something went wrong with that request. Please try again.