2017-07-09 08:06:36 -04:00
|
|
|
# frozen_string_literal: true
|
2017-07-10 09:39:13 -04:00
|
|
|
|
2016-08-06 12:03:25 -04:00
|
|
|
require "abstract_unit"
|
2015-07-05 08:41:03 -04:00
|
|
|
|
|
|
|
class MethodCallAssertionsTest < ActiveSupport::TestCase
|
|
|
|
class Level
|
|
|
|
def increment; 1; end
|
|
|
|
def decrement; end
|
|
|
|
def <<(arg); end
|
|
|
|
end
|
|
|
|
|
|
|
|
setup do
|
|
|
|
@object = Level.new
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_called_with_defaults_to_expect_once
|
|
|
|
assert_called @object, :increment do
|
|
|
|
@object.increment
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_called_more_than_once
|
|
|
|
assert_called(@object, :increment, times: 2) do
|
|
|
|
@object.increment
|
|
|
|
@object.increment
|
|
|
|
end
|
2015-08-15 04:44:55 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_called_method_with_arguments
|
|
|
|
assert_called(@object, :<<) do
|
|
|
|
@object << 2
|
|
|
|
end
|
2015-08-15 08:08:18 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_called_returns
|
|
|
|
assert_called(@object, :increment, returns: 10) do
|
|
|
|
assert_equal 10, @object.increment
|
|
|
|
end
|
2018-08-14 01:52:42 -04:00
|
|
|
|
|
|
|
assert_equal 1, @object.increment
|
2015-07-05 08:41:03 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_called_failure
|
|
|
|
error = assert_raises(Minitest::Assertion) do
|
|
|
|
assert_called(@object, :increment) do
|
|
|
|
# Call nothing...
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
assert_equal "Expected increment to be called 1 times, but was called 0 times.\nExpected: 1\n Actual: 0", error.message
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_called_with_message
|
|
|
|
error = assert_raises(Minitest::Assertion) do
|
2016-08-06 12:03:25 -04:00
|
|
|
assert_called(@object, :increment, "dang it") do
|
2015-07-05 08:41:03 -04:00
|
|
|
# Call nothing...
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
assert_match(/dang it.\nExpected increment/, error.message)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_called_with_arguments
|
|
|
|
assert_called_with(@object, :<<, [ 2 ]) do
|
|
|
|
@object << 2
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-08-14 01:52:42 -04:00
|
|
|
def test_assert_called_with_arguments_and_returns
|
|
|
|
assert_called_with(@object, :<<, [ 2 ], returns: 10) do
|
|
|
|
assert_equal(10, @object << 2)
|
|
|
|
end
|
|
|
|
|
|
|
|
assert_nil(@object << 2)
|
|
|
|
end
|
|
|
|
|
2015-07-05 08:41:03 -04:00
|
|
|
def test_assert_called_with_failure
|
|
|
|
assert_raises(MockExpectationError) do
|
|
|
|
assert_called_with(@object, :<<, [ 4567 ]) do
|
|
|
|
@object << 2
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2015-07-10 17:24:47 -04:00
|
|
|
def test_assert_called_with_multiple_expected_arguments
|
|
|
|
assert_called_with(@object, :<<, [ [ 1 ], [ 2 ] ]) do
|
|
|
|
@object << 1
|
|
|
|
@object << 2
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-07-23 07:16:45 -04:00
|
|
|
def test_assert_called_on_instance_of_with_defaults_to_expect_once
|
|
|
|
assert_called_on_instance_of Level, :increment do
|
|
|
|
@object.increment
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_called_on_instance_of_more_than_once
|
|
|
|
assert_called_on_instance_of(Level, :increment, times: 2) do
|
|
|
|
@object.increment
|
|
|
|
@object.increment
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_called_on_instance_of_with_arguments
|
|
|
|
assert_called_on_instance_of(Level, :<<) do
|
|
|
|
@object << 2
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_called_on_instance_of_returns
|
|
|
|
assert_called_on_instance_of(Level, :increment, returns: 10) do
|
|
|
|
assert_equal 10, @object.increment
|
|
|
|
end
|
|
|
|
|
|
|
|
assert_equal 1, @object.increment
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_called_on_instance_of_failure
|
|
|
|
error = assert_raises(Minitest::Assertion) do
|
|
|
|
assert_called_on_instance_of(Level, :increment) do
|
|
|
|
# Call nothing...
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
assert_equal "Expected increment to be called 1 times, but was called 0 times.\nExpected: 1\n Actual: 0", error.message
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_called_on_instance_of_with_message
|
|
|
|
error = assert_raises(Minitest::Assertion) do
|
|
|
|
assert_called_on_instance_of(Level, :increment, "dang it") do
|
|
|
|
# Call nothing...
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
assert_match(/dang it.\nExpected increment/, error.message)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_called_on_instance_of_nesting
|
|
|
|
assert_called_on_instance_of(Level, :increment, times: 3) do
|
|
|
|
assert_called_on_instance_of(Level, :decrement, times: 2) do
|
|
|
|
@object.increment
|
|
|
|
@object.decrement
|
|
|
|
@object.increment
|
|
|
|
@object.decrement
|
|
|
|
@object.increment
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2015-07-05 08:41:03 -04:00
|
|
|
def test_assert_not_called
|
|
|
|
assert_not_called(@object, :decrement) do
|
|
|
|
@object.increment
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_not_called_failure
|
|
|
|
error = assert_raises(Minitest::Assertion) do
|
|
|
|
assert_not_called(@object, :increment) do
|
|
|
|
@object.increment
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
assert_equal "Expected increment to be called 0 times, but was called 1 times.\nExpected: 0\n Actual: 1", error.message
|
|
|
|
end
|
2015-07-25 10:20:15 -04:00
|
|
|
|
2018-07-23 07:16:45 -04:00
|
|
|
def test_assert_not_called_on_instance_of
|
|
|
|
assert_not_called_on_instance_of(Level, :decrement) do
|
|
|
|
@object.increment
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_not_called_on_instance_of_failure
|
|
|
|
error = assert_raises(Minitest::Assertion) do
|
|
|
|
assert_not_called_on_instance_of(Level, :increment) do
|
|
|
|
@object.increment
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
assert_equal "Expected increment to be called 0 times, but was called 1 times.\nExpected: 0\n Actual: 1", error.message
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_assert_not_called_on_instance_of_nesting
|
|
|
|
assert_not_called_on_instance_of(Level, :increment) do
|
|
|
|
assert_not_called_on_instance_of(Level, :decrement) do
|
|
|
|
# Call nothing...
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2015-07-25 10:20:15 -04:00
|
|
|
def test_stub_any_instance
|
|
|
|
stub_any_instance(Level) do |instance|
|
|
|
|
assert_equal instance, Level.new
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_stub_any_instance_with_instance
|
|
|
|
stub_any_instance(Level, instance: @object) do |instance|
|
|
|
|
assert_equal @object, instance
|
|
|
|
assert_equal instance, Level.new
|
|
|
|
end
|
|
|
|
end
|
2015-07-05 08:41:03 -04:00
|
|
|
end
|