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,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,89 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
- require 'mocha/ruby_version'
4
-
5
- class PrependTest < Mocha::TestCase
6
-
7
- include AcceptanceTest
8
-
9
- def setup
10
- setup_acceptance_test
11
- end
12
-
13
- def teardown
14
- teardown_acceptance_test
15
- end
16
-
17
- if Mocha::RUBY_V2_PLUS
18
-
19
- module Mod1
20
- def my_method
21
- super + " World"
22
- end
23
- end
24
-
25
- module Mod2
26
- def my_method
27
- super + " Wide"
28
- end
29
- end
30
-
31
- class Klass1
32
- prepend Mod1
33
- prepend Mod2
34
-
35
- def my_method
36
- "Hello"
37
- end
38
- end
39
-
40
- class Klass2
41
- class << self
42
- prepend Mod1
43
- prepend Mod2
44
-
45
- def my_method
46
- "Hello"
47
- end
48
- end
49
- end
50
-
51
- def test_stubbing_any_instance_with_multiple_prepended_methods
52
- assert_snapshot_unchanged(Klass1) do
53
- test_result = run_as_test do
54
- Klass1.any_instance.stubs(:my_method).returns("Bye World")
55
- assert_equal "Bye World", Klass1.new.my_method
56
- end
57
- assert_passed(test_result)
58
- end
59
- assert_equal "Hello World Wide", Klass1.new.my_method
60
- end
61
-
62
- def test_stubbing_instance_with_multiple_prepended_methods
63
- object = Klass1.new
64
-
65
- assert_snapshot_unchanged(object) do
66
- test_result = run_as_test do
67
- object.stubs(:my_method).returns("Bye World")
68
- assert_equal "Bye World", object.my_method
69
- assert_equal "Hello World Wide", Klass1.new.my_method
70
- end
71
- assert_passed(test_result)
72
- end
73
- assert_equal "Hello World Wide", object.my_method
74
- end
75
-
76
- def test_stubbing_a_prepended_class_method
77
- assert_snapshot_unchanged(Klass2) do
78
- test_result = run_as_test do
79
- Klass2.stubs(:my_method).returns("Bye World")
80
- assert_equal "Bye World", Klass2.my_method
81
- end
82
- assert_passed(test_result)
83
- end
84
- assert_equal "Hello World Wide", Klass2.my_method
85
- end
86
-
87
- end
88
-
89
- 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