Work around enumerable string deprecation warnings

This commit is contained in:
Jeremy Kemper
2009-02-06 09:18:41 -08:00
parent 86dd2f841d
commit 86dcfdc1fb

View File

@@ -32,12 +32,15 @@ module ActiveSupport
# post :delete, :id => ...
# end
def assert_difference(expressions, difference = 1, message = nil, &block)
expression_evaluations = Array(expressions).collect{ |expression| lambda { eval(expression, block.send(:binding)) } }
original_values = expression_evaluations.inject([]) { |memo, expression| memo << expression.call }
yield
expression_evaluations.each_with_index do |expression, i|
assert_equal original_values[i] + difference, expression.call, message
case expressions
when String
before = eval(expressions, block.send(:binding))
yield
assert_equal(before + difference, eval(expressions, block.send(:binding)), message)
when Enumerable
expressions.each { |e| assert_difference(e, difference, message, &block) }
else
raise ArgumentError, "Unrecognized expression: #{expressions.inspect}"
end
end