aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib
diff options
context:
space:
mode:
authorKasper Timm Hansen <kaspth@gmail.com>2018-08-22 18:20:25 +0200
committerGitHub <noreply@github.com>2018-08-22 18:20:25 +0200
commit9136bb77a73a9374078f850af056225172f1f211 (patch)
tree0f28f17619d703e46358713704e3a55495c8a735 /activesupport/lib
parentb7294944547c984bb92864493435b516e68bd623 (diff)
parent7d13e9de50e10ab49342ecff429d21d677560826 (diff)
downloadrails-9136bb77a73a9374078f850af056225172f1f211.tar.gz
rails-9136bb77a73a9374078f850af056225172f1f211.tar.bz2
rails-9136bb77a73a9374078f850af056225172f1f211.zip
Merge pull request #33162 from utilum/stop_using_mocha
Stop using Mocha
Diffstat (limited to 'activesupport/lib')
-rw-r--r--activesupport/lib/active_support/testing/method_call_assertions.rb29
1 files changed, 29 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
index c6358002ea..fdc70e1cd3 100644
--- a/activesupport/lib/active_support/testing/method_call_assertions.rb
+++ b/activesupport/lib/active_support/testing/method_call_assertions.rb
@@ -35,6 +35,35 @@ module ActiveSupport
assert_called(object, method_name, message, times: 0, &block)
end
+ # TODO: No need to resort to #send once support for Ruby 2.4 is
+ # dropped.
+ def assert_called_on_instance_of(klass, method_name, message = nil, times: 1, returns: nil)
+ times_called = 0
+ klass.send(:define_method, "stubbed_#{method_name}") do |*|
+ times_called += 1
+
+ returns
+ end
+
+ klass.send(:alias_method, "original_#{method_name}", method_name)
+ klass.send(:alias_method, method_name, "stubbed_#{method_name}")
+
+ 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
+ ensure
+ klass.send(:alias_method, method_name, "original_#{method_name}")
+ klass.send(:undef_method, "original_#{method_name}")
+ klass.send(:undef_method, "stubbed_#{method_name}")
+ end
+
+ def assert_not_called_on_instance_of(klass, method_name, message = nil, &block)
+ assert_called_on_instance_of(klass, method_name, message, times: 0, &block)
+ end
+
def stub_any_instance(klass, instance: klass.new)
klass.stub(:new, instance) { yield instance }
end