module ActiveSupport::Testing::Assertions
def assert_no_changes(expression, message = nil, &block)
post :create, params: { status: { ok: false } }
assert_no_changes -> { Status.all_good? }, 'Expected the status to be good' do
An error message can be specified.
end
post :create, params: { status: { ok: true } }
assert_no_changes 'Status.all_good?' do
and after invoking the passed in block.
Assertion that the result of evaluating an expression is not changed before
def assert_no_changes(expression, message = nil, &block) exp = expression.respond_to?(:call) ? expression : -> { eval(expression.to_s, block.binding) } before = exp.call retval = yield after = exp.call error = "#{expression.inspect} did change to #{after}" error = "#{message}.\n#{error}" if message assert before == after, error retval end