aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib
diff options
context:
space:
mode:
authorKasper Timm Hansen <kaspth@gmail.com>2015-07-05 14:41:03 +0200
committerKasper Timm Hansen <kaspth@gmail.com>2015-07-08 21:15:27 +0200
commit53f64c0fb27349541ded62946d66c429fbef86fa (patch)
treed6a8869586306e2ed03c06da54ca215063d8c0e6 /activesupport/lib
parent798ad25f76bf6c954eb2923adb0452137b8f9925 (diff)
downloadrails-53f64c0fb27349541ded62946d66c429fbef86fa.tar.gz
rails-53f64c0fb27349541ded62946d66c429fbef86fa.tar.bz2
rails-53f64c0fb27349541ded62946d66c429fbef86fa.zip
Add method call assertions for internal use.
Add `assert_called` and `assert_not_called` to boil down the boilerplate we need to write to assert methods are called certain number of times.
Diffstat (limited to 'activesupport/lib')
-rw-r--r--activesupport/lib/active_support/testing/method_call_assertions.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/testing/method_call_assertions.rb b/activesupport/lib/active_support/testing/method_call_assertions.rb
new file mode 100644
index 0000000000..0d7d62341c
--- /dev/null
+++ b/activesupport/lib/active_support/testing/method_call_assertions.rb
@@ -0,0 +1,30 @@
+module ActiveSupport
+ module Testing
+ module MethodCallAssertions # :nodoc:
+ private
+ def assert_called(object, method_name, message = nil, times: 1)
+ times_called = 0
+
+ object.stub(method_name, -> { times_called += 1 }) { yield }
+
+ error = "Expected #{method_name} to be called #{times} times, " \
+ "but was called #{times_called} times"
+ error = "#{message}.\n#{error}" if message
+ assert_equal times, times_called, error
+ end
+
+ def assert_called_with(object, method_name, args = [], returns: nil)
+ mock = Minitest::Mock.new
+ mock.expect(:call, returns, args)
+
+ object.stub(method_name, mock) { yield }
+
+ mock.verify
+ end
+
+ def assert_not_called(object, method_name, message = nil, &block)
+ assert_called(object, method_name, message, times: 0, &block)
+ end
+ end
+ end
+end \ No newline at end of file