mocha 1.4.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.rubocop.yml +58 -0
- data/.rubocop_todo.yml +50 -0
- data/README.md +12 -71
- data/RELEASE.md +19 -0
- data/Rakefile +35 -28
- data/bin/build-matrix +17 -18
- data/lib/mocha/any_instance_method.rb +19 -25
- data/lib/mocha/api.rb +1 -5
- data/lib/mocha/argument_iterator.rb +4 -8
- data/lib/mocha/backtrace_filter.rb +1 -5
- data/lib/mocha/cardinality.rb +20 -27
- data/lib/mocha/central.rb +21 -12
- data/lib/mocha/change_state_side_effect.rb +0 -4
- data/lib/mocha/class_method.rb +31 -37
- data/lib/mocha/class_methods.rb +11 -15
- data/lib/mocha/configuration.rb +69 -10
- data/lib/mocha/debug.rb +3 -2
- data/lib/mocha/deprecation.rb +4 -11
- data/lib/mocha/detection/mini_test.rb +0 -2
- data/lib/mocha/detection/test_unit.rb +4 -4
- data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
- data/lib/mocha/exception_raiser.rb +2 -5
- data/lib/mocha/expectation.rb +15 -18
- data/lib/mocha/expectation_error.rb +2 -0
- data/lib/mocha/expectation_error_factory.rb +0 -1
- data/lib/mocha/expectation_list.rb +2 -6
- data/lib/mocha/hooks.rb +1 -3
- data/lib/mocha/in_state_ordering_constraint.rb +0 -4
- data/lib/mocha/inspect.rb +3 -5
- data/lib/mocha/instance_method.rb +0 -2
- data/lib/mocha/integration/mini_test/adapter.rb +2 -4
- data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
- data/lib/mocha/integration/mini_test/nothing.rb +4 -4
- data/lib/mocha/integration/mini_test/version_13.rb +4 -1
- data/lib/mocha/integration/mini_test/version_140.rb +4 -1
- data/lib/mocha/integration/mini_test/version_141.rb +4 -1
- data/lib/mocha/integration/mini_test/version_142_to_172.rb +4 -1
- data/lib/mocha/integration/mini_test/version_200.rb +4 -1
- data/lib/mocha/integration/mini_test/version_201_to_222.rb +4 -1
- data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +4 -1
- data/lib/mocha/integration/mini_test/version_2112_to_320.rb +4 -1
- data/lib/mocha/integration/mini_test/version_230_to_2101.rb +4 -1
- data/lib/mocha/integration/monkey_patcher.rb +5 -7
- data/lib/mocha/integration/test_unit/adapter.rb +5 -6
- data/lib/mocha/integration/test_unit/gem_version_200.rb +5 -2
- data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +5 -2
- data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +5 -2
- data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +5 -2
- data/lib/mocha/integration/test_unit/nothing.rb +4 -4
- data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +4 -1
- data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +4 -1
- data/lib/mocha/integration.rb +3 -4
- data/lib/mocha/is_a.rb +0 -2
- data/lib/mocha/logger.rb +0 -4
- data/lib/mocha/method_matcher.rb +1 -5
- data/lib/mocha/minitest.rb +1 -1
- data/lib/mocha/mock.rb +25 -30
- data/lib/mocha/mockery.rb +62 -43
- data/lib/mocha/module_method.rb +0 -10
- data/lib/mocha/module_methods.rb +0 -4
- data/lib/mocha/multiple_yields.rb +0 -5
- data/lib/mocha/names.rb +1 -11
- data/lib/mocha/no_yields.rb +1 -7
- data/lib/mocha/not_initialized_error.rb +7 -0
- data/lib/mocha/object_methods.rb +16 -16
- data/lib/mocha/parameter_matchers/all_of.rb +1 -7
- data/lib/mocha/parameter_matchers/any_of.rb +1 -7
- data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
- data/lib/mocha/parameter_matchers/anything.rb +2 -8
- data/lib/mocha/parameter_matchers/base.rb +6 -12
- data/lib/mocha/parameter_matchers/equals.rb +0 -6
- data/lib/mocha/parameter_matchers/equivalent_uri.rb +6 -6
- data/lib/mocha/parameter_matchers/has_entries.rb +2 -6
- data/lib/mocha/parameter_matchers/has_entry.rb +8 -11
- data/lib/mocha/parameter_matchers/has_key.rb +2 -6
- data/lib/mocha/parameter_matchers/has_value.rb +2 -6
- data/lib/mocha/parameter_matchers/includes.rb +2 -6
- data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
- data/lib/mocha/parameter_matchers/is_a.rb +2 -6
- data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
- data/lib/mocha/parameter_matchers/not.rb +2 -6
- data/lib/mocha/parameter_matchers/object.rb +0 -2
- data/lib/mocha/parameter_matchers/optionally.rb +4 -10
- data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
- data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
- data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
- data/lib/mocha/parameter_matchers.rb +0 -2
- data/lib/mocha/parameters_matcher.rb +6 -9
- data/lib/mocha/pretty_parameters.rb +0 -4
- data/lib/mocha/receivers.rb +10 -14
- data/lib/mocha/return_values.rb +3 -7
- data/lib/mocha/sequence.rb +4 -9
- data/lib/mocha/single_return_value.rb +0 -4
- data/lib/mocha/single_yield.rb +0 -5
- data/lib/mocha/state_machine.rb +6 -10
- data/lib/mocha/stubbing_error.rb +2 -13
- data/lib/mocha/test_unit.rb +1 -1
- data/lib/mocha/thrower.rb +2 -5
- data/lib/mocha/unexpected_invocation.rb +3 -5
- data/lib/mocha/version.rb +1 -1
- data/lib/mocha/yield_parameters.rb +3 -7
- data/mocha.gemspec +34 -58
- data/test/acceptance/acceptance_test_helper.rb +0 -6
- data/test/acceptance/bug_18914_test.rb +7 -12
- data/test/acceptance/bug_21465_test.rb +0 -2
- data/test/acceptance/bug_21563_test.rb +0 -2
- data/test/acceptance/exception_rescue_test.rb +7 -8
- data/test/acceptance/expectations_on_multiple_methods_test.rb +2 -1
- data/test/acceptance/expected_invocation_count_test.rb +27 -29
- data/test/acceptance/failure_messages_test.rb +3 -5
- data/test/acceptance/issue_272_test.rb +0 -1
- data/test/acceptance/issue_65_test.rb +15 -13
- data/test/acceptance/issue_70_test.rb +0 -1
- data/test/acceptance/mocha_example_test.rb +5 -6
- data/test/acceptance/mocha_test_result_test.rb +7 -7
- data/test/acceptance/mock_test.rb +2 -4
- data/test/acceptance/mock_with_initializer_block_test.rb +0 -2
- data/test/acceptance/mocked_methods_dispatch_test.rb +0 -2
- data/test/acceptance/multiple_expectations_failure_message_test.rb +16 -17
- data/test/acceptance/optional_parameters_test.rb +0 -2
- data/test/acceptance/parameter_matcher_test.rb +2 -3
- data/test/acceptance/partial_mocks_test.rb +4 -6
- data/test/acceptance/prepend_test.rb +14 -16
- data/test/acceptance/prevent_use_of_mocha_outside_test_test.rb +77 -0
- data/test/acceptance/raise_exception_test.rb +2 -4
- data/test/acceptance/return_value_test.rb +0 -2
- data/test/acceptance/sequence_test.rb +9 -11
- data/test/acceptance/states_test.rb +6 -4
- data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +33 -2
- data/test/acceptance/stub_any_instance_method_test.rb +19 -17
- data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +8 -8
- data/test/acceptance/stub_class_method_defined_on_class_test.rb +2 -1
- data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -1
- data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +34 -1
- data/test/acceptance/stub_everything_test.rb +1 -3
- data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +6 -7
- data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -1
- data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -1
- data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +63 -1
- data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -1
- data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +2 -1
- data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -2
- data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -1
- data/test/acceptance/stub_module_method_test.rb +13 -13
- data/test/acceptance/stub_test.rb +1 -3
- data/test/acceptance/stubba_example_test.rb +6 -14
- data/test/acceptance/stubba_test_result_test.rb +5 -8
- data/test/acceptance/stubbing_error_backtrace_test.rb +2 -2
- data/test/acceptance/stubbing_frozen_object_test.rb +2 -1
- data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +12 -7
- data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -2
- data/test/acceptance/stubbing_nil_test.rb +4 -5
- data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +1 -3
- data/test/acceptance/stubbing_non_existent_class_method_test.rb +3 -3
- data/test/acceptance/stubbing_non_existent_instance_method_test.rb +1 -3
- data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -2
- data/test/acceptance/stubbing_non_public_class_method_test.rb +3 -3
- data/test/acceptance/stubbing_non_public_instance_method_test.rb +1 -3
- data/test/acceptance/stubbing_on_non_mock_object_test.rb +4 -10
- data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +3 -4
- data/test/acceptance/throw_test.rb +0 -2
- data/test/acceptance/unexpected_invocation_test.rb +2 -3
- data/test/acceptance/unstubbing_test.rb +41 -14
- data/test/deprecation_disabler.rb +0 -1
- data/test/execution_point.rb +2 -4
- data/test/integration/mini_test_test.rb +2 -2
- data/test/integration/shared_tests.rb +24 -22
- data/test/integration/test_unit_test.rb +2 -2
- data/test/method_definer.rb +1 -3
- data/test/mini_test_result.rb +17 -11
- data/test/minitest_result.rb +0 -1
- data/test/simple_counter.rb +0 -2
- data/test/test_helper.rb +13 -5
- data/test/test_runner.rb +2 -4
- data/test/test_unit_result.rb +4 -2
- data/test/unit/any_instance_method_test.rb +31 -17
- data/test/unit/array_inspect_test.rb +2 -4
- data/test/unit/backtrace_filter_test.rb +3 -5
- data/test/unit/cardinality_test.rb +0 -2
- data/test/unit/central_test.rb +26 -27
- data/test/unit/change_state_side_effect_test.rb +0 -4
- data/test/unit/class_method_test.rb +59 -34
- data/test/unit/class_methods_test.rb +34 -5
- data/test/unit/configuration_test.rb +1 -2
- data/test/unit/date_time_inspect_test.rb +1 -3
- data/test/unit/exception_raiser_test.rb +0 -2
- data/test/unit/expectation_list_test.rb +0 -2
- data/test/unit/expectation_test.rb +41 -46
- data/test/unit/hash_inspect_test.rb +3 -5
- data/test/unit/hooks_test.rb +14 -8
- data/test/unit/in_state_ordering_constraint_test.rb +0 -4
- data/test/unit/method_matcher_test.rb +1 -3
- data/test/unit/mock_test.rb +35 -22
- data/test/unit/mockery_test.rb +45 -28
- data/test/unit/module_methods_test.rb +0 -2
- data/test/unit/multiple_yields_test.rb +0 -2
- data/test/unit/no_yields_test.rb +0 -2
- data/test/unit/object_inspect_test.rb +16 -7
- data/test/unit/object_methods_test.rb +22 -6
- data/test/unit/parameter_matchers/all_of_test.rb +0 -2
- data/test/unit/parameter_matchers/any_of_test.rb +0 -2
- data/test/unit/parameter_matchers/anything_test.rb +2 -4
- data/test/unit/parameter_matchers/equals_test.rb +1 -3
- data/test/unit/parameter_matchers/equivalent_uri_test.rb +0 -1
- data/test/unit/parameter_matchers/has_entries_test.rb +2 -2
- data/test/unit/parameter_matchers/has_entry_test.rb +13 -14
- data/test/unit/parameter_matchers/has_key_test.rb +0 -1
- data/test/unit/parameter_matchers/has_value_test.rb +0 -2
- data/test/unit/parameter_matchers/includes_test.rb +8 -9
- data/test/unit/parameter_matchers/instance_of_test.rb +1 -3
- data/test/unit/parameter_matchers/is_a_test.rb +1 -3
- data/test/unit/parameter_matchers/kind_of_test.rb +1 -3
- data/test/unit/parameter_matchers/not_test.rb +0 -2
- data/test/unit/parameter_matchers/regexp_matches_test.rb +1 -2
- data/test/unit/parameter_matchers/responds_with_test.rb +9 -3
- data/test/unit/parameter_matchers/stub_matcher.rb +0 -4
- data/test/unit/parameter_matchers/yaml_equivalent_test.rb +1 -3
- data/test/unit/parameters_matcher_test.rb +2 -4
- data/test/unit/receivers_test.rb +35 -5
- data/test/unit/return_values_test.rb +3 -5
- data/test/unit/sequence_test.rb +1 -5
- data/test/unit/single_return_value_test.rb +0 -2
- data/test/unit/single_yield_test.rb +0 -2
- data/test/unit/state_machine_test.rb +1 -3
- data/test/unit/string_inspect_test.rb +2 -4
- data/test/unit/thrower_test.rb +0 -2
- data/test/unit/yield_parameters_test.rb +0 -2
- data/yard-templates/default/layout/html/setup.rb +2 -3
- metadata +25 -6
data/test/unit/mockery_test.rb
CHANGED
@@ -5,36 +5,50 @@ require 'mocha/expectation_error_factory'
|
|
5
5
|
require 'deprecation_disabler'
|
6
6
|
|
7
7
|
class MockeryTest < Mocha::TestCase
|
8
|
-
|
9
8
|
include Mocha
|
10
9
|
include DeprecationDisabler
|
11
10
|
|
12
|
-
def
|
11
|
+
def setup
|
12
|
+
Mockery.setup
|
13
|
+
end
|
14
|
+
|
15
|
+
def teardown
|
16
|
+
Mockery.teardown
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_should_return_null_mockery_if_not_setup
|
20
|
+
Mockery.teardown
|
21
|
+
mockery = Mockery.instance
|
22
|
+
assert_not_nil mockery
|
23
|
+
assert_kind_of Mockery::Null, mockery
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_should_return_instance_of_mockery
|
13
27
|
mockery = Mockery.instance
|
14
28
|
assert_not_nil mockery
|
15
29
|
assert_kind_of Mockery, mockery
|
16
30
|
end
|
17
31
|
|
18
32
|
def test_should_cache_instance_of_mockery
|
19
|
-
|
20
|
-
|
21
|
-
assert_same
|
33
|
+
mockery1 = Mockery.instance
|
34
|
+
mockery2 = Mockery.instance
|
35
|
+
assert_same mockery1, mockery2
|
22
36
|
end
|
23
37
|
|
24
38
|
def test_should_expire_mockery_instance_cache
|
25
|
-
|
26
|
-
Mockery.
|
27
|
-
|
28
|
-
assert_not_same
|
39
|
+
mockery1 = Mockery.instance
|
40
|
+
Mockery.teardown
|
41
|
+
mockery2 = Mockery.instance
|
42
|
+
assert_not_same mockery1, mockery2
|
29
43
|
end
|
30
44
|
|
31
45
|
def test_should_raise_expectation_error_because_not_all_expectations_are_satisfied
|
32
46
|
mockery = Mockery.new
|
33
47
|
disable_deprecations do
|
34
|
-
|
35
|
-
|
36
|
-
1.times {
|
37
|
-
0.times {
|
48
|
+
mock1 = mockery.named_mock('mock-1') { expects(:method_1) }
|
49
|
+
mock2 = mockery.named_mock('mock-2') { expects(:method_2) }
|
50
|
+
1.times { mock1.method_1 }
|
51
|
+
0.times { mock2.method_2 }
|
38
52
|
end
|
39
53
|
assert_raises(ExpectationErrorFactory.exception_class) { mockery.verify }
|
40
54
|
end
|
@@ -56,10 +70,10 @@ class MockeryTest < Mocha::TestCase
|
|
56
70
|
|
57
71
|
def test_should_build_new_instance_of_stubba_on_teardown
|
58
72
|
mockery = Mockery.new
|
59
|
-
|
73
|
+
stubba1 = mockery.stubba
|
60
74
|
mockery.teardown
|
61
|
-
|
62
|
-
assert_not_same
|
75
|
+
stubba2 = mockery.stubba
|
76
|
+
assert_not_same stubba1, stubba2
|
63
77
|
end
|
64
78
|
|
65
79
|
def test_should_build_and_store_new_state_machine
|
@@ -78,8 +92,12 @@ class MockeryTest < Mocha::TestCase
|
|
78
92
|
|
79
93
|
class FakeMethod
|
80
94
|
def stub; end
|
95
|
+
|
81
96
|
def unstub; end
|
82
|
-
|
97
|
+
|
98
|
+
def matches?(_other)
|
99
|
+
true
|
100
|
+
end
|
83
101
|
end
|
84
102
|
|
85
103
|
def test_should_unstub_all_methods_on_teardown
|
@@ -93,51 +111,51 @@ class MockeryTest < Mocha::TestCase
|
|
93
111
|
def test_should_display_object_id_for_mocha_inspect_if_mock_has_no_name
|
94
112
|
mockery = Mockery.new
|
95
113
|
mock = mockery.unnamed_mock
|
96
|
-
assert_match Regexp.new(
|
114
|
+
assert_match Regexp.new('^#<Mock:0x[0-9A-Fa-f]{1,12}>$'), mock.mocha_inspect
|
97
115
|
end
|
98
116
|
|
99
117
|
def test_should_display_object_id_for_inspect_if_mock_has_no_name
|
100
118
|
mockery = Mockery.new
|
101
119
|
mock = mockery.unnamed_mock
|
102
|
-
assert_match Regexp.new(
|
120
|
+
assert_match Regexp.new('^#<Mock:0x[0-9A-Fa-f]{1,12}>$'), mock.inspect
|
103
121
|
end
|
104
122
|
|
105
123
|
def test_should_display_name_for_mocha_inspect_if_mock_has_string_name
|
106
124
|
mockery = Mockery.new
|
107
125
|
mock = mockery.named_mock('named_mock')
|
108
|
-
assert_equal
|
126
|
+
assert_equal '#<Mock:named_mock>', mock.mocha_inspect
|
109
127
|
end
|
110
128
|
|
111
129
|
def test_should_display_name_for_mocha_inspect_if_mock_has_symbol_name
|
112
130
|
mockery = Mockery.new
|
113
131
|
mock = mockery.named_mock(:named_mock)
|
114
|
-
assert_equal
|
132
|
+
assert_equal '#<Mock:named_mock>', mock.mocha_inspect
|
115
133
|
end
|
116
134
|
|
117
135
|
def test_should_display_name_for_inspect_if_mock_has_string_name
|
118
136
|
mockery = Mockery.new
|
119
137
|
mock = mockery.named_mock('named_mock')
|
120
|
-
assert_equal
|
138
|
+
assert_equal '#<Mock:named_mock>', mock.inspect
|
121
139
|
end
|
122
140
|
|
123
141
|
def test_should_display_name_for_inspect_if_mock_has_symbol_name
|
124
142
|
mockery = Mockery.new
|
125
143
|
mock = mockery.named_mock(:named_mock)
|
126
|
-
assert_equal
|
144
|
+
assert_equal '#<Mock:named_mock>', mock.inspect
|
127
145
|
end
|
128
146
|
|
129
147
|
def test_should_display_impersonated_object_for_mocha_inspect
|
130
148
|
mockery = Mockery.new
|
131
149
|
instance = Object.new
|
132
150
|
mock = mockery.mock_impersonating(instance)
|
133
|
-
assert_equal
|
151
|
+
assert_equal instance.mocha_inspect.to_s, mock.mocha_inspect
|
134
152
|
end
|
135
153
|
|
136
154
|
def test_should_display_impersonated_object_for_inspect
|
137
155
|
mockery = Mockery.new
|
138
156
|
instance = Object.new
|
139
157
|
mock = mockery.mock_impersonating(instance)
|
140
|
-
assert_equal
|
158
|
+
assert_equal instance.mocha_inspect.to_s, mock.inspect
|
141
159
|
end
|
142
160
|
|
143
161
|
class FakeClass; end
|
@@ -145,13 +163,12 @@ class MockeryTest < Mocha::TestCase
|
|
145
163
|
def test_should_display_any_instance_prefix_followed_by_class_whose_instances_are_being_impersonated_for_mocha_inspect
|
146
164
|
mockery = Mockery.new
|
147
165
|
mock = mockery.mock_impersonating_any_instance_of(FakeClass)
|
148
|
-
assert_equal
|
166
|
+
assert_equal '#<AnyInstance:MockeryTest::FakeClass>', mock.mocha_inspect
|
149
167
|
end
|
150
168
|
|
151
169
|
def test_should_display_any_instance_prefix_followed_by_class_whose_instances_are_being_impersonated_for_inspect
|
152
170
|
mockery = Mockery.new
|
153
171
|
mock = mockery.mock_impersonating_any_instance_of(FakeClass)
|
154
|
-
assert_equal
|
172
|
+
assert_equal '#<AnyInstance:MockeryTest::FakeClass>', mock.inspect
|
155
173
|
end
|
156
|
-
|
157
174
|
end
|
@@ -3,7 +3,6 @@ require 'mocha/module_methods'
|
|
3
3
|
require 'mocha/object_methods'
|
4
4
|
|
5
5
|
class ModuleMethodsTest < Mocha::TestCase
|
6
|
-
|
7
6
|
def setup
|
8
7
|
@module = Module.new.extend(Mocha::ModuleMethods, Mocha::ObjectMethods)
|
9
8
|
end
|
@@ -15,5 +14,4 @@ class ModuleMethodsTest < Mocha::TestCase
|
|
15
14
|
def test_should_stub_self_for_module
|
16
15
|
assert_equal @module, @module.stubba_object
|
17
16
|
end
|
18
|
-
|
19
17
|
end
|
@@ -3,7 +3,6 @@ require File.expand_path('../../test_helper', __FILE__)
|
|
3
3
|
require 'mocha/multiple_yields'
|
4
4
|
|
5
5
|
class MultipleYieldsTest < Mocha::TestCase
|
6
|
-
|
7
6
|
include Mocha
|
8
7
|
|
9
8
|
def test_should_provide_parameters_for_multiple_yields_in_single_invocation
|
@@ -14,5 +13,4 @@ class MultipleYieldsTest < Mocha::TestCase
|
|
14
13
|
end
|
15
14
|
assert_equal [[1, 2, 3], [4, 5]], parameter_groups
|
16
15
|
end
|
17
|
-
|
18
16
|
end
|
data/test/unit/no_yields_test.rb
CHANGED
@@ -3,7 +3,6 @@ require File.expand_path('../../test_helper', __FILE__)
|
|
3
3
|
require 'mocha/no_yields'
|
4
4
|
|
5
5
|
class NoYieldsTest < Mocha::TestCase
|
6
|
-
|
7
6
|
include Mocha
|
8
7
|
|
9
8
|
def test_should_provide_parameters_for_no_yields_in_single_invocation
|
@@ -14,5 +13,4 @@ class NoYieldsTest < Mocha::TestCase
|
|
14
13
|
end
|
15
14
|
assert_equal [], parameter_groups
|
16
15
|
end
|
17
|
-
|
18
16
|
end
|
@@ -4,14 +4,13 @@ require 'mocha/inspect'
|
|
4
4
|
require 'method_definer'
|
5
5
|
|
6
6
|
class ObjectInspectTest < Mocha::TestCase
|
7
|
-
|
8
7
|
def test_should_return_default_string_representation_of_object_not_including_instance_variables
|
9
8
|
object = Object.new
|
10
9
|
class << object
|
11
10
|
attr_accessor :attribute
|
12
11
|
end
|
13
12
|
object.attribute = 'instance_variable'
|
14
|
-
assert_match Regexp.new(
|
13
|
+
assert_match Regexp.new('^#<Object:0x[0-9A-Fa-f]{1,8}.*>$'), object.mocha_inspect
|
15
14
|
assert_no_match(/instance_variable/, object.mocha_inspect)
|
16
15
|
end
|
17
16
|
|
@@ -26,14 +25,24 @@ class ObjectInspectTest < Mocha::TestCase
|
|
26
25
|
def test_should_use_underscored_id_instead_of_object_id_or_id_so_that_they_can_be_stubbed
|
27
26
|
calls = []
|
28
27
|
object = Object.new
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
28
|
+
if Mocha::PRE_RUBY_V19
|
29
|
+
object.replace_instance_method(:id) do
|
30
|
+
calls << :id
|
31
|
+
return 1
|
32
|
+
end
|
33
|
+
end
|
34
|
+
object.replace_instance_method(:object_id) do
|
35
|
+
calls << :object_id
|
36
|
+
return 1
|
37
|
+
end
|
38
|
+
object.replace_instance_method(:__id__) do
|
39
|
+
calls << :__id__
|
40
|
+
return 1
|
41
|
+
end
|
42
|
+
object.replace_instance_method(:inspect) { 'object-description' }
|
33
43
|
|
34
44
|
object.mocha_inspect
|
35
45
|
|
36
46
|
assert_equal [:__id__], calls.uniq
|
37
47
|
end
|
38
|
-
|
39
48
|
end
|
@@ -1,25 +1,42 @@
|
|
1
1
|
require File.expand_path('../../test_helper', __FILE__)
|
2
2
|
require 'mocha/object_methods'
|
3
|
+
require 'mocha/mockery'
|
3
4
|
require 'mocha/mock'
|
4
5
|
require 'mocha/expectation_error_factory'
|
6
|
+
require 'mocha/names'
|
5
7
|
|
6
8
|
class ObjectMethodsTest < Mocha::TestCase
|
7
|
-
|
8
9
|
def setup
|
10
|
+
Mocha::Mockery.setup
|
9
11
|
@object = Object.new.extend(Mocha::ObjectMethods)
|
10
12
|
end
|
11
13
|
|
14
|
+
def teardown
|
15
|
+
Mocha::Mockery.teardown
|
16
|
+
end
|
17
|
+
|
12
18
|
def test_should_build_mocha_referring_to_self
|
13
19
|
mocha = @object.mocha
|
14
20
|
assert_not_nil mocha
|
15
21
|
assert mocha.is_a?(Mocha::Mock)
|
16
|
-
|
22
|
+
expected_name = Mocha::ImpersonatingName.new(@object).mocha_inspect
|
23
|
+
assert_equal expected_name, mocha.mocha_inspect
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_should_not_build_mocha_if_instantiate_is_false
|
27
|
+
assert_nil @object.mocha(false)
|
17
28
|
end
|
18
29
|
|
19
30
|
def test_should_reuse_existing_mocha
|
20
|
-
|
21
|
-
|
22
|
-
assert_equal
|
31
|
+
mocha1 = @object.mocha
|
32
|
+
mocha2 = @object.mocha
|
33
|
+
assert_equal mocha1, mocha2
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_should_reuse_existing_mocha_even_if_instantiate_is_false
|
37
|
+
mocha1 = @object.mocha
|
38
|
+
mocha2 = @object.mocha(false)
|
39
|
+
assert_equal mocha1, mocha2
|
23
40
|
end
|
24
41
|
|
25
42
|
def test_should_reset_mocha
|
@@ -42,5 +59,4 @@ class ObjectMethodsTest < Mocha::TestCase
|
|
42
59
|
klass = Class.new { def self.method_x; end }
|
43
60
|
assert_equal klass._method(:method_x), klass.method(:method_x)
|
44
61
|
end
|
45
|
-
|
46
62
|
end
|
@@ -5,7 +5,6 @@ require 'mocha/inspect'
|
|
5
5
|
require 'stub_matcher'
|
6
6
|
|
7
7
|
class AllOfTest < Mocha::TestCase
|
8
|
-
|
9
8
|
include Mocha::ParameterMatchers
|
10
9
|
|
11
10
|
def test_should_match_if_all_matchers_match
|
@@ -22,5 +21,4 @@ class AllOfTest < Mocha::TestCase
|
|
22
21
|
matcher = all_of(Stub::Matcher.new(true), Stub::Matcher.new(false), Stub::Matcher.new(true))
|
23
22
|
assert_equal 'all_of(matcher(true), matcher(false), matcher(true))', matcher.mocha_inspect
|
24
23
|
end
|
25
|
-
|
26
24
|
end
|
@@ -5,7 +5,6 @@ require 'mocha/inspect'
|
|
5
5
|
require 'stub_matcher'
|
6
6
|
|
7
7
|
class AnyOfTest < Mocha::TestCase
|
8
|
-
|
9
8
|
include Mocha::ParameterMatchers
|
10
9
|
|
11
10
|
def test_should_match_if_any_matchers_match
|
@@ -22,5 +21,4 @@ class AnyOfTest < Mocha::TestCase
|
|
22
21
|
matcher = any_of(Stub::Matcher.new(false), Stub::Matcher.new(true), Stub::Matcher.new(false))
|
23
22
|
assert_equal 'any_of(matcher(false), matcher(true), matcher(false))', matcher.mocha_inspect
|
24
23
|
end
|
25
|
-
|
26
24
|
end
|
@@ -4,18 +4,16 @@ require 'mocha/parameter_matchers/anything'
|
|
4
4
|
require 'mocha/inspect'
|
5
5
|
|
6
6
|
class AnythingTest < Mocha::TestCase
|
7
|
-
|
8
7
|
include Mocha::ParameterMatchers
|
9
8
|
|
10
9
|
def test_should_match_anything
|
11
10
|
matcher = anything
|
12
11
|
assert matcher.matches?([:something])
|
13
|
-
assert matcher.matches?([{'x' => 'y'}])
|
12
|
+
assert matcher.matches?([{ 'x' => 'y' }])
|
14
13
|
end
|
15
14
|
|
16
15
|
def test_should_describe_matcher
|
17
16
|
matcher = anything
|
18
|
-
assert_equal
|
17
|
+
assert_equal 'anything', matcher.mocha_inspect
|
19
18
|
end
|
20
|
-
|
21
19
|
end
|
@@ -4,7 +4,6 @@ require 'mocha/parameter_matchers/equals'
|
|
4
4
|
require 'mocha/inspect'
|
5
5
|
|
6
6
|
class EqualsTest < Mocha::TestCase
|
7
|
-
|
8
7
|
include Mocha::ParameterMatchers
|
9
8
|
|
10
9
|
def test_should_match_object_that_equals_value
|
@@ -19,7 +18,6 @@ class EqualsTest < Mocha::TestCase
|
|
19
18
|
|
20
19
|
def test_should_describe_matcher
|
21
20
|
matcher = equals('x')
|
22
|
-
assert_equal %
|
21
|
+
assert_equal %("x"), matcher.mocha_inspect
|
23
22
|
end
|
24
|
-
|
25
23
|
end
|
@@ -5,7 +5,6 @@ require 'mocha/parameter_matchers/object'
|
|
5
5
|
require 'mocha/inspect'
|
6
6
|
|
7
7
|
class HasEntriesTest < Mocha::TestCase
|
8
|
-
|
9
8
|
include Mocha::ParameterMatchers
|
10
9
|
|
11
10
|
def test_should_match_hash_including_specified_entries
|
@@ -23,7 +22,9 @@ class HasEntriesTest < Mocha::TestCase
|
|
23
22
|
description = matcher.mocha_inspect
|
24
23
|
matches = /has_entries\((.*)\)/.match(description)
|
25
24
|
assert_not_nil matches[0]
|
25
|
+
# rubocop:disable Security/Eval
|
26
26
|
entries = eval(matches[1], binding, __FILE__, __LINE__)
|
27
|
+
# rubocop:enable Security/Eval
|
27
28
|
assert_equal 'value_1', entries[:key_1]
|
28
29
|
assert_equal 'value_2', entries[:key_2]
|
29
30
|
end
|
@@ -47,5 +48,4 @@ class HasEntriesTest < Mocha::TestCase
|
|
47
48
|
matcher = has_entries(:key_1 => equals('value_2'), :key_2 => equals('value_2'), :key_3 => equals('value_3'))
|
48
49
|
assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
|
49
50
|
end
|
50
|
-
|
51
51
|
end
|
@@ -6,7 +6,6 @@ require 'mocha/parameter_matchers/equals'
|
|
6
6
|
require 'mocha/inspect'
|
7
7
|
|
8
8
|
class HasEntryTest < Mocha::TestCase
|
9
|
-
|
10
9
|
include Mocha::ParameterMatchers
|
11
10
|
|
12
11
|
def test_should_match_hash_including_specified_key_value_pair
|
@@ -62,7 +61,7 @@ class HasEntryTest < Mocha::TestCase
|
|
62
61
|
def test_should_not_match_object_that_doesnt_respond_to_keys
|
63
62
|
matcher = has_entry(:key_1 => equals('value_2'))
|
64
63
|
object = Class.new do
|
65
|
-
def [](
|
64
|
+
def [](_key)
|
66
65
|
'value_2'
|
67
66
|
end
|
68
67
|
end.new
|
@@ -81,49 +80,49 @@ class HasEntryTest < Mocha::TestCase
|
|
81
80
|
|
82
81
|
def test_should_raise_argument_error_if_single_argument_is_not_a_hash
|
83
82
|
e = assert_raises(ArgumentError) do
|
84
|
-
has_entry(
|
83
|
+
has_entry([])
|
85
84
|
end
|
86
|
-
assert_equal
|
85
|
+
assert_equal 'Argument is not a Hash.', e.message
|
87
86
|
end
|
88
87
|
|
89
88
|
def test_should_raise_argument_error_if_no_entries_are_supplied
|
90
89
|
e = assert_raises(ArgumentError) do
|
91
90
|
has_entry({})
|
92
91
|
end
|
93
|
-
assert_equal
|
92
|
+
assert_equal 'Argument has no entries.', e.message
|
94
93
|
end
|
95
94
|
|
96
95
|
def test_should_raise_argument_error_if_multiple_entries_are_supplied
|
97
96
|
e = assert_raises(ArgumentError) do
|
98
97
|
has_entry(:key_1 => 'value_1', :key_2 => 'value_2')
|
99
98
|
end
|
100
|
-
assert_equal
|
99
|
+
assert_equal 'Argument has multiple entries. Use Mocha::ParameterMatchers#has_entries instead.', e.message
|
101
100
|
end
|
102
101
|
|
103
102
|
def test_should_raise_argument_error_if_more_than_two_arguments_are_supplied
|
104
103
|
e = assert_raises(ArgumentError) do
|
105
104
|
has_entry(1, 2, 3)
|
106
105
|
end
|
107
|
-
assert_equal
|
106
|
+
assert_equal 'Too many arguments; use either a single argument (must be a Hash) or two arguments (a key and a value).', e.message
|
108
107
|
end
|
109
108
|
|
110
109
|
def test_should_match_array_as_key
|
111
110
|
matcher = has_entry([:key_1, :key_2] => 'value_1')
|
112
|
-
assert matcher.matches?([{[:key_1, :key_2] => 'value_1', :key_3 => 'value_2'}])
|
111
|
+
assert matcher.matches?([{ [:key_1, :key_2] => 'value_1', :key_3 => 'value_2' }])
|
113
112
|
end
|
114
113
|
|
115
114
|
def test_should_match_array_as_value
|
116
|
-
matcher = has_entry(:key_1 => [
|
117
|
-
assert matcher.matches?([{:key_1 => [
|
115
|
+
matcher = has_entry(:key_1 => %w[value_1 value_2])
|
116
|
+
assert matcher.matches?([{ :key_1 => %w[value_1 value_2] }])
|
118
117
|
end
|
119
118
|
|
120
119
|
def test_should_match_hash_as_value_and_key
|
121
|
-
matcher = has_entry({
|
122
|
-
assert matcher.matches?([{{:key_1 => 'value_1', :key_2 => 'value_2'} => {:key_3 => 'value_3', :key_4 => 'value_4'}, :key_5 => 'value_5'}])
|
120
|
+
matcher = has_entry({ :key_1 => 'value_1', :key_2 => 'value_2' } => { :key_3 => 'value_3', :key_4 => 'value_4' })
|
121
|
+
assert matcher.matches?([{ { :key_1 => 'value_1', :key_2 => 'value_2' } => { :key_3 => 'value_3', :key_4 => 'value_4' }, :key_5 => 'value_5' }])
|
123
122
|
end
|
124
123
|
|
125
124
|
def test_should_match_matcher_as_value_and_key
|
126
|
-
matcher = has_entry(
|
127
|
-
assert matcher.matches?([{{:key_1 => 'value_1', :key_2 => 'value_2'} => {:key_3 => 'value_3', :key_4 => 'value_4'}, :key_5 => 'value_5'}])
|
125
|
+
matcher = has_entry(has_entry(:key_1 => 'value_1') => has_entry(:key_3 => 'value_3'))
|
126
|
+
assert matcher.matches?([{ { :key_1 => 'value_1', :key_2 => 'value_2' } => { :key_3 => 'value_3', :key_4 => 'value_4' }, :key_5 => 'value_5' }])
|
128
127
|
end
|
129
128
|
end
|
@@ -6,7 +6,6 @@ require 'mocha/parameter_matchers/equals'
|
|
6
6
|
require 'mocha/inspect'
|
7
7
|
|
8
8
|
class HasValueTest < Mocha::TestCase
|
9
|
-
|
10
9
|
include Mocha::ParameterMatchers
|
11
10
|
|
12
11
|
def test_should_match_hash_including_specified_value
|
@@ -53,5 +52,4 @@ class HasValueTest < Mocha::TestCase
|
|
53
52
|
matcher = has_value('value_1')
|
54
53
|
assert !matcher.matches?(['value_1'])
|
55
54
|
end
|
56
|
-
|
57
55
|
end
|
@@ -7,7 +7,6 @@ require 'mocha/parameter_matchers/regexp_matches'
|
|
7
7
|
require 'mocha/inspect'
|
8
8
|
|
9
9
|
class IncludesTest < Mocha::TestCase
|
10
|
-
|
11
10
|
include Mocha::ParameterMatchers
|
12
11
|
|
13
12
|
def test_should_match_object_including_value
|
@@ -37,12 +36,12 @@ class IncludesTest < Mocha::TestCase
|
|
37
36
|
|
38
37
|
def test_should_describe_matcher_with_one_item
|
39
38
|
matcher = includes(:x)
|
40
|
-
assert_equal
|
39
|
+
assert_equal 'includes(:x)', matcher.mocha_inspect
|
41
40
|
end
|
42
41
|
|
43
42
|
def test_should_describe_matcher_with_multiple_items
|
44
43
|
matcher = includes(:x, :y, :z)
|
45
|
-
assert_equal
|
44
|
+
assert_equal 'includes(:x, :y, :z)', matcher.mocha_inspect
|
46
45
|
end
|
47
46
|
|
48
47
|
def test_should_not_raise_error_on_emtpy_arguments
|
@@ -67,12 +66,12 @@ class IncludesTest < Mocha::TestCase
|
|
67
66
|
|
68
67
|
def test_should_match_object_including_value_which_matches_nested_matcher
|
69
68
|
matcher = includes(has_key(:key))
|
70
|
-
assert matcher.matches?([[:non_matching_element, {:key => 'value'}]])
|
69
|
+
assert matcher.matches?([[:non_matching_element, { :key => 'value' }]])
|
71
70
|
end
|
72
71
|
|
73
72
|
def test_should_not_match_object_which_doesnt_include_value_that_matches_nested_matcher
|
74
73
|
matcher = includes(has_key(:key))
|
75
|
-
assert !matcher.matches?([[:non_matching_element, {:other_key => 'other-value'}]])
|
74
|
+
assert !matcher.matches?([[:non_matching_element, { :other_key => 'other-value' }]])
|
76
75
|
end
|
77
76
|
|
78
77
|
def test_should_match_string_argument_containing_substring
|
@@ -87,21 +86,21 @@ class IncludesTest < Mocha::TestCase
|
|
87
86
|
|
88
87
|
def test_should_match_hash_argument_containing_given_key
|
89
88
|
matcher = includes(:key)
|
90
|
-
assert matcher.matches?([{:thing => 1, :key => 2}])
|
89
|
+
assert matcher.matches?([{ :thing => 1, :key => 2 }])
|
91
90
|
end
|
92
91
|
|
93
92
|
def test_should_not_match_hash_argument_missing_given_key
|
94
93
|
matcher = includes(:key)
|
95
|
-
assert !matcher.matches?([{:thing => 1, :other => :key}])
|
94
|
+
assert !matcher.matches?([{ :thing => 1, :other => :key }])
|
96
95
|
end
|
97
96
|
|
98
97
|
def test_should_match_hash_when_nested_matcher_matches_key
|
99
98
|
matcher = includes(regexp_matches(/ar/))
|
100
|
-
assert matcher.matches?([{'foo' => 1, 'bar' => 2}])
|
99
|
+
assert matcher.matches?([{ 'foo' => 1, 'bar' => 2 }])
|
101
100
|
end
|
102
101
|
|
103
102
|
def test_should_not_match_hash_when_nested_matcher_doesn_not_match_key
|
104
103
|
matcher = includes(regexp_matches(/az/))
|
105
|
-
assert !matcher.matches?([{'foo' => 1, 'bar' => 2}])
|
104
|
+
assert !matcher.matches?([{ 'foo' => 1, 'bar' => 2 }])
|
106
105
|
end
|
107
106
|
end
|
@@ -4,7 +4,6 @@ require 'mocha/parameter_matchers/instance_of'
|
|
4
4
|
require 'mocha/inspect'
|
5
5
|
|
6
6
|
class InstanceOfTest < Mocha::TestCase
|
7
|
-
|
8
7
|
include Mocha::ParameterMatchers
|
9
8
|
|
10
9
|
def test_should_match_object_that_is_an_instance_of_specified_class
|
@@ -19,7 +18,6 @@ class InstanceOfTest < Mocha::TestCase
|
|
19
18
|
|
20
19
|
def test_should_describe_matcher
|
21
20
|
matcher = instance_of(String)
|
22
|
-
assert_equal
|
21
|
+
assert_equal 'instance_of(String)', matcher.mocha_inspect
|
23
22
|
end
|
24
|
-
|
25
23
|
end
|
@@ -4,7 +4,6 @@ require 'mocha/parameter_matchers/is_a'
|
|
4
4
|
require 'mocha/inspect'
|
5
5
|
|
6
6
|
class IsATest < Mocha::TestCase
|
7
|
-
|
8
7
|
include Mocha::ParameterMatchers
|
9
8
|
|
10
9
|
def test_should_match_object_that_is_a_specified_class
|
@@ -19,7 +18,6 @@ class IsATest < Mocha::TestCase
|
|
19
18
|
|
20
19
|
def test_should_describe_matcher
|
21
20
|
matcher = is_a(Integer)
|
22
|
-
assert_equal
|
21
|
+
assert_equal 'is_a(Integer)', matcher.mocha_inspect
|
23
22
|
end
|
24
|
-
|
25
23
|
end
|
@@ -4,7 +4,6 @@ require 'mocha/parameter_matchers/kind_of'
|
|
4
4
|
require 'mocha/inspect'
|
5
5
|
|
6
6
|
class KindOfTest < Mocha::TestCase
|
7
|
-
|
8
7
|
include Mocha::ParameterMatchers
|
9
8
|
|
10
9
|
def test_should_match_object_that_is_a_kind_of_specified_class
|
@@ -19,7 +18,6 @@ class KindOfTest < Mocha::TestCase
|
|
19
18
|
|
20
19
|
def test_should_describe_matcher
|
21
20
|
matcher = kind_of(Integer)
|
22
|
-
assert_equal
|
21
|
+
assert_equal 'kind_of(Integer)', matcher.mocha_inspect
|
23
22
|
end
|
24
|
-
|
25
23
|
end
|
@@ -5,7 +5,6 @@ require 'mocha/inspect'
|
|
5
5
|
require 'stub_matcher'
|
6
6
|
|
7
7
|
class NotTest < Mocha::TestCase
|
8
|
-
|
9
8
|
include Mocha::ParameterMatchers
|
10
9
|
|
11
10
|
def test_should_match_if_matcher_does_not_match
|
@@ -22,5 +21,4 @@ class NotTest < Mocha::TestCase
|
|
22
21
|
matcher = Not(Stub::Matcher.new(true))
|
23
22
|
assert_equal 'Not(matcher(true))', matcher.mocha_inspect
|
24
23
|
end
|
25
|
-
|
26
24
|
end
|
@@ -4,7 +4,6 @@ require 'mocha/parameter_matchers/regexp_matches'
|
|
4
4
|
require 'mocha/inspect'
|
5
5
|
|
6
6
|
class RegexpMatchesTest < Mocha::TestCase
|
7
|
-
|
8
7
|
include Mocha::ParameterMatchers
|
9
8
|
|
10
9
|
def test_should_match_parameter_matching_regular_expression
|
@@ -19,7 +18,7 @@ class RegexpMatchesTest < Mocha::TestCase
|
|
19
18
|
|
20
19
|
def test_should_describe_matcher
|
21
20
|
matcher = regexp_matches(/oo/)
|
22
|
-
assert_equal
|
21
|
+
assert_equal 'regexp_matches(/oo/)', matcher.mocha_inspect
|
23
22
|
end
|
24
23
|
|
25
24
|
def test_should_not_raise_error_on_empty_arguments
|