Skip to content

Instantly share code, notes, and snippets.

@paneq
Created December 29, 2010 11:32
Show Gist options
  • Save paneq/758442 to your computer and use it in GitHub Desktop.
Save paneq/758442 to your computer and use it in GitHub Desktop.
Useful assertions for unit testing.
module Test::Unit::Extensions
module AssertDifferences
# assert_stable_count(Person) <=> assert_no_difference("Person.count")
def assert_stable_count(expression, &block)
assert_same_count(expressify_class(expression), &block)
end
# assert_removed(Person) <=> assert_difference("Person.count", -1)
def assert_removed(expression, counter = 1, &block)
assert_less(expressify_class(expression), counter, &block)
end
# assert_added(Person) <=> assert_difference("Person.count", 1)
def assert_added(expression, counter = 1, &block)
assert_more(expressify_class(expression), counter, &block)
end
# assert_same_count("Person") <=> assert_no_difference("Person.count")
def assert_same_count(expression, &block)
assert_no_difference(countify_expression(expression), &block)
end
# assert_less("Person") <=> assert_difference("Person.count", -1)
def assert_less(expression, counter = 1, &block)
assert_difference(countify_expression(expression), counter * -1, &block)
end
# assert_more("Person") <=> assert_difference("Person.count", 1)
def assert_more(expression, counter = 1, &block)
assert_difference(countify_expression(expression), counter, &block)
end
protected
def expressify_class(expression)
return expression.name if expression.is_a?(Class)
return expression
end
def countify_expression(expression)
expression + ".count"
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment