mocha 1.2.1 → 2.0.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 (266) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +1 -0
  3. data/.rubocop.yml +65 -0
  4. data/.rubocop_todo.yml +27 -0
  5. data/.yardopts +1 -0
  6. data/CONTRIBUTING.md +4 -9
  7. data/Gemfile +29 -0
  8. data/README.md +110 -106
  9. data/RELEASE.md +306 -1
  10. data/Rakefile +52 -45
  11. data/gemfiles/Gemfile.minitest.latest +1 -0
  12. data/gemfiles/Gemfile.test-unit.latest +2 -5
  13. data/lib/mocha/any_instance_method.rb +9 -62
  14. data/lib/mocha/api.rb +84 -68
  15. data/lib/mocha/argument_iterator.rb +4 -8
  16. data/lib/mocha/backtrace_filter.rb +1 -5
  17. data/lib/mocha/block_matcher.rb +31 -0
  18. data/lib/mocha/cardinality.rb +60 -49
  19. data/lib/mocha/central.rb +21 -12
  20. data/lib/mocha/change_state_side_effect.rb +0 -4
  21. data/lib/mocha/class_methods.rb +19 -21
  22. data/lib/mocha/configuration.rb +312 -47
  23. data/lib/mocha/debug.rb +3 -2
  24. data/lib/mocha/deprecation.rb +8 -11
  25. data/lib/mocha/detection/mini_test.rb +0 -2
  26. data/lib/mocha/detection/test_unit.rb +3 -5
  27. data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
  28. data/lib/mocha/exception_raiser.rb +4 -6
  29. data/lib/mocha/expectation.rb +186 -95
  30. data/lib/mocha/expectation_error.rb +1 -1
  31. data/lib/mocha/expectation_error_factory.rb +0 -1
  32. data/lib/mocha/expectation_list.rb +7 -11
  33. data/lib/mocha/hooks.rb +1 -3
  34. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  35. data/lib/mocha/inspect.rb +30 -38
  36. data/lib/mocha/instance_method.rb +11 -8
  37. data/lib/mocha/integration/mini_test/adapter.rb +2 -4
  38. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  39. data/lib/mocha/integration/mini_test.rb +10 -31
  40. data/lib/mocha/integration/monkey_patcher.rb +5 -7
  41. data/lib/mocha/integration/test_unit/adapter.rb +5 -6
  42. data/lib/mocha/integration/test_unit.rb +10 -26
  43. data/lib/mocha/invocation.rb +73 -0
  44. data/lib/mocha/is_a.rb +0 -2
  45. data/lib/mocha/logger.rb +0 -4
  46. data/lib/mocha/macos_version.rb +5 -0
  47. data/lib/mocha/method_matcher.rb +1 -5
  48. data/lib/mocha/minitest.rb +6 -0
  49. data/lib/mocha/mock.rb +99 -51
  50. data/lib/mocha/mockery.rb +70 -99
  51. data/lib/mocha/names.rb +2 -12
  52. data/lib/mocha/not_initialized_error.rb +7 -0
  53. data/lib/mocha/object_methods.rb +25 -31
  54. data/lib/mocha/parameter_matchers/all_of.rb +2 -8
  55. data/lib/mocha/parameter_matchers/any_of.rb +2 -8
  56. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  57. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  58. data/lib/mocha/parameter_matchers/base.rb +7 -13
  59. data/lib/mocha/parameter_matchers/equals.rb +0 -6
  60. data/lib/mocha/parameter_matchers/{query_string.rb → equivalent_uri.rb} +14 -15
  61. data/lib/mocha/parameter_matchers/has_entries.rb +2 -7
  62. data/lib/mocha/parameter_matchers/has_entry.rb +26 -21
  63. data/lib/mocha/parameter_matchers/has_key.rb +2 -7
  64. data/lib/mocha/parameter_matchers/has_keys.rb +53 -0
  65. data/lib/mocha/parameter_matchers/has_value.rb +2 -7
  66. data/lib/mocha/parameter_matchers/includes.rb +6 -7
  67. data/lib/mocha/parameter_matchers/instance_methods.rb +27 -0
  68. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  69. data/lib/mocha/parameter_matchers/is_a.rb +2 -7
  70. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  71. data/lib/mocha/parameter_matchers/not.rb +2 -7
  72. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  73. data/lib/mocha/parameter_matchers/positional_or_keyword_hash.rb +64 -0
  74. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  75. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  76. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  77. data/lib/mocha/parameter_matchers.rb +3 -4
  78. data/lib/mocha/parameters_matcher.rb +8 -11
  79. data/lib/mocha/raised_exception.rb +11 -0
  80. data/lib/mocha/receivers.rb +10 -14
  81. data/lib/mocha/return_values.rb +4 -8
  82. data/lib/mocha/ruby_version.rb +1 -2
  83. data/lib/mocha/sequence.rb +4 -9
  84. data/lib/mocha/single_return_value.rb +2 -5
  85. data/lib/mocha/state_machine.rb +33 -46
  86. data/lib/mocha/stubbed_method.rb +88 -0
  87. data/lib/mocha/stubbing_error.rb +2 -13
  88. data/lib/mocha/test_unit.rb +5 -2
  89. data/lib/mocha/thrower.rb +4 -6
  90. data/lib/mocha/thrown_object.rb +12 -0
  91. data/lib/mocha/version.rb +1 -1
  92. data/lib/mocha/yield_parameters.rb +7 -17
  93. data/mocha.gemspec +14 -65
  94. data/yard-templates/default/layout/html/google_analytics.erb +6 -9
  95. data/yard-templates/default/layout/html/setup.rb +2 -3
  96. metadata +26 -266
  97. data/bin/build-matrix +0 -70
  98. data/gemfiles/Gemfile.minitest.1.3.0 +0 -7
  99. data/gemfiles/Gemfile.minitest.1.4.0 +0 -7
  100. data/gemfiles/Gemfile.minitest.1.4.1 +0 -7
  101. data/gemfiles/Gemfile.minitest.1.4.2 +0 -7
  102. data/gemfiles/Gemfile.minitest.2.0.0 +0 -7
  103. data/gemfiles/Gemfile.minitest.2.0.1 +0 -7
  104. data/gemfiles/Gemfile.minitest.2.11.0 +0 -7
  105. data/gemfiles/Gemfile.minitest.2.11.2 +0 -7
  106. data/gemfiles/Gemfile.minitest.2.3.0 +0 -7
  107. data/gemfiles/Gemfile.test-unit.2.0.0 +0 -7
  108. data/gemfiles/Gemfile.test-unit.2.0.1 +0 -7
  109. data/gemfiles/Gemfile.test-unit.2.0.3 +0 -7
  110. data/init.rb +0 -3
  111. data/lib/mocha/class_method.rb +0 -119
  112. data/lib/mocha/integration/mini_test/nothing.rb +0 -19
  113. data/lib/mocha/integration/mini_test/version_13.rb +0 -51
  114. data/lib/mocha/integration/mini_test/version_140.rb +0 -51
  115. data/lib/mocha/integration/mini_test/version_141.rb +0 -62
  116. data/lib/mocha/integration/mini_test/version_142_to_172.rb +0 -62
  117. data/lib/mocha/integration/mini_test/version_200.rb +0 -63
  118. data/lib/mocha/integration/mini_test/version_201_to_222.rb +0 -63
  119. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +0 -67
  120. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +0 -70
  121. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +0 -65
  122. data/lib/mocha/integration/test_unit/gem_version_200.rb +0 -59
  123. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +0 -59
  124. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +0 -59
  125. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +0 -65
  126. data/lib/mocha/integration/test_unit/nothing.rb +0 -19
  127. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +0 -58
  128. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +0 -60
  129. data/lib/mocha/integration.rb +0 -14
  130. data/lib/mocha/mini_test.rb +0 -3
  131. data/lib/mocha/module_method.rb +0 -16
  132. data/lib/mocha/module_methods.rb +0 -14
  133. data/lib/mocha/multiple_yields.rb +0 -20
  134. data/lib/mocha/no_yields.rb +0 -11
  135. data/lib/mocha/parameter_matchers/object.rb +0 -17
  136. data/lib/mocha/pretty_parameters.rb +0 -28
  137. data/lib/mocha/setup.rb +0 -9
  138. data/lib/mocha/single_yield.rb +0 -18
  139. data/lib/mocha/standalone.rb +0 -4
  140. data/lib/mocha/unexpected_invocation.rb +0 -26
  141. data/lib/mocha_standalone.rb +0 -4
  142. data/test/acceptance/acceptance_test_helper.rb +0 -41
  143. data/test/acceptance/bug_18914_test.rb +0 -43
  144. data/test/acceptance/bug_21465_test.rb +0 -34
  145. data/test/acceptance/bug_21563_test.rb +0 -25
  146. data/test/acceptance/exception_rescue_test.rb +0 -55
  147. data/test/acceptance/expectations_on_multiple_methods_test.rb +0 -55
  148. data/test/acceptance/expected_invocation_count_test.rb +0 -232
  149. data/test/acceptance/failure_messages_test.rb +0 -64
  150. data/test/acceptance/issue_272_test.rb +0 -52
  151. data/test/acceptance/issue_65_test.rb +0 -63
  152. data/test/acceptance/issue_70_test.rb +0 -55
  153. data/test/acceptance/mocha_example_test.rb +0 -98
  154. data/test/acceptance/mocha_test_result_test.rb +0 -84
  155. data/test/acceptance/mock_test.rb +0 -100
  156. data/test/acceptance/mock_with_initializer_block_test.rb +0 -51
  157. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -78
  158. data/test/acceptance/multiple_expectations_failure_message_test.rb +0 -68
  159. data/test/acceptance/optional_parameters_test.rb +0 -70
  160. data/test/acceptance/parameter_matcher_test.rb +0 -337
  161. data/test/acceptance/partial_mocks_test.rb +0 -47
  162. data/test/acceptance/prepend_test.rb +0 -89
  163. data/test/acceptance/raise_exception_test.rb +0 -39
  164. data/test/acceptance/return_value_test.rb +0 -52
  165. data/test/acceptance/sequence_test.rb +0 -192
  166. data/test/acceptance/states_test.rb +0 -70
  167. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +0 -34
  168. data/test/acceptance/stub_any_instance_method_test.rb +0 -280
  169. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +0 -106
  170. data/test/acceptance/stub_class_method_defined_on_class_test.rb +0 -78
  171. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -75
  172. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +0 -112
  173. data/test/acceptance/stub_everything_test.rb +0 -56
  174. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +0 -93
  175. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -69
  176. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -69
  177. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -75
  178. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -78
  179. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +0 -75
  180. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -70
  181. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -72
  182. data/test/acceptance/stub_method_defined_on_module_and_aliased_test.rb +0 -39
  183. data/test/acceptance/stub_module_method_test.rb +0 -163
  184. data/test/acceptance/stub_test.rb +0 -52
  185. data/test/acceptance/stubba_example_test.rb +0 -102
  186. data/test/acceptance/stubba_test_result_test.rb +0 -66
  187. data/test/acceptance/stubbing_error_backtrace_test.rb +0 -64
  188. data/test/acceptance/stubbing_frozen_object_test.rb +0 -88
  189. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +0 -48
  190. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -65
  191. data/test/acceptance/stubbing_nil_test.rb +0 -61
  192. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +0 -143
  193. data/test/acceptance/stubbing_non_existent_class_method_test.rb +0 -157
  194. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +0 -147
  195. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -130
  196. data/test/acceptance/stubbing_non_public_class_method_test.rb +0 -163
  197. data/test/acceptance/stubbing_non_public_instance_method_test.rb +0 -143
  198. data/test/acceptance/stubbing_on_non_mock_object_test.rb +0 -64
  199. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +0 -35
  200. data/test/acceptance/throw_test.rb +0 -45
  201. data/test/acceptance/unexpected_invocation_test.rb +0 -25
  202. data/test/acceptance/unstubbing_test.rb +0 -168
  203. data/test/assertions.rb +0 -8
  204. data/test/deprecation_disabler.rb +0 -15
  205. data/test/execution_point.rb +0 -36
  206. data/test/integration/mini_test_test.rb +0 -8
  207. data/test/integration/shared_tests.rb +0 -174
  208. data/test/integration/test_unit_test.rb +0 -8
  209. data/test/method_definer.rb +0 -24
  210. data/test/mini_test_result.rb +0 -90
  211. data/test/minitest_result.rb +0 -49
  212. data/test/simple_counter.rb +0 -13
  213. data/test/test_helper.rb +0 -50
  214. data/test/test_runner.rb +0 -58
  215. data/test/test_unit_result.rb +0 -20
  216. data/test/unit/any_instance_method_test.rb +0 -134
  217. data/test/unit/array_inspect_test.rb +0 -16
  218. data/test/unit/backtrace_filter_test.rb +0 -19
  219. data/test/unit/cardinality_test.rb +0 -56
  220. data/test/unit/central_test.rb +0 -100
  221. data/test/unit/change_state_side_effect_test.rb +0 -41
  222. data/test/unit/class_method_test.rb +0 -225
  223. data/test/unit/class_methods_test.rb +0 -40
  224. data/test/unit/configuration_test.rb +0 -38
  225. data/test/unit/date_time_inspect_test.rb +0 -21
  226. data/test/unit/exception_raiser_test.rb +0 -42
  227. data/test/unit/expectation_list_test.rb +0 -82
  228. data/test/unit/expectation_test.rb +0 -497
  229. data/test/unit/hash_inspect_test.rb +0 -16
  230. data/test/unit/hooks_test.rb +0 -29
  231. data/test/unit/in_state_ordering_constraint_test.rb +0 -43
  232. data/test/unit/method_matcher_test.rb +0 -28
  233. data/test/unit/mock_test.rb +0 -342
  234. data/test/unit/mockery_test.rb +0 -151
  235. data/test/unit/module_methods_test.rb +0 -19
  236. data/test/unit/multiple_yields_test.rb +0 -18
  237. data/test/unit/no_yields_test.rb +0 -18
  238. data/test/unit/object_inspect_test.rb +0 -39
  239. data/test/unit/object_methods_test.rb +0 -46
  240. data/test/unit/parameter_matchers/all_of_test.rb +0 -26
  241. data/test/unit/parameter_matchers/any_of_test.rb +0 -26
  242. data/test/unit/parameter_matchers/anything_test.rb +0 -21
  243. data/test/unit/parameter_matchers/equals_test.rb +0 -25
  244. data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
  245. data/test/unit/parameter_matchers/has_entry_test.rb +0 -129
  246. data/test/unit/parameter_matchers/has_key_test.rb +0 -55
  247. data/test/unit/parameter_matchers/has_value_test.rb +0 -57
  248. data/test/unit/parameter_matchers/includes_test.rb +0 -102
  249. data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
  250. data/test/unit/parameter_matchers/is_a_test.rb +0 -25
  251. data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
  252. data/test/unit/parameter_matchers/not_test.rb +0 -26
  253. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -46
  254. data/test/unit/parameter_matchers/responds_with_test.rb +0 -32
  255. data/test/unit/parameter_matchers/stub_matcher.rb +0 -27
  256. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -25
  257. data/test/unit/parameters_matcher_test.rb +0 -121
  258. data/test/unit/receivers_test.rb +0 -66
  259. data/test/unit/return_values_test.rb +0 -63
  260. data/test/unit/sequence_test.rb +0 -104
  261. data/test/unit/single_return_value_test.rb +0 -14
  262. data/test/unit/single_yield_test.rb +0 -18
  263. data/test/unit/state_machine_test.rb +0 -98
  264. data/test/unit/string_inspect_test.rb +0 -11
  265. data/test/unit/thrower_test.rb +0 -20
  266. data/test/unit/yield_parameters_test.rb +0 -93
@@ -1,34 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class Bug21465Test < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_allow_expected_method_name_to_be_a_string
17
- test_result = run_as_test do
18
- mock = mock()
19
- mock.expects('wibble')
20
- mock.wibble
21
- end
22
- assert_passed(test_result)
23
- end
24
-
25
- def test_should_allow_stubbed_method_name_to_be_a_string
26
- test_result = run_as_test do
27
- mock = mock()
28
- mock.stubs('wibble')
29
- mock.wibble
30
- end
31
- assert_passed(test_result)
32
- end
33
-
34
- end
@@ -1,25 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class Bug21563Test < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_allow_stubbing_of_verified_method
17
- test_result = run_as_test do
18
- object = Object.new
19
- object.stubs(:verified?).returns(false)
20
- assert !object.verified?
21
- end
22
- assert_passed(test_result)
23
- end
24
-
25
- end
@@ -1,55 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class ExceptionRescueTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_unexpected_invocation_exception_is_not_caught_by_standard_rescue
17
- test_result = run_as_test do
18
- mock = mock('mock')
19
- begin
20
- mock.some_method
21
- rescue => e
22
- flunk "should not rescue #{e.class}"
23
- end
24
- end
25
- assert_failed(test_result)
26
- assert_equal "unexpected invocation: #<Mock:mock>.some_method()", test_result.failure_message_lines[0]
27
- end
28
-
29
- def test_invocation_never_expected_exception_is_not_caught_by_standard_rescue
30
- test_result = run_as_test do
31
- mock = mock('mock')
32
- mock.expects(:some_method).never
33
- begin
34
- mock.some_method
35
- rescue => e
36
- flunk "should not rescue #{e.class}"
37
- end
38
- end
39
- assert_failed(test_result)
40
- assert_equal "unexpected invocation: #<Mock:mock>.some_method()", test_result.failure_message_lines[0]
41
- end
42
-
43
- def test_unsatisfied_expectation_exception_is_not_caught_by_standard_rescue
44
- test_result = run_as_test do
45
- mock = mock('mock')
46
- mock.expects(:some_method)
47
- end
48
- assert_failed(test_result)
49
- assert_equal [
50
- "not all expectations were satisfied",
51
- "unsatisfied expectations:",
52
- "- expected exactly once, not yet invoked: #<Mock:mock>.some_method(any_parameters)"
53
- ], test_result.failure_message_lines
54
- end
55
- end
@@ -1,55 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class ExpectationsOnMultipleMethodsTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_expect_calls_to_multiple_methods
17
- instance = Class.new do
18
- def my_instance_method_1
19
- :original_return_value_1
20
- end
21
- def my_instance_method_2
22
- :original_return_value_2
23
- end
24
- end.new
25
- test_result = run_as_test do
26
- instance.expects(
27
- :my_instance_method_1 => :new_return_value_1,
28
- :my_instance_method_2 => :new_return_value_2
29
- )
30
- assert_equal :new_return_value_1, instance.my_instance_method_1
31
- assert_equal :new_return_value_2, instance.my_instance_method_2
32
- end
33
- assert_passed(test_result)
34
- end
35
-
36
- def test_should_stub_calls_to_multiple_methods
37
- instance = Class.new do
38
- def my_instance_method_1
39
- :original_return_value_1
40
- end
41
- def my_instance_method_2
42
- :original_return_value_2
43
- end
44
- end.new
45
- test_result = run_as_test do
46
- instance.stubs(
47
- :my_instance_method_1 => :new_return_value_1,
48
- :my_instance_method_2 => :new_return_value_2
49
- )
50
- assert_equal :new_return_value_1, instance.my_instance_method_1
51
- assert_equal :new_return_value_2, instance.my_instance_method_2
52
- end
53
- assert_passed(test_result)
54
- end
55
- end
@@ -1,232 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class ExpectedInvocationCountTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_pass_if_method_is_never_expected_and_is_never_called
17
- test_result = run_as_test do
18
- mock = mock('mock')
19
- mock.expects(:method).never
20
- 0.times { mock.method }
21
- end
22
- assert_passed(test_result)
23
- end
24
-
25
- def test_should_fail_fast_if_method_is_never_expected_but_is_called_once
26
- test_result = run_as_test do
27
- mock = mock('mock')
28
- mock.expects(:method).never
29
- 1.times { mock.method }
30
- end
31
- assert_failed(test_result)
32
- assert_equal [
33
- "unexpected invocation: #<Mock:mock>.method()",
34
- "unsatisfied expectations:",
35
- "- expected never, invoked once: #<Mock:mock>.method(any_parameters)"
36
- ], test_result.failure_message_lines
37
- end
38
-
39
- def test_should_pass_if_method_is_expected_twice_and_is_called_twice
40
- test_result = run_as_test do
41
- mock = mock('mock')
42
- mock.expects(:method).twice
43
- 2.times { mock.method }
44
- end
45
- assert_passed(test_result)
46
- end
47
-
48
- def test_should_fail_if_method_is_expected_twice_but_is_called_once
49
- test_result = run_as_test do
50
- mock = mock('mock')
51
- mock.expects(:method).twice
52
- 1.times { mock.method }
53
- end
54
- assert_failed(test_result)
55
- assert_equal [
56
- "not all expectations were satisfied",
57
- "unsatisfied expectations:",
58
- "- expected exactly twice, invoked once: #<Mock:mock>.method(any_parameters)"
59
- ], test_result.failure_message_lines
60
- end
61
-
62
- def test_should_fail_fast_if_method_is_expected_twice_but_is_called_three_times
63
- test_result = run_as_test do
64
- mock = mock('mock')
65
- mock.expects(:method).twice
66
- 3.times { mock.method }
67
- end
68
- assert_failed(test_result)
69
- assert_equal [
70
- "unexpected invocation: #<Mock:mock>.method()",
71
- "unsatisfied expectations:",
72
- "- expected exactly twice, invoked 3 times: #<Mock:mock>.method(any_parameters)"
73
- ], test_result.failure_message_lines
74
- end
75
-
76
- def test_should_pass_if_method_is_expected_between_two_and_four_times_and_is_called_twice
77
- test_result = run_as_test do
78
- mock = mock('mock')
79
- mock.expects(:method).times(2..4)
80
- 2.times { mock.method }
81
- end
82
- assert_passed(test_result)
83
- end
84
-
85
- def test_should_pass_if_method_is_expected_between_two_and_four_times_and_is_called_three_times
86
- test_result = run_as_test do
87
- mock = mock('mock')
88
- mock.expects(:method).times(2..4)
89
- 3.times { mock.method }
90
- end
91
- assert_passed(test_result)
92
- end
93
-
94
- def test_should_pass_if_method_is_expected_between_two_and_four_times_and_is_called_four_times
95
- test_result = run_as_test do
96
- mock = mock('mock')
97
- mock.expects(:method).times(2..4)
98
- 4.times { mock.method }
99
- end
100
- assert_passed(test_result)
101
- end
102
-
103
- def test_should_fail_if_method_is_expected_between_two_and_four_times_and_is_called_once
104
- test_result = run_as_test do
105
- mock = mock('mock')
106
- mock.expects(:method).times(2..4)
107
- 1.times { mock.method }
108
- end
109
- assert_failed(test_result)
110
- assert_equal [
111
- "not all expectations were satisfied",
112
- "unsatisfied expectations:",
113
- "- expected between 2 and 4 times, invoked once: #<Mock:mock>.method(any_parameters)"
114
- ], test_result.failure_message_lines
115
- end
116
-
117
- def test_should_fail_fast_if_method_is_expected_between_two_and_four_times_and_is_called_five_times
118
- test_result = run_as_test do
119
- mock = mock('mock')
120
- mock.expects(:method).times(2..4)
121
- 5.times { mock.method }
122
- end
123
- assert_failed(test_result)
124
- assert_equal [
125
- "unexpected invocation: #<Mock:mock>.method()",
126
- "unsatisfied expectations:",
127
- "- expected between 2 and 4 times, invoked 5 times: #<Mock:mock>.method(any_parameters)"
128
- ], test_result.failure_message_lines
129
- end
130
-
131
- def test_should_pass_if_method_is_expected_at_least_once_and_is_called_once
132
- test_result = run_as_test do
133
- mock = mock('mock')
134
- mock.expects(:method).at_least_once
135
- 1.times { mock.method }
136
- end
137
- assert_passed(test_result)
138
- end
139
-
140
- def test_should_pass_if_method_is_expected_at_least_once_and_is_called_twice
141
- test_result = run_as_test do
142
- mock = mock('mock')
143
- mock.expects(:method).at_least_once
144
- 2.times { mock.method }
145
- end
146
- assert_passed(test_result)
147
- end
148
-
149
- def test_should_fail_if_method_is_expected_at_least_once_but_is_never_called
150
- test_result = run_as_test do
151
- mock = mock('mock')
152
- mock.expects(:method).at_least_once
153
- 0.times { mock.method }
154
- end
155
- assert_failed(test_result)
156
- assert_equal [
157
- "not all expectations were satisfied",
158
- "unsatisfied expectations:",
159
- "- expected at least once, not yet invoked: #<Mock:mock>.method(any_parameters)"
160
- ], test_result.failure_message_lines
161
- end
162
-
163
- def test_should_pass_if_method_is_expected_at_most_once_and_is_never_called
164
- test_result = run_as_test do
165
- mock = mock('mock')
166
- mock.expects(:method).at_most_once
167
- 0.times { mock.method }
168
- end
169
- assert_passed(test_result)
170
- end
171
-
172
- def test_should_pass_if_method_is_expected_at_most_once_and_called_once
173
- test_result = run_as_test do
174
- mock = mock('mock')
175
- mock.expects(:method).at_most_once
176
- 1.times { mock.method }
177
- end
178
- assert_passed(test_result)
179
- end
180
-
181
- def test_should_fail_fast_if_method_is_expected_at_most_once_but_is_called_twice
182
- test_result = run_as_test do
183
- mock = mock('mock')
184
- mock.expects(:method).at_most_once
185
- 2.times { mock.method }
186
- end
187
- assert_failed(test_result)
188
- assert_equal [
189
- "unexpected invocation: #<Mock:mock>.method()",
190
- "unsatisfied expectations:",
191
- "- expected at most once, invoked twice: #<Mock:mock>.method(any_parameters)"
192
- ], test_result.failure_message_lines
193
- end
194
-
195
- def test_should_pass_if_method_is_never_expected_and_is_never_called_even_if_everything_is_stubbed
196
- test_result = run_as_test do
197
- stub = stub_everything('stub')
198
- stub.expects(:method).never
199
- 0.times { stub.method }
200
- end
201
- assert_passed(test_result)
202
- end
203
-
204
- def test_should_fail_fast_if_method_is_never_expected_but_is_called_once_even_if_everything_is_stubbed
205
- test_result = run_as_test do
206
- stub = stub_everything('stub')
207
- stub.expects(:method).never
208
- 1.times { stub.method }
209
- end
210
- assert_failed(test_result)
211
- assert_equal [
212
- "unexpected invocation: #<Mock:stub>.method()",
213
- "unsatisfied expectations:",
214
- "- expected never, invoked once: #<Mock:stub>.method(any_parameters)"
215
- ], test_result.failure_message_lines
216
- end
217
-
218
- def test_should_fail_fast_if_there_is_no_matching_expectation
219
- test_result = run_as_test do
220
- mock = mock('mock')
221
- mock.expects(:method).with(1)
222
- 1.times { mock.method }
223
- end
224
- assert_failed(test_result)
225
- assert_equal [
226
- "unexpected invocation: #<Mock:mock>.method()",
227
- "unsatisfied expectations:",
228
- "- expected exactly once, not yet invoked: #<Mock:mock>.method(1)"
229
- ], test_result.failure_message_lines
230
- end
231
-
232
- end
@@ -1,64 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class FailureMessagesTest < Mocha::TestCase
5
-
6
- OBJECT_ADDRESS_PATTERN = '0x[0-9A-Fa-f]{1,12}'
7
-
8
- include AcceptanceTest
9
-
10
- def setup
11
- setup_acceptance_test
12
- end
13
-
14
- def teardown
15
- teardown_acceptance_test
16
- end
17
-
18
- class Foo; end
19
-
20
- def test_should_display_class_name_when_expectation_was_on_class
21
- test_result = run_as_test do
22
- Foo.expects(:bar)
23
- end
24
- assert_match Regexp.new('FailureMessagesTest::Foo'), test_result.failures[0].message
25
- end
26
-
27
- def test_should_display_class_name_and_address_when_expectation_was_on_instance
28
- test_result = run_as_test do
29
- Foo.new.expects(:bar)
30
- end
31
- assert_match Regexp.new("#<FailureMessagesTest::Foo:#{OBJECT_ADDRESS_PATTERN}>"), test_result.failures[0].message
32
- end
33
-
34
- def test_should_display_class_name_and_any_instance_prefix_when_expectation_was_on_any_instance
35
- test_result = run_as_test do
36
- Foo.any_instance.expects(:bar)
37
- end
38
- assert_match Regexp.new('#<AnyInstance:FailureMessagesTest::Foo>'), test_result.failures[0].message
39
- end
40
-
41
- def test_should_display_mock_name_when_expectation_was_on_named_mock
42
- test_result = run_as_test do
43
- foo = mock('foo')
44
- foo.expects(:bar)
45
- end
46
- assert_match Regexp.new('#<Mock:foo>'), test_result.failures[0].message
47
- end
48
-
49
- def test_should_display_mock_address_when_expectation_was_on_unnamed_mock
50
- test_result = run_as_test do
51
- foo = mock()
52
- foo.expects(:bar)
53
- end
54
- assert_match Regexp.new("#<Mock:#{OBJECT_ADDRESS_PATTERN}>"), test_result.failures[0].message
55
- end
56
-
57
- def test_should_display_string_when_expectation_was_on_string
58
- test_result = run_as_test do
59
- 'Foo'.expects(:bar)
60
- end
61
- assert_match Regexp.new("'Foo'"), test_result.failures[0].message
62
- end
63
-
64
- end
@@ -1,52 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class Issue272Test < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- module Mod
17
- private
18
-
19
- def foo
20
- 'original-foo'
21
- end
22
-
23
- def bar
24
- 'original-bar'
25
- end
26
- end
27
-
28
- class Klass
29
- extend Mod
30
-
31
- class << self
32
- public :foo
33
- public :bar
34
- end
35
- end
36
-
37
- def test_private_methods_in_module_used_to_extend_class_and_made_public
38
- test_result = run_as_test do
39
- Klass.stubs(:foo).returns('stubbed-foo')
40
- # hangs in next line executing:
41
- # `@original_method = stubbee._method(method)`
42
- # in Mocha::ClassMethod#hide_original_method
43
- # but only in Ruby v2.3, not v2.2
44
- Klass.stubs(:bar).returns('stubbed-bar')
45
- assert_equal 'stubbed-foo', Klass.foo
46
- assert_equal 'stubbed-bar', Klass.bar
47
- end
48
- assert_passed(test_result)
49
- assert_equal 'original-foo', Klass.foo
50
- assert_equal 'original-bar', Klass.bar
51
- end
52
- end
@@ -1,63 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class Issue65Test < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_expectations_on_class_methods_on_same_class_should_be_verified_in_consecutive_tests
17
- klass = Class.new do
18
- def self.foo; end
19
- def self.bar; end
20
- end
21
- test_1 = run_as_test do
22
- klass.expects(:foo)
23
- klass.foo
24
- end
25
- assert_passed(test_1)
26
- test_2 = run_as_test do
27
- klass.expects(:bar)
28
- end
29
- assert_failed(test_2)
30
- end
31
-
32
- def test_expectations_on_any_instance_methods_on_same_class_should_be_verified_in_consecutive_tests
33
- klass = Class.new do
34
- def foo; end
35
- def bar; end
36
- end
37
- test_1 = run_as_test do
38
- klass.any_instance.expects(:foo)
39
- klass.new.foo
40
- end
41
- assert_passed(test_1)
42
- test_2 = run_as_test do
43
- klass.any_instance.expects(:bar)
44
- end
45
- assert_failed(test_2)
46
- end
47
-
48
- def test_expectations_on_instance_methods_on_same_object_should_be_verified_in_consecutive_tests
49
- instance = Class.new do
50
- def foo; end
51
- def bar; end
52
- end.new
53
- test_1 = run_as_test do
54
- instance.expects(:foo)
55
- instance.foo
56
- end
57
- assert_passed(test_1)
58
- test_2 = run_as_test do
59
- instance.expects(:bar)
60
- end
61
- assert_failed(test_2)
62
- end
63
- end
@@ -1,55 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class Issue70Test < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_stub_expectations_instance_method
17
- instance = Class.new do
18
- def expectations
19
- :original_return_value
20
- end
21
- end.new
22
- test_result = run_as_test do
23
- instance.stubs(:expectations).returns(:stubbed_return_value)
24
- assert_equal :stubbed_return_value, instance.expectations
25
- end
26
- assert_passed(test_result)
27
- end
28
-
29
- def test_should_stub_expectations_class_method
30
- klass = Class.new do
31
- def self.expectations
32
- :original_return_value
33
- end
34
- end
35
- test_result = run_as_test do
36
- klass.stubs(:expectations).returns(:stubbed_return_value)
37
- assert_equal :stubbed_return_value, klass.expectations
38
- end
39
- assert_passed(test_result)
40
- end
41
-
42
- def test_should_stub_expectations_any_instance_method
43
- klass = Class.new do
44
- def expectations
45
- :original_return_value
46
- end
47
- end
48
- instance = klass.new
49
- test_result = run_as_test do
50
- klass.any_instance.stubs(:expectations).returns(:stubbed_return_value)
51
- assert_equal :stubbed_return_value, instance.expectations
52
- end
53
- assert_passed(test_result)
54
- end
55
- end