Module: SimplyTestable::Assertions::InstanceMethods

Defined in:
lib/simply_testable/assertions.rb

Overview

ClassMethods

Instance Method Summary collapse

Instance Method Details

#assert_changes(expression, message = nil, &block) ⇒ Object

basically a copy of assert_difference, but without any explicit comparison as it is simply stating that something will change (designed for updated_at)



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/simply_testable/assertions.rb', line 18

def assert_changes(expression, message = nil, &block)
	b = block.send(:binding)
	exps = Array.wrap(expression)
	before = exps.map { |e| eval(e, b) }
	yield
	exps.each_with_index do |e, i|
		error = "#{e.inspect} didn't change"
		error = "#{message}.\n#{error}" if message
		assert_not_equal(before[i], eval(e, b), error)
	end
end

#deny_changes(expression, message = nil, &block) ⇒ Object

Just a negation of assert_changes



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/simply_testable/assertions.rb', line 31

def deny_changes(expression, message = nil, &block)
	b = block.send(:binding)
	exps = Array.wrap(expression)
	before = exps.map { |e| eval(e, b) }
	yield
	exps.each_with_index do |e, i|
		error = "#{e.inspect} changed"
		error = "#{message}.\n#{error}" if message
		assert_equal(before[i], eval(e, b), error)
	end
end