1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
# frozen_string_literal: true
require "abstract_unit"
require "active_support/testing/method_call_assertions"
class MethodCallAssertionsTest < ActiveSupport::TestCase
include ActiveSupport::Testing::MethodCallAssertions
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
end
def test_assert_called_method_with_arguments
assert_called(@object, :<<) do
@object << 2
end
end
def test_assert_called_returns
assert_called(@object, :increment, returns: 10) do
assert_equal 10, @object.increment
end
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
assert_called(@object, :increment, "dang it") do
# Call nothing...
end
end
assert_match(/dang it.\nExpected increment/, error.message)
end
def test_assert_called_with
assert_called_with(@object, :increment) do
@object.increment
end
end
def test_assert_called_with_arguments
assert_called_with(@object, :<<, [ 2 ]) do
@object << 2
end
end
def test_assert_called_with_failure
assert_raises(MockExpectationError) do
assert_called_with(@object, :<<, [ 4567 ]) do
@object << 2
end
end
end
def test_assert_called_with_returns
assert_called_with(@object, :increment, returns: 1) do
@object.increment
end
end
def test_assert_called_with_multiple_expected_arguments
assert_called_with(@object, :<<, [ [ 1 ], [ 2 ] ]) do
@object << 1
@object << 2
end
end
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
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
end
|