mocha 1.1.0 → 1.13.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 (263) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +1 -0
  3. data/.rubocop.yml +61 -0
  4. data/.rubocop_todo.yml +27 -0
  5. data/.yardopts +1 -0
  6. data/CONTRIBUTING.md +4 -9
  7. data/README.md +114 -28
  8. data/RELEASE.md +248 -1
  9. data/Rakefile +53 -35
  10. data/gemfiles/Gemfile.test-unit.latest +5 -1
  11. data/init.rb +1 -3
  12. data/lib/mocha/any_instance_method.rb +12 -72
  13. data/lib/mocha/api.rb +121 -56
  14. data/lib/mocha/argument_iterator.rb +4 -8
  15. data/lib/mocha/backtrace_filter.rb +1 -5
  16. data/lib/mocha/block_matcher.rb +31 -0
  17. data/lib/mocha/cardinality.rb +60 -49
  18. data/lib/mocha/central.rb +21 -12
  19. data/lib/mocha/change_state_side_effect.rb +0 -4
  20. data/lib/mocha/class_methods.rb +19 -20
  21. data/lib/mocha/configuration.rb +361 -18
  22. data/lib/mocha/debug.rb +3 -2
  23. data/lib/mocha/deprecation.rb +8 -11
  24. data/lib/mocha/detection/mini_test.rb +0 -2
  25. data/lib/mocha/detection/test_unit.rb +3 -5
  26. data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
  27. data/lib/mocha/exception_raiser.rb +4 -6
  28. data/lib/mocha/expectation.rb +125 -89
  29. data/lib/mocha/expectation_error.rb +1 -1
  30. data/lib/mocha/expectation_error_factory.rb +0 -1
  31. data/lib/mocha/expectation_list.rb +7 -11
  32. data/lib/mocha/hooks.rb +1 -3
  33. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  34. data/lib/mocha/inspect.rb +30 -38
  35. data/lib/mocha/instance_method.rb +15 -8
  36. data/lib/mocha/integration/mini_test/adapter.rb +2 -4
  37. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  38. data/lib/mocha/integration/mini_test/nothing.rb +4 -4
  39. data/lib/mocha/integration/mini_test/version_13.rb +4 -1
  40. data/lib/mocha/integration/mini_test/version_140.rb +4 -1
  41. data/lib/mocha/integration/mini_test/version_141.rb +4 -1
  42. data/lib/mocha/integration/mini_test/version_142_to_172.rb +4 -1
  43. data/lib/mocha/integration/mini_test/version_200.rb +4 -1
  44. data/lib/mocha/integration/mini_test/version_201_to_222.rb +4 -1
  45. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +4 -1
  46. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +4 -1
  47. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +4 -1
  48. data/lib/mocha/integration/mini_test.rb +7 -0
  49. data/lib/mocha/integration/monkey_patcher.rb +8 -2
  50. data/lib/mocha/integration/test_unit/adapter.rb +5 -6
  51. data/lib/mocha/integration/test_unit/gem_version_200.rb +5 -2
  52. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +5 -2
  53. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +5 -2
  54. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +5 -2
  55. data/lib/mocha/integration/test_unit/nothing.rb +4 -4
  56. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +4 -1
  57. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +4 -1
  58. data/lib/mocha/integration/test_unit.rb +7 -0
  59. data/lib/mocha/integration.rb +2 -5
  60. data/lib/mocha/invocation.rb +77 -0
  61. data/lib/mocha/is_a.rb +0 -2
  62. data/lib/mocha/logger.rb +0 -4
  63. data/lib/mocha/macos_version.rb +5 -0
  64. data/lib/mocha/method_matcher.rb +1 -5
  65. data/lib/mocha/minitest.rb +8 -0
  66. data/lib/mocha/mock.rb +94 -46
  67. data/lib/mocha/mockery.rb +72 -98
  68. data/lib/mocha/names.rb +2 -12
  69. data/lib/mocha/not_initialized_error.rb +7 -0
  70. data/lib/mocha/object_methods.rb +25 -31
  71. data/lib/mocha/parameter_matchers/all_of.rb +2 -8
  72. data/lib/mocha/parameter_matchers/any_of.rb +2 -8
  73. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  74. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  75. data/lib/mocha/parameter_matchers/base.rb +6 -12
  76. data/lib/mocha/parameter_matchers/equals.rb +1 -7
  77. data/lib/mocha/parameter_matchers/{query_string.rb → equivalent_uri.rb} +15 -15
  78. data/lib/mocha/parameter_matchers/has_entries.rb +2 -7
  79. data/lib/mocha/parameter_matchers/has_entry.rb +26 -21
  80. data/lib/mocha/parameter_matchers/has_key.rb +2 -7
  81. data/lib/mocha/parameter_matchers/has_keys.rb +53 -0
  82. data/lib/mocha/parameter_matchers/has_value.rb +2 -7
  83. data/lib/mocha/parameter_matchers/includes.rb +50 -8
  84. data/lib/mocha/parameter_matchers/instance_methods.rb +18 -0
  85. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  86. data/lib/mocha/parameter_matchers/is_a.rb +2 -7
  87. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  88. data/lib/mocha/parameter_matchers/not.rb +2 -7
  89. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  90. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  91. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  92. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  93. data/lib/mocha/parameter_matchers.rb +3 -4
  94. data/lib/mocha/parameters_matcher.rb +6 -9
  95. data/lib/mocha/raised_exception.rb +11 -0
  96. data/lib/mocha/receivers.rb +10 -14
  97. data/lib/mocha/return_values.rb +4 -8
  98. data/lib/mocha/ruby_version.rb +4 -0
  99. data/lib/mocha/sequence.rb +4 -9
  100. data/lib/mocha/setup.rb +5 -0
  101. data/lib/mocha/single_return_value.rb +2 -5
  102. data/lib/mocha/singleton_class.rb +9 -0
  103. data/lib/mocha/state_machine.rb +33 -46
  104. data/lib/mocha/stubbed_method.rb +125 -0
  105. data/lib/mocha/stubbing_error.rb +2 -13
  106. data/lib/mocha/test_unit.rb +7 -2
  107. data/lib/mocha/thrower.rb +4 -6
  108. data/lib/mocha/thrown_object.rb +12 -0
  109. data/lib/mocha/version.rb +1 -1
  110. data/lib/mocha/yield_parameters.rb +7 -17
  111. data/lib/mocha.rb +8 -0
  112. data/mocha.gemspec +42 -40
  113. data/yard-templates/default/layout/html/google_analytics.erb +6 -9
  114. data/yard-templates/default/layout/html/setup.rb +2 -3
  115. metadata +45 -191
  116. data/bin/build-matrix +0 -71
  117. data/gemfiles/Gemfile.minitest.1.3.0 +0 -7
  118. data/gemfiles/Gemfile.minitest.1.4.0 +0 -7
  119. data/gemfiles/Gemfile.minitest.1.4.1 +0 -7
  120. data/gemfiles/Gemfile.minitest.1.4.2 +0 -7
  121. data/gemfiles/Gemfile.minitest.2.0.0 +0 -7
  122. data/gemfiles/Gemfile.minitest.2.0.1 +0 -7
  123. data/gemfiles/Gemfile.minitest.2.11.0 +0 -7
  124. data/gemfiles/Gemfile.minitest.2.11.2 +0 -7
  125. data/gemfiles/Gemfile.minitest.2.3.0 +0 -7
  126. data/gemfiles/Gemfile.test-unit.2.0.0 +0 -7
  127. data/gemfiles/Gemfile.test-unit.2.0.1 +0 -7
  128. data/gemfiles/Gemfile.test-unit.2.0.3 +0 -7
  129. data/lib/mocha/class_method.rb +0 -127
  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/single_yield.rb +0 -18
  138. data/lib/mocha/standalone.rb +0 -4
  139. data/lib/mocha/unexpected_invocation.rb +0 -26
  140. data/lib/mocha_standalone.rb +0 -4
  141. data/test/acceptance/acceptance_test_helper.rb +0 -41
  142. data/test/acceptance/bug_18914_test.rb +0 -43
  143. data/test/acceptance/bug_21465_test.rb +0 -34
  144. data/test/acceptance/bug_21563_test.rb +0 -25
  145. data/test/acceptance/exception_rescue_test.rb +0 -55
  146. data/test/acceptance/expectations_on_multiple_methods_test.rb +0 -55
  147. data/test/acceptance/expected_invocation_count_test.rb +0 -232
  148. data/test/acceptance/failure_messages_test.rb +0 -64
  149. data/test/acceptance/issue_65_test.rb +0 -63
  150. data/test/acceptance/issue_70_test.rb +0 -55
  151. data/test/acceptance/mocha_example_test.rb +0 -98
  152. data/test/acceptance/mocha_test_result_test.rb +0 -84
  153. data/test/acceptance/mock_test.rb +0 -100
  154. data/test/acceptance/mock_with_initializer_block_test.rb +0 -51
  155. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -78
  156. data/test/acceptance/multiple_expectations_failure_message_test.rb +0 -68
  157. data/test/acceptance/optional_parameters_test.rb +0 -70
  158. data/test/acceptance/parameter_matcher_test.rb +0 -337
  159. data/test/acceptance/partial_mocks_test.rb +0 -47
  160. data/test/acceptance/prepend_test.rb +0 -88
  161. data/test/acceptance/raise_exception_test.rb +0 -39
  162. data/test/acceptance/return_value_test.rb +0 -52
  163. data/test/acceptance/sequence_test.rb +0 -192
  164. data/test/acceptance/states_test.rb +0 -70
  165. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +0 -34
  166. data/test/acceptance/stub_any_instance_method_test.rb +0 -238
  167. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +0 -106
  168. data/test/acceptance/stub_class_method_defined_on_class_test.rb +0 -78
  169. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -75
  170. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +0 -112
  171. data/test/acceptance/stub_everything_test.rb +0 -56
  172. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +0 -93
  173. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -69
  174. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -69
  175. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -75
  176. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -75
  177. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +0 -75
  178. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -70
  179. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -72
  180. data/test/acceptance/stub_module_method_test.rb +0 -163
  181. data/test/acceptance/stub_test.rb +0 -52
  182. data/test/acceptance/stubba_example_test.rb +0 -102
  183. data/test/acceptance/stubba_test_result_test.rb +0 -66
  184. data/test/acceptance/stubbing_error_backtrace_test.rb +0 -64
  185. data/test/acceptance/stubbing_frozen_object_test.rb +0 -88
  186. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +0 -48
  187. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -65
  188. data/test/acceptance/stubbing_nil_test.rb +0 -59
  189. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +0 -130
  190. data/test/acceptance/stubbing_non_existent_class_method_test.rb +0 -157
  191. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +0 -147
  192. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -130
  193. data/test/acceptance/stubbing_non_public_class_method_test.rb +0 -163
  194. data/test/acceptance/stubbing_non_public_instance_method_test.rb +0 -143
  195. data/test/acceptance/stubbing_on_non_mock_object_test.rb +0 -64
  196. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +0 -35
  197. data/test/acceptance/throw_test.rb +0 -45
  198. data/test/acceptance/unexpected_invocation_test.rb +0 -25
  199. data/test/acceptance/unstubbing_test.rb +0 -168
  200. data/test/assertions.rb +0 -6
  201. data/test/deprecation_disabler.rb +0 -15
  202. data/test/execution_point.rb +0 -36
  203. data/test/integration/mini_test_test.rb +0 -8
  204. data/test/integration/shared_tests.rb +0 -174
  205. data/test/integration/test_unit_test.rb +0 -8
  206. data/test/method_definer.rb +0 -24
  207. data/test/mini_test_result.rb +0 -90
  208. data/test/minitest_result.rb +0 -49
  209. data/test/simple_counter.rb +0 -13
  210. data/test/test_helper.rb +0 -50
  211. data/test/test_runner.rb +0 -58
  212. data/test/test_unit_result.rb +0 -20
  213. data/test/unit/any_instance_method_test.rb +0 -132
  214. data/test/unit/array_inspect_test.rb +0 -16
  215. data/test/unit/backtrace_filter_test.rb +0 -19
  216. data/test/unit/cardinality_test.rb +0 -56
  217. data/test/unit/central_test.rb +0 -100
  218. data/test/unit/change_state_side_effect_test.rb +0 -41
  219. data/test/unit/class_method_test.rb +0 -223
  220. data/test/unit/class_methods_test.rb +0 -40
  221. data/test/unit/configuration_test.rb +0 -38
  222. data/test/unit/date_time_inspect_test.rb +0 -21
  223. data/test/unit/exception_raiser_test.rb +0 -42
  224. data/test/unit/expectation_list_test.rb +0 -82
  225. data/test/unit/expectation_test.rb +0 -497
  226. data/test/unit/hash_inspect_test.rb +0 -16
  227. data/test/unit/hooks_test.rb +0 -29
  228. data/test/unit/in_state_ordering_constraint_test.rb +0 -43
  229. data/test/unit/method_matcher_test.rb +0 -28
  230. data/test/unit/mock_test.rb +0 -341
  231. data/test/unit/mockery_test.rb +0 -151
  232. data/test/unit/module_methods_test.rb +0 -19
  233. data/test/unit/multiple_yields_test.rb +0 -18
  234. data/test/unit/no_yields_test.rb +0 -18
  235. data/test/unit/object_inspect_test.rb +0 -38
  236. data/test/unit/object_methods_test.rb +0 -46
  237. data/test/unit/parameter_matchers/all_of_test.rb +0 -26
  238. data/test/unit/parameter_matchers/any_of_test.rb +0 -26
  239. data/test/unit/parameter_matchers/anything_test.rb +0 -21
  240. data/test/unit/parameter_matchers/equals_test.rb +0 -25
  241. data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
  242. data/test/unit/parameter_matchers/has_entry_test.rb +0 -129
  243. data/test/unit/parameter_matchers/has_key_test.rb +0 -55
  244. data/test/unit/parameter_matchers/has_value_test.rb +0 -57
  245. data/test/unit/parameter_matchers/includes_test.rb +0 -59
  246. data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
  247. data/test/unit/parameter_matchers/is_a_test.rb +0 -25
  248. data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
  249. data/test/unit/parameter_matchers/not_test.rb +0 -26
  250. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -46
  251. data/test/unit/parameter_matchers/responds_with_test.rb +0 -32
  252. data/test/unit/parameter_matchers/stub_matcher.rb +0 -27
  253. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -25
  254. data/test/unit/parameters_matcher_test.rb +0 -121
  255. data/test/unit/receivers_test.rb +0 -66
  256. data/test/unit/return_values_test.rb +0 -63
  257. data/test/unit/sequence_test.rb +0 -104
  258. data/test/unit/single_return_value_test.rb +0 -14
  259. data/test/unit/single_yield_test.rb +0 -18
  260. data/test/unit/state_machine_test.rb +0 -98
  261. data/test/unit/string_inspect_test.rb +0 -11
  262. data/test/unit/thrower_test.rb +0 -20
  263. data/test/unit/yield_parameters_test.rb +0 -93
@@ -1,70 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class OptionalParameterMatcherTest < 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_all_required_parameters_match_and_no_optional_parameters_are_supplied
17
- test_result = run_as_test do
18
- mock = mock()
19
- mock.expects(:method).with(1, 2, optionally(3, 4))
20
- mock.method(1, 2)
21
- end
22
- assert_passed(test_result)
23
- end
24
-
25
- def test_should_pass_if_all_required_and_optional_parameters_match_and_some_optional_parameters_are_supplied
26
- test_result = run_as_test do
27
- mock = mock()
28
- mock.expects(:method).with(1, 2, optionally(3, 4))
29
- mock.method(1, 2, 3)
30
- end
31
- assert_passed(test_result)
32
- end
33
-
34
- def test_should_pass_if_all_required_and_optional_parameters_match_and_all_optional_parameters_are_supplied
35
- test_result = run_as_test do
36
- mock = mock()
37
- mock.expects(:method).with(1, 2, optionally(3, 4))
38
- mock.method(1, 2, 3, 4)
39
- end
40
- assert_passed(test_result)
41
- end
42
-
43
- def test_should_fail_if_all_required_and_optional_parameters_match_but_too_many_optional_parameters_are_supplied
44
- test_result = run_as_test do
45
- mock = mock()
46
- mock.expects(:method).with(1, 2, optionally(3, 4))
47
- mock.method(1, 2, 3, 4, 5)
48
- end
49
- assert_failed(test_result)
50
- end
51
-
52
- def test_should_fail_if_all_required_parameters_match_but_some_optional_parameters_do_not_match
53
- test_result = run_as_test do
54
- mock = mock()
55
- mock.expects(:method).with(1, 2, optionally(3, 4))
56
- mock.method(1, 2, 4)
57
- end
58
- assert_failed(test_result)
59
- end
60
-
61
- def test_should_fail_if_all_required_parameters_match_but_no_optional_parameters_match
62
- test_result = run_as_test do
63
- mock = mock()
64
- mock.expects(:method).with(1, 2, optionally(3, 4))
65
- mock.method(1, 2, 4, 5)
66
- end
67
- assert_failed(test_result)
68
- end
69
-
70
- end
@@ -1,337 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class ParameterMatcherTest < 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_match_hash_parameter_with_specified_key
17
- test_result = run_as_test do
18
- mock = mock()
19
- mock.expects(:method).with(has_key(:key_1))
20
- mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
21
- end
22
- assert_passed(test_result)
23
- end
24
-
25
- def test_should_not_match_hash_parameter_with_specified_key
26
- test_result = run_as_test do
27
- mock = mock()
28
- mock.expects(:method).with(has_key(:key_1))
29
- mock.method(:key_2 => 'value_2')
30
- end
31
- assert_failed(test_result)
32
- end
33
-
34
- def test_should_match_hash_parameter_with_specified_value
35
- test_result = run_as_test do
36
- mock = mock()
37
- mock.expects(:method).with(has_value('value_1'))
38
- mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
39
- end
40
- assert_passed(test_result)
41
- end
42
-
43
- def test_should_not_match_hash_parameter_with_specified_value
44
- test_result = run_as_test do
45
- mock = mock()
46
- mock.expects(:method).with(has_value('value_1'))
47
- mock.method(:key_2 => 'value_2')
48
- end
49
- assert_failed(test_result)
50
- end
51
-
52
- def test_should_match_hash_parameter_with_specified_key_value_pair
53
- test_result = run_as_test do
54
- mock = mock()
55
- mock.expects(:method).with(has_entry(:key_1, 'value_1'))
56
- mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
57
- end
58
- assert_passed(test_result)
59
- end
60
-
61
- def test_should_not_match_hash_parameter_with_specified_key_value_pair
62
- test_result = run_as_test do
63
- mock = mock()
64
- mock.expects(:method).with(has_entry(:key_1, 'value_2'))
65
- mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
66
- end
67
- assert_failed(test_result)
68
- end
69
-
70
- def test_should_match_hash_parameter_with_specified_hash_entry
71
- test_result = run_as_test do
72
- mock = mock()
73
- mock.expects(:method).with(has_entry(:key_1 => 'value_1'))
74
- mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
75
- end
76
- assert_passed(test_result)
77
- end
78
-
79
- def test_should_not_match_hash_parameter_with_specified_hash_entry
80
- test_result = run_as_test do
81
- mock = mock()
82
- mock.expects(:method).with(has_entry(:key_1 => 'value_2'))
83
- mock.method(:key_1 => 'value_1', :key_2 => 'value_2')
84
- end
85
- assert_failed(test_result)
86
- end
87
-
88
- def test_should_match_hash_parameter_with_specified_entries
89
- test_result = run_as_test do
90
- mock = mock()
91
- mock.expects(:method).with(has_entries(:key_1 => 'value_1', :key_2 => 'value_2'))
92
- mock.method(:key_1 => 'value_1', :key_2 => 'value_2', :key_3 => 'value_3')
93
- end
94
- assert_passed(test_result)
95
- end
96
-
97
- def test_should_not_match_hash_parameter_with_specified_entries
98
- test_result = run_as_test do
99
- mock = mock()
100
- mock.expects(:method).with(has_entries(:key_1 => 'value_1', :key_2 => 'value_2'))
101
- mock.method(:key_1 => 'value_1', :key_2 => 'value_3')
102
- end
103
- assert_failed(test_result)
104
- end
105
-
106
- def test_should_match_parameter_that_matches_regular_expression
107
- test_result = run_as_test do
108
- mock = mock()
109
- mock.expects(:method).with(regexp_matches(/meter/))
110
- mock.method('this parameter should match')
111
- end
112
- assert_passed(test_result)
113
- end
114
-
115
- def test_should_not_match_parameter_that_does_not_match_regular_expression
116
- test_result = run_as_test do
117
- mock = mock()
118
- mock.expects(:method).with(regexp_matches(/something different/))
119
- mock.method('this parameter should not match')
120
- end
121
- assert_failed(test_result)
122
- end
123
-
124
- def test_should_match_hash_parameter_with_specified_entries_using_nested_matchers
125
- test_result = run_as_test do
126
- mock = mock()
127
- mock.expects(:method).with(has_entries(:key_1 => regexp_matches(/value_1/), kind_of(Symbol) => 'value_2'))
128
- mock.method(:key_1 => 'value_1', :key_2 => 'value_2', :key_3 => 'value_3')
129
- end
130
- assert_passed(test_result)
131
- end
132
-
133
- def test_should_not_match_hash_parameter_with_specified_entries_using_nested_matchers
134
- test_result = run_as_test do
135
- mock = mock()
136
- mock.expects(:method).with(has_entries(:key_1 => regexp_matches(/value_1/), kind_of(String) => 'value_2'))
137
- mock.method(:key_1 => 'value_2', :key_2 => 'value_3')
138
- end
139
- assert_failed(test_result)
140
- end
141
-
142
- def test_should_match_parameter_that_matches_any_value
143
- test_result = run_as_test do
144
- mock = mock()
145
- mock.expects(:method).with(any_of('value_1', 'value_2')).times(2)
146
- mock.method('value_1')
147
- mock.method('value_2')
148
- end
149
- assert_passed(test_result)
150
- end
151
-
152
- def test_should_not_match_parameter_that_does_not_match_any_value
153
- test_result = run_as_test do
154
- mock = mock()
155
- mock.expects(:method).with(any_of('value_1', 'value_2'))
156
- mock.method('value_3')
157
- end
158
- assert_failed(test_result)
159
- end
160
-
161
- def test_should_match_parameter_that_matches_any_of_the_given_matchers
162
- test_result = run_as_test do
163
- mock = mock()
164
- mock.expects(:method).with(has_key(:foo) | has_key(:bar)).times(2)
165
- mock.method(:foo => 'fooval')
166
- mock.method(:bar => 'barval')
167
- end
168
- assert_passed(test_result)
169
- end
170
-
171
- def test_should_not_match_parameter_that_does_not_match_any_of_the_given_matchers
172
- test_result = run_as_test do
173
- mock = mock()
174
- mock.expects(:method).with(has_key(:foo) | has_key(:bar))
175
- mock.method(:baz => 'bazval')
176
- end
177
- assert_failed(test_result)
178
- end
179
-
180
- def test_should_match_parameter_that_matches_all_values
181
- test_result = run_as_test do
182
- mock = mock()
183
- mock.expects(:method).with(all_of('value_1', 'value_1'))
184
- mock.method('value_1')
185
- end
186
- assert_passed(test_result)
187
- end
188
-
189
- def test_should_not_match_parameter_that_does_not_match_all_values
190
- test_result = run_as_test do
191
- mock = mock()
192
- mock.expects(:method).with(all_of('value_1', 'value_2'))
193
- mock.method('value_1')
194
- end
195
- assert_failed(test_result)
196
- end
197
-
198
- def test_should_match_parameter_that_matches_all_matchers
199
- test_result = run_as_test do
200
- mock = mock()
201
- mock.expects(:method).with(has_key(:foo) & has_key(:bar))
202
- mock.method(:foo => 'fooval', :bar => 'barval')
203
- end
204
- assert_passed(test_result)
205
- end
206
-
207
- def test_should_not_match_parameter_that_does_not_match_all_matchers
208
- test_result = run_as_test do
209
- mock = mock()
210
- mock.expects(:method).with(has_key(:foo) & has_key(:bar))
211
- mock.method(:foo => 'fooval', :baz => 'bazval')
212
- end
213
- assert_failed(test_result)
214
- end
215
-
216
- def test_should_match_parameter_that_responds_with_specified_value
217
- klass = Class.new do
218
- def quack
219
- 'quack'
220
- end
221
- end
222
- duck = klass.new
223
- test_result = run_as_test do
224
- mock = mock()
225
- mock.expects(:method).with(responds_with(:quack, 'quack'))
226
- mock.method(duck)
227
- end
228
- assert_passed(test_result)
229
- end
230
-
231
- def test_should_not_match_parameter_that_does_not_respond_with_specified_value
232
- klass = Class.new do
233
- def quack
234
- 'woof'
235
- end
236
- end
237
- duck = klass.new
238
- test_result = run_as_test do
239
- mock = mock()
240
- mock.expects(:method).with(responds_with(:quack, 'quack'))
241
- mock.method(duck)
242
- end
243
- assert_failed(test_result)
244
- end
245
-
246
- def test_should_match_parameter_that_has_identical_query_string
247
- test_result = run_as_test do
248
- mock = mock()
249
- mock.expects(:method).with(has_equivalent_query_string('http://example.com/foo?a=1&b=2'))
250
- mock.method('http://example.com/foo?a=1&b=2')
251
- end
252
- assert_passed(test_result)
253
- end
254
-
255
- def test_should_match_parameter_that_has_rearranged_query_string
256
- test_result = run_as_test do
257
- mock = mock()
258
- mock.expects(:method).with(has_equivalent_query_string('http://example.com/foo?b=2&a=1'))
259
- mock.method('http://example.com/foo?a=1&b=2')
260
- end
261
- assert_passed(test_result)
262
- end
263
-
264
- def test_should_not_match_parameter_that_does_not_have_the_same_query_parameters
265
- test_result = run_as_test do
266
- mock = mock()
267
- mock.expects(:method).with(has_equivalent_query_string('http://example.com/foo?a=1'))
268
- mock.method('http://example.com/foo?a=1&b=2')
269
- end
270
- assert_failed(test_result)
271
- end
272
-
273
- def test_should_not_match_parameter_that_has_no_query_parameters_when_they_are_expected
274
- test_result = run_as_test do
275
- mock = mock()
276
- mock.expects(:method).with(has_equivalent_query_string('http://example.com/foo'))
277
- mock.method('http://example.com/foo?a=1&b=2')
278
- end
279
- assert_failed(test_result)
280
- end
281
-
282
- def test_should_not_match_parameter_that_has_the_same_query_string_bit_which_differs_otherwise
283
- test_result = run_as_test do
284
- mock = mock()
285
- mock.expects(:method).with(has_equivalent_query_string('http://a.example.com/foo?a=1&b=2'))
286
- mock.method('http://b.example.com/foo?a=1&b=2')
287
- end
288
- assert_failed(test_result)
289
- end
290
-
291
- def test_should_match_parameter_with_no_domain_or_scheme
292
- test_result = run_as_test do
293
- mock = mock()
294
- mock.expects(:method).with(has_equivalent_query_string('/foo?a=1&b=2'))
295
- mock.method('/foo?a=1&b=2')
296
- end
297
- assert_passed(test_result)
298
- end
299
-
300
- def test_should_match_parameter_when_value_is_divisible_by_four
301
- test_result = run_as_test do
302
- mock = mock()
303
- mock.expects(:method).with { |actual_value| actual_value % 4 == 0 }
304
- mock.method(8)
305
- end
306
- assert_passed(test_result)
307
- end
308
-
309
- def test_should_not_match_parameter_when_value_is_not_divisible_by_four
310
- test_result = run_as_test do
311
- mock = mock()
312
- mock.expects(:method).with { |actual_value| actual_value % 4 == 0 }
313
- mock.method(9)
314
- end
315
- assert_failed(test_result)
316
- end
317
-
318
- def test_should_match_parameters_when_values_add_up_to_ten
319
- test_result = run_as_test do
320
- mock = mock()
321
- matcher = lambda { |*values| values.inject(0) { |sum, n| sum + n } == 10 }
322
- mock.expects(:method).with(&matcher)
323
- mock.method(1, 2, 3, 4)
324
- end
325
- assert_passed(test_result)
326
- end
327
-
328
- def test_should_not_match_parameters_when_values_do_not_add_up_to_ten
329
- test_result = run_as_test do
330
- mock = mock()
331
- matcher = lambda { |*values| values.inject(0) { |sum, n| sum + n } == 10 }
332
- mock.expects(:method).with(&matcher)
333
- mock.method(1, 2, 3, 4, 5)
334
- end
335
- assert_failed(test_result)
336
- end
337
- end
@@ -1,47 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class PartialMockTest < 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_all_expectations_are_satisfied
17
- test_result = run_as_test do
18
- partial_mock_one = "partial_mock_one"
19
- partial_mock_two = "partial_mock_two"
20
-
21
- partial_mock_one.expects(:first)
22
- partial_mock_one.expects(:second)
23
- partial_mock_two.expects(:third)
24
-
25
- partial_mock_one.first
26
- partial_mock_one.second
27
- partial_mock_two.third
28
- end
29
- assert_passed(test_result)
30
- end
31
-
32
- def test_should_fail_if_all_expectations_are_not_satisfied
33
- test_result = run_as_test do
34
- partial_mock_one = "partial_mock_one"
35
- partial_mock_two = "partial_mock_two"
36
-
37
- partial_mock_one.expects(:first)
38
- partial_mock_one.expects(:second)
39
- partial_mock_two.expects(:third)
40
-
41
- partial_mock_one.first
42
- partial_mock_two.third
43
- end
44
- assert_failed(test_result)
45
- end
46
-
47
- end
@@ -1,88 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class PrependTest < 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
- if RUBY_VERSION >= '2.0'
17
-
18
- module Mod1
19
- def my_method
20
- super + " World"
21
- end
22
- end
23
-
24
- module Mod2
25
- def my_method
26
- super + " Wide"
27
- end
28
- end
29
-
30
- class Klass1
31
- prepend Mod1
32
- prepend Mod2
33
-
34
- def my_method
35
- "Hello"
36
- end
37
- end
38
-
39
- class Klass2
40
- class << self
41
- prepend Mod1
42
- prepend Mod2
43
-
44
- def my_method
45
- "Hello"
46
- end
47
- end
48
- end
49
-
50
- def test_stubbing_any_instance_with_multiple_prepended_methods
51
- assert_snapshot_unchanged(Klass1) do
52
- test_result = run_as_test do
53
- Klass1.any_instance.stubs(:my_method).returns("Bye World")
54
- assert_equal "Bye World", Klass1.new.my_method
55
- end
56
- assert_passed(test_result)
57
- end
58
- assert_equal "Hello World Wide", Klass1.new.my_method
59
- end
60
-
61
- def test_stubbing_instance_with_multiple_prepended_methods
62
- object = Klass1.new
63
-
64
- assert_snapshot_unchanged(object) do
65
- test_result = run_as_test do
66
- object.stubs(:my_method).returns("Bye World")
67
- assert_equal "Bye World", object.my_method
68
- assert_equal "Hello World Wide", Klass1.new.my_method
69
- end
70
- assert_passed(test_result)
71
- end
72
- assert_equal "Hello World Wide", object.my_method
73
- end
74
-
75
- def test_stubbing_a_prepended_class_method
76
- assert_snapshot_unchanged(Klass2) do
77
- test_result = run_as_test do
78
- Klass2.stubs(:my_method).returns("Bye World")
79
- assert_equal "Bye World", Klass2.my_method
80
- end
81
- assert_passed(test_result)
82
- end
83
- assert_equal "Hello World Wide", Klass2.my_method
84
- end
85
-
86
- end
87
-
88
- end
@@ -1,39 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class RaiseExceptionTest < 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_raise_exception
17
- exception_class = Class.new(StandardError)
18
- test_result = run_as_test do
19
- foo = stub('foo')
20
- foo.stubs(:bar).raises(exception_class, "my-message")
21
- exception = assert_raises(exception_class) { foo.bar }
22
- assert_equal "my-message", exception.message
23
- end
24
- assert_passed(test_result)
25
- end
26
-
27
- def test_should_raise_two_different_exceptions
28
- exception_one_class = Class.new(StandardError)
29
- exception_two_class = Class.new(StandardError)
30
- test_result = run_as_test do
31
- foo = stub('foo')
32
- foo.stubs(:bar).raises(exception_one_class).then.raises(exception_two_class)
33
- assert_raises(exception_one_class) { foo.bar }
34
- assert_raises(exception_two_class) { foo.bar }
35
- end
36
- assert_passed(test_result)
37
- end
38
-
39
- end
@@ -1,52 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class ReturnValueTest < 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_build_mock_and_explicitly_add_an_expectation_with_a_return_value
17
- test_result = run_as_test do
18
- foo = mock('foo')
19
- foo.expects(:bar).returns('bar')
20
- assert_equal 'bar', foo.bar
21
- end
22
- assert_passed(test_result)
23
- end
24
-
25
- def test_should_build_mock_incorporating_two_expectations_with_return_values
26
- test_result = run_as_test do
27
- foo = mock('foo', :bar => 'bar', :baz => 'baz')
28
- assert_equal 'bar', foo.bar
29
- assert_equal 'baz', foo.baz
30
- end
31
- assert_passed(test_result)
32
- end
33
-
34
- def test_should_build_stub_and_explicitly_add_an_expectation_with_a_return_value
35
- test_result = run_as_test do
36
- foo = stub('foo')
37
- foo.stubs(:bar).returns('bar')
38
- assert_equal 'bar', foo.bar
39
- end
40
- assert_passed(test_result)
41
- end
42
-
43
- def test_should_build_stub_incorporating_two_expectations_with_return_values
44
- test_result = run_as_test do
45
- foo = stub('foo', :bar => 'bar', :baz => 'baz')
46
- assert_equal 'bar', foo.bar
47
- assert_equal 'baz', foo.baz
48
- end
49
- assert_passed(test_result)
50
- end
51
-
52
- end