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.
Files changed (230) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +58 -0
  3. data/.rubocop_todo.yml +50 -0
  4. data/README.md +12 -71
  5. data/RELEASE.md +19 -0
  6. data/Rakefile +35 -28
  7. data/bin/build-matrix +17 -18
  8. data/lib/mocha/any_instance_method.rb +19 -25
  9. data/lib/mocha/api.rb +1 -5
  10. data/lib/mocha/argument_iterator.rb +4 -8
  11. data/lib/mocha/backtrace_filter.rb +1 -5
  12. data/lib/mocha/cardinality.rb +20 -27
  13. data/lib/mocha/central.rb +21 -12
  14. data/lib/mocha/change_state_side_effect.rb +0 -4
  15. data/lib/mocha/class_method.rb +31 -37
  16. data/lib/mocha/class_methods.rb +11 -15
  17. data/lib/mocha/configuration.rb +69 -10
  18. data/lib/mocha/debug.rb +3 -2
  19. data/lib/mocha/deprecation.rb +4 -11
  20. data/lib/mocha/detection/mini_test.rb +0 -2
  21. data/lib/mocha/detection/test_unit.rb +4 -4
  22. data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
  23. data/lib/mocha/exception_raiser.rb +2 -5
  24. data/lib/mocha/expectation.rb +15 -18
  25. data/lib/mocha/expectation_error.rb +2 -0
  26. data/lib/mocha/expectation_error_factory.rb +0 -1
  27. data/lib/mocha/expectation_list.rb +2 -6
  28. data/lib/mocha/hooks.rb +1 -3
  29. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  30. data/lib/mocha/inspect.rb +3 -5
  31. data/lib/mocha/instance_method.rb +0 -2
  32. data/lib/mocha/integration/mini_test/adapter.rb +2 -4
  33. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  34. data/lib/mocha/integration/mini_test/nothing.rb +4 -4
  35. data/lib/mocha/integration/mini_test/version_13.rb +4 -1
  36. data/lib/mocha/integration/mini_test/version_140.rb +4 -1
  37. data/lib/mocha/integration/mini_test/version_141.rb +4 -1
  38. data/lib/mocha/integration/mini_test/version_142_to_172.rb +4 -1
  39. data/lib/mocha/integration/mini_test/version_200.rb +4 -1
  40. data/lib/mocha/integration/mini_test/version_201_to_222.rb +4 -1
  41. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +4 -1
  42. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +4 -1
  43. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +4 -1
  44. data/lib/mocha/integration/monkey_patcher.rb +5 -7
  45. data/lib/mocha/integration/test_unit/adapter.rb +5 -6
  46. data/lib/mocha/integration/test_unit/gem_version_200.rb +5 -2
  47. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +5 -2
  48. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +5 -2
  49. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +5 -2
  50. data/lib/mocha/integration/test_unit/nothing.rb +4 -4
  51. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +4 -1
  52. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +4 -1
  53. data/lib/mocha/integration.rb +3 -4
  54. data/lib/mocha/is_a.rb +0 -2
  55. data/lib/mocha/logger.rb +0 -4
  56. data/lib/mocha/method_matcher.rb +1 -5
  57. data/lib/mocha/minitest.rb +1 -1
  58. data/lib/mocha/mock.rb +25 -30
  59. data/lib/mocha/mockery.rb +62 -43
  60. data/lib/mocha/module_method.rb +0 -10
  61. data/lib/mocha/module_methods.rb +0 -4
  62. data/lib/mocha/multiple_yields.rb +0 -5
  63. data/lib/mocha/names.rb +1 -11
  64. data/lib/mocha/no_yields.rb +1 -7
  65. data/lib/mocha/not_initialized_error.rb +7 -0
  66. data/lib/mocha/object_methods.rb +16 -16
  67. data/lib/mocha/parameter_matchers/all_of.rb +1 -7
  68. data/lib/mocha/parameter_matchers/any_of.rb +1 -7
  69. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  70. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  71. data/lib/mocha/parameter_matchers/base.rb +6 -12
  72. data/lib/mocha/parameter_matchers/equals.rb +0 -6
  73. data/lib/mocha/parameter_matchers/equivalent_uri.rb +6 -6
  74. data/lib/mocha/parameter_matchers/has_entries.rb +2 -6
  75. data/lib/mocha/parameter_matchers/has_entry.rb +8 -11
  76. data/lib/mocha/parameter_matchers/has_key.rb +2 -6
  77. data/lib/mocha/parameter_matchers/has_value.rb +2 -6
  78. data/lib/mocha/parameter_matchers/includes.rb +2 -6
  79. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  80. data/lib/mocha/parameter_matchers/is_a.rb +2 -6
  81. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  82. data/lib/mocha/parameter_matchers/not.rb +2 -6
  83. data/lib/mocha/parameter_matchers/object.rb +0 -2
  84. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  85. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  86. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  87. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  88. data/lib/mocha/parameter_matchers.rb +0 -2
  89. data/lib/mocha/parameters_matcher.rb +6 -9
  90. data/lib/mocha/pretty_parameters.rb +0 -4
  91. data/lib/mocha/receivers.rb +10 -14
  92. data/lib/mocha/return_values.rb +3 -7
  93. data/lib/mocha/sequence.rb +4 -9
  94. data/lib/mocha/single_return_value.rb +0 -4
  95. data/lib/mocha/single_yield.rb +0 -5
  96. data/lib/mocha/state_machine.rb +6 -10
  97. data/lib/mocha/stubbing_error.rb +2 -13
  98. data/lib/mocha/test_unit.rb +1 -1
  99. data/lib/mocha/thrower.rb +2 -5
  100. data/lib/mocha/unexpected_invocation.rb +3 -5
  101. data/lib/mocha/version.rb +1 -1
  102. data/lib/mocha/yield_parameters.rb +3 -7
  103. data/mocha.gemspec +34 -58
  104. data/test/acceptance/acceptance_test_helper.rb +0 -6
  105. data/test/acceptance/bug_18914_test.rb +7 -12
  106. data/test/acceptance/bug_21465_test.rb +0 -2
  107. data/test/acceptance/bug_21563_test.rb +0 -2
  108. data/test/acceptance/exception_rescue_test.rb +7 -8
  109. data/test/acceptance/expectations_on_multiple_methods_test.rb +2 -1
  110. data/test/acceptance/expected_invocation_count_test.rb +27 -29
  111. data/test/acceptance/failure_messages_test.rb +3 -5
  112. data/test/acceptance/issue_272_test.rb +0 -1
  113. data/test/acceptance/issue_65_test.rb +15 -13
  114. data/test/acceptance/issue_70_test.rb +0 -1
  115. data/test/acceptance/mocha_example_test.rb +5 -6
  116. data/test/acceptance/mocha_test_result_test.rb +7 -7
  117. data/test/acceptance/mock_test.rb +2 -4
  118. data/test/acceptance/mock_with_initializer_block_test.rb +0 -2
  119. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -2
  120. data/test/acceptance/multiple_expectations_failure_message_test.rb +16 -17
  121. data/test/acceptance/optional_parameters_test.rb +0 -2
  122. data/test/acceptance/parameter_matcher_test.rb +2 -3
  123. data/test/acceptance/partial_mocks_test.rb +4 -6
  124. data/test/acceptance/prepend_test.rb +14 -16
  125. data/test/acceptance/prevent_use_of_mocha_outside_test_test.rb +77 -0
  126. data/test/acceptance/raise_exception_test.rb +2 -4
  127. data/test/acceptance/return_value_test.rb +0 -2
  128. data/test/acceptance/sequence_test.rb +9 -11
  129. data/test/acceptance/states_test.rb +6 -4
  130. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +33 -2
  131. data/test/acceptance/stub_any_instance_method_test.rb +19 -17
  132. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +8 -8
  133. data/test/acceptance/stub_class_method_defined_on_class_test.rb +2 -1
  134. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -1
  135. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +34 -1
  136. data/test/acceptance/stub_everything_test.rb +1 -3
  137. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +6 -7
  138. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -1
  139. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -1
  140. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +63 -1
  141. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -1
  142. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +2 -1
  143. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -2
  144. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -1
  145. data/test/acceptance/stub_module_method_test.rb +13 -13
  146. data/test/acceptance/stub_test.rb +1 -3
  147. data/test/acceptance/stubba_example_test.rb +6 -14
  148. data/test/acceptance/stubba_test_result_test.rb +5 -8
  149. data/test/acceptance/stubbing_error_backtrace_test.rb +2 -2
  150. data/test/acceptance/stubbing_frozen_object_test.rb +2 -1
  151. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +12 -7
  152. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -2
  153. data/test/acceptance/stubbing_nil_test.rb +4 -5
  154. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +1 -3
  155. data/test/acceptance/stubbing_non_existent_class_method_test.rb +3 -3
  156. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +1 -3
  157. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -2
  158. data/test/acceptance/stubbing_non_public_class_method_test.rb +3 -3
  159. data/test/acceptance/stubbing_non_public_instance_method_test.rb +1 -3
  160. data/test/acceptance/stubbing_on_non_mock_object_test.rb +4 -10
  161. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +3 -4
  162. data/test/acceptance/throw_test.rb +0 -2
  163. data/test/acceptance/unexpected_invocation_test.rb +2 -3
  164. data/test/acceptance/unstubbing_test.rb +41 -14
  165. data/test/deprecation_disabler.rb +0 -1
  166. data/test/execution_point.rb +2 -4
  167. data/test/integration/mini_test_test.rb +2 -2
  168. data/test/integration/shared_tests.rb +24 -22
  169. data/test/integration/test_unit_test.rb +2 -2
  170. data/test/method_definer.rb +1 -3
  171. data/test/mini_test_result.rb +17 -11
  172. data/test/minitest_result.rb +0 -1
  173. data/test/simple_counter.rb +0 -2
  174. data/test/test_helper.rb +13 -5
  175. data/test/test_runner.rb +2 -4
  176. data/test/test_unit_result.rb +4 -2
  177. data/test/unit/any_instance_method_test.rb +31 -17
  178. data/test/unit/array_inspect_test.rb +2 -4
  179. data/test/unit/backtrace_filter_test.rb +3 -5
  180. data/test/unit/cardinality_test.rb +0 -2
  181. data/test/unit/central_test.rb +26 -27
  182. data/test/unit/change_state_side_effect_test.rb +0 -4
  183. data/test/unit/class_method_test.rb +59 -34
  184. data/test/unit/class_methods_test.rb +34 -5
  185. data/test/unit/configuration_test.rb +1 -2
  186. data/test/unit/date_time_inspect_test.rb +1 -3
  187. data/test/unit/exception_raiser_test.rb +0 -2
  188. data/test/unit/expectation_list_test.rb +0 -2
  189. data/test/unit/expectation_test.rb +41 -46
  190. data/test/unit/hash_inspect_test.rb +3 -5
  191. data/test/unit/hooks_test.rb +14 -8
  192. data/test/unit/in_state_ordering_constraint_test.rb +0 -4
  193. data/test/unit/method_matcher_test.rb +1 -3
  194. data/test/unit/mock_test.rb +35 -22
  195. data/test/unit/mockery_test.rb +45 -28
  196. data/test/unit/module_methods_test.rb +0 -2
  197. data/test/unit/multiple_yields_test.rb +0 -2
  198. data/test/unit/no_yields_test.rb +0 -2
  199. data/test/unit/object_inspect_test.rb +16 -7
  200. data/test/unit/object_methods_test.rb +22 -6
  201. data/test/unit/parameter_matchers/all_of_test.rb +0 -2
  202. data/test/unit/parameter_matchers/any_of_test.rb +0 -2
  203. data/test/unit/parameter_matchers/anything_test.rb +2 -4
  204. data/test/unit/parameter_matchers/equals_test.rb +1 -3
  205. data/test/unit/parameter_matchers/equivalent_uri_test.rb +0 -1
  206. data/test/unit/parameter_matchers/has_entries_test.rb +2 -2
  207. data/test/unit/parameter_matchers/has_entry_test.rb +13 -14
  208. data/test/unit/parameter_matchers/has_key_test.rb +0 -1
  209. data/test/unit/parameter_matchers/has_value_test.rb +0 -2
  210. data/test/unit/parameter_matchers/includes_test.rb +8 -9
  211. data/test/unit/parameter_matchers/instance_of_test.rb +1 -3
  212. data/test/unit/parameter_matchers/is_a_test.rb +1 -3
  213. data/test/unit/parameter_matchers/kind_of_test.rb +1 -3
  214. data/test/unit/parameter_matchers/not_test.rb +0 -2
  215. data/test/unit/parameter_matchers/regexp_matches_test.rb +1 -2
  216. data/test/unit/parameter_matchers/responds_with_test.rb +9 -3
  217. data/test/unit/parameter_matchers/stub_matcher.rb +0 -4
  218. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +1 -3
  219. data/test/unit/parameters_matcher_test.rb +2 -4
  220. data/test/unit/receivers_test.rb +35 -5
  221. data/test/unit/return_values_test.rb +3 -5
  222. data/test/unit/sequence_test.rb +1 -5
  223. data/test/unit/single_return_value_test.rb +0 -2
  224. data/test/unit/single_yield_test.rb +0 -2
  225. data/test/unit/state_machine_test.rb +1 -3
  226. data/test/unit/string_inspect_test.rb +2 -4
  227. data/test/unit/thrower_test.rb +0 -2
  228. data/test/unit/yield_parameters_test.rb +0 -2
  229. data/yard-templates/default/layout/html/setup.rb +2 -3
  230. metadata +25 -6
@@ -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 test_should_build_instance_of_mockery
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
- mockery_1 = Mockery.instance
20
- mockery_2 = Mockery.instance
21
- assert_same mockery_1, mockery_2
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
- mockery_1 = Mockery.instance
26
- Mockery.reset_instance
27
- mockery_2 = Mockery.instance
28
- assert_not_same mockery_1, mockery_2
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
- mock_1 = mockery.named_mock('mock-1') { expects(:method_1) }
35
- mock_2 = mockery.named_mock('mock-2') { expects(:method_2) }
36
- 1.times { mock_1.method_1 }
37
- 0.times { mock_2.method_2 }
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
- stubba_1 = mockery.stubba
73
+ stubba1 = mockery.stubba
60
74
  mockery.teardown
61
- stubba_2 = mockery.stubba
62
- assert_not_same stubba_1, stubba_2
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
- def matches?(other); true; end
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("^#<Mock:0x[0-9A-Fa-f]{1,12}>$"), mock.mocha_inspect
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("^#<Mock:0x[0-9A-Fa-f]{1,12}>$"), mock.inspect
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 "#<Mock:named_mock>", mock.mocha_inspect
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 "#<Mock:named_mock>", mock.mocha_inspect
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 "#<Mock:named_mock>", mock.inspect
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 "#<Mock:named_mock>", mock.inspect
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 "#{instance.mocha_inspect}", mock.mocha_inspect
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 "#{instance.mocha_inspect}", mock.inspect
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 "#<AnyInstance:MockeryTest::FakeClass>", mock.mocha_inspect
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 "#<AnyInstance:MockeryTest::FakeClass>", mock.inspect
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
@@ -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("^#<Object:0x[0-9A-Fa-f]{1,8}.*>$"), object.mocha_inspect
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
- object.replace_instance_method(:id) { calls << :id; return 1 } if Mocha::PRE_RUBY_V19
30
- object.replace_instance_method(:object_id) { calls << :object_id; return 1 }
31
- object.replace_instance_method(:__id__) { calls << :__id__; return 1 }
32
- object.replace_instance_method(:inspect) { "object-description" }
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
- assert_equal @object.mocha_inspect, mocha.mocha_inspect
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
- mocha_1 = @object.mocha
21
- mocha_2 = @object.mocha
22
- assert_equal mocha_1, mocha_2
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 "anything", matcher.mocha_inspect
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 %{"x"}, matcher.mocha_inspect
21
+ assert_equal %("x"), matcher.mocha_inspect
23
22
  end
24
-
25
23
  end
@@ -3,7 +3,6 @@ require 'deprecation_disabler'
3
3
  require 'mocha/parameter_matchers/equivalent_uri'
4
4
 
5
5
  class EquivalentUriMatchesTest < Mocha::TestCase
6
-
7
6
  include Mocha::ParameterMatchers
8
7
  include DeprecationDisabler
9
8
 
@@ -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 [](key)
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(Array.new)
83
+ has_entry([])
85
84
  end
86
- assert_equal "Argument is not a Hash.", e.message
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 "Argument has no entries.", e.message
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 "Argument has multiple entries. Use Mocha::ParameterMatchers#has_entries instead.", e.message
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 "Too many arguments; use either a single argument (must be a Hash) or two arguments (a key and a value).", e.message
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 => ['value_1', 'value_2'])
117
- assert matcher.matches?([{:key_1 => ['value_1', 'value_2']}])
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({{:key_1 => 'value_1', :key_2 => 'value_2'} => {:key_3 => 'value_3', :key_4 => 'value_4'}})
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({has_entry(:key_1 => 'value_1') => has_entry(:key_3 => 'value_3')})
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
@@ -5,7 +5,6 @@ require 'mocha/parameter_matchers/object'
5
5
  require 'mocha/inspect'
6
6
 
7
7
  class HasKeyTest < Mocha::TestCase
8
-
9
8
  include Mocha::ParameterMatchers
10
9
 
11
10
  def test_should_match_hash_including_specified_key
@@ -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 "includes(:x)", matcher.mocha_inspect
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 "includes(:x, :y, :z)", matcher.mocha_inspect
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 "instance_of(String)", matcher.mocha_inspect
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 "is_a(Integer)", matcher.mocha_inspect
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 "kind_of(Integer)", matcher.mocha_inspect
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 "regexp_matches(/oo/)", matcher.mocha_inspect
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