mocha 1.4.0 → 2.1.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 (269) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +1 -0
  3. data/.rubocop.yml +53 -0
  4. data/.rubocop_todo.yml +27 -0
  5. data/.yardopts +1 -1
  6. data/CONTRIBUTING.md +4 -9
  7. data/COPYING.md +2 -2
  8. data/Gemfile +27 -0
  9. data/MIT-LICENSE.md +1 -1
  10. data/README.md +88 -117
  11. data/RELEASE.md +340 -0
  12. data/Rakefile +53 -52
  13. data/gemfiles/Gemfile.minitest.latest +1 -0
  14. data/gemfiles/Gemfile.test-unit.latest +2 -5
  15. data/lib/mocha/any_instance_method.rb +9 -62
  16. data/lib/mocha/api.rb +84 -74
  17. data/lib/mocha/argument_iterator.rb +4 -8
  18. data/lib/mocha/backtrace_filter.rb +3 -7
  19. data/lib/mocha/block_matcher.rb +31 -0
  20. data/lib/mocha/cardinality.rb +60 -49
  21. data/lib/mocha/central.rb +21 -12
  22. data/lib/mocha/change_state_side_effect.rb +0 -4
  23. data/lib/mocha/class_methods.rb +19 -21
  24. data/lib/mocha/configuration.rb +317 -52
  25. data/lib/mocha/debug.rb +2 -4
  26. data/lib/mocha/deprecation.rb +6 -12
  27. data/lib/mocha/detection/mini_test.rb +0 -2
  28. data/lib/mocha/detection/test_unit.rb +3 -5
  29. data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
  30. data/lib/mocha/exception_raiser.rb +4 -6
  31. data/lib/mocha/expectation.rb +186 -95
  32. data/lib/mocha/expectation_error.rb +1 -1
  33. data/lib/mocha/expectation_error_factory.rb +0 -1
  34. data/lib/mocha/expectation_list.rb +7 -11
  35. data/lib/mocha/hooks.rb +1 -3
  36. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  37. data/lib/mocha/inspect.rb +30 -28
  38. data/lib/mocha/instance_method.rb +14 -3
  39. data/lib/mocha/integration/mini_test/adapter.rb +3 -5
  40. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  41. data/lib/mocha/integration/mini_test.rb +10 -31
  42. data/lib/mocha/integration/monkey_patcher.rb +5 -7
  43. data/lib/mocha/integration/test_unit/adapter.rb +8 -9
  44. data/lib/mocha/integration/test_unit.rb +10 -26
  45. data/lib/mocha/invocation.rb +73 -0
  46. data/lib/mocha/is_a.rb +0 -2
  47. data/lib/mocha/logger.rb +0 -4
  48. data/lib/mocha/macos_version.rb +5 -0
  49. data/lib/mocha/method_matcher.rb +1 -5
  50. data/lib/mocha/minitest.rb +5 -2
  51. data/lib/mocha/mock.rb +104 -68
  52. data/lib/mocha/mockery.rb +70 -99
  53. data/lib/mocha/names.rb +2 -12
  54. data/lib/mocha/not_initialized_error.rb +7 -0
  55. data/lib/mocha/object_methods.rb +25 -31
  56. data/lib/mocha/parameter_matchers/all_of.rb +2 -8
  57. data/lib/mocha/parameter_matchers/any_of.rb +2 -8
  58. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  59. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  60. data/lib/mocha/parameter_matchers/base.rb +7 -13
  61. data/lib/mocha/parameter_matchers/equals.rb +0 -6
  62. data/lib/mocha/parameter_matchers/equivalent_uri.rb +3 -13
  63. data/lib/mocha/parameter_matchers/has_entries.rb +2 -7
  64. data/lib/mocha/parameter_matchers/has_entry.rb +26 -21
  65. data/lib/mocha/parameter_matchers/has_key.rb +2 -7
  66. data/lib/mocha/parameter_matchers/has_keys.rb +53 -0
  67. data/lib/mocha/parameter_matchers/has_value.rb +2 -7
  68. data/lib/mocha/parameter_matchers/includes.rb +4 -6
  69. data/lib/mocha/parameter_matchers/instance_methods.rb +27 -0
  70. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  71. data/lib/mocha/parameter_matchers/is_a.rb +2 -7
  72. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  73. data/lib/mocha/parameter_matchers/not.rb +2 -7
  74. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  75. data/lib/mocha/parameter_matchers/positional_or_keyword_hash.rb +64 -0
  76. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  77. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  78. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  79. data/lib/mocha/parameter_matchers.rb +2 -3
  80. data/lib/mocha/parameters_matcher.rb +8 -11
  81. data/lib/mocha/raised_exception.rb +11 -0
  82. data/lib/mocha/receivers.rb +10 -14
  83. data/lib/mocha/return_values.rb +4 -8
  84. data/lib/mocha/ruby_version.rb +1 -2
  85. data/lib/mocha/sequence.rb +4 -9
  86. data/lib/mocha/single_return_value.rb +2 -5
  87. data/lib/mocha/state_machine.rb +33 -46
  88. data/lib/mocha/stubbed_method.rb +88 -0
  89. data/lib/mocha/stubbing_error.rb +2 -13
  90. data/lib/mocha/test_unit.rb +5 -2
  91. data/lib/mocha/thrower.rb +4 -6
  92. data/lib/mocha/thrown_object.rb +12 -0
  93. data/lib/mocha/version.rb +1 -1
  94. data/lib/mocha/yield_parameters.rb +7 -17
  95. data/mocha.gemspec +15 -65
  96. metadata +27 -257
  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 -5
  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 -58
  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 -301
  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 -201
  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 -75
  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 -76
  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 -16
  205. data/test/execution_point.rb +0 -38
  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 -136
  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 -229
  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 -350
  234. data/test/unit/mockery_test.rb +0 -157
  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/equivalent_uri_test.rb +0 -51
  245. data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
  246. data/test/unit/parameter_matchers/has_entry_test.rb +0 -129
  247. data/test/unit/parameter_matchers/has_key_test.rb +0 -55
  248. data/test/unit/parameter_matchers/has_value_test.rb +0 -57
  249. data/test/unit/parameter_matchers/includes_test.rb +0 -107
  250. data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
  251. data/test/unit/parameter_matchers/is_a_test.rb +0 -25
  252. data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
  253. data/test/unit/parameter_matchers/not_test.rb +0 -26
  254. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -46
  255. data/test/unit/parameter_matchers/responds_with_test.rb +0 -32
  256. data/test/unit/parameter_matchers/stub_matcher.rb +0 -27
  257. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -25
  258. data/test/unit/parameters_matcher_test.rb +0 -121
  259. data/test/unit/receivers_test.rb +0 -66
  260. data/test/unit/return_values_test.rb +0 -63
  261. data/test/unit/sequence_test.rb +0 -104
  262. data/test/unit/single_return_value_test.rb +0 -14
  263. data/test/unit/single_yield_test.rb +0 -18
  264. data/test/unit/state_machine_test.rb +0 -98
  265. data/test/unit/string_inspect_test.rb +0 -11
  266. data/test/unit/thrower_test.rb +0 -20
  267. data/test/unit/yield_parameters_test.rb +0 -93
  268. data/yard-templates/default/layout/html/google_analytics.erb +0 -11
  269. data/yard-templates/default/layout/html/setup.rb +0 -6
@@ -1,78 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubInstanceMethodDefinedOnModuleTest < 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_public_method_and_leave_it_unchanged_after_test
17
- mod = Module.new do
18
- def my_module_method
19
- :original_return_value
20
- end
21
- public :my_module_method
22
- end
23
- instance = Class.new do
24
- include mod
25
- end.new
26
- assert_snapshot_unchanged(instance) do
27
- test_result = run_as_test do
28
- instance.stubs(:my_module_method).returns(:new_return_value)
29
- assert_method_visibility instance, :my_module_method, :public
30
- assert_equal :new_return_value, instance.my_module_method
31
- end
32
- assert_passed(test_result)
33
- end
34
- assert_equal :original_return_value, instance.my_module_method
35
- end
36
-
37
- def test_should_stub_protected_method_and_leave_it_unchanged_after_test
38
- mod = Module.new do
39
- def my_module_method
40
- :original_return_value
41
- end
42
- protected :my_module_method
43
- end
44
- instance = Class.new do
45
- include mod
46
- end.new
47
- assert_snapshot_unchanged(instance) do
48
- test_result = run_as_test do
49
- instance.stubs(:my_module_method).returns(:new_return_value)
50
- assert_method_visibility instance, :my_module_method, :protected
51
- assert_equal :new_return_value, instance.send(:my_module_method)
52
- end
53
- assert_passed(test_result)
54
- end
55
- assert_equal :original_return_value, instance.send(:my_module_method)
56
- end
57
-
58
- def test_should_stub_private_method_and_leave_it_unchanged_after_test
59
- mod = Module.new do
60
- def my_module_method
61
- :original_return_value
62
- end
63
- private :my_module_method
64
- end
65
- instance = Class.new do
66
- include mod
67
- end.new
68
- assert_snapshot_unchanged(instance) do
69
- test_result = run_as_test do
70
- instance.stubs(:my_module_method).returns(:new_return_value)
71
- assert_method_visibility instance, :my_module_method, :private
72
- assert_equal :new_return_value, instance.send(:my_module_method)
73
- end
74
- assert_passed(test_result)
75
- end
76
- assert_equal :original_return_value, instance.send(:my_module_method)
77
- end
78
- end
@@ -1,75 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubInstanceMethodDefinedOnObjectClassTest < 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_public_method_and_leave_it_unchanged_after_test
17
- Object.class_eval do
18
- def my_instance_method
19
- :original_return_value
20
- end
21
- public :my_instance_method
22
- end
23
- instance = Class.new.new
24
- assert_snapshot_unchanged(instance) do
25
- test_result = run_as_test do
26
- instance.stubs(:my_instance_method).returns(:new_return_value)
27
- assert_equal :new_return_value, instance.my_instance_method
28
- end
29
- assert_passed(test_result)
30
- end
31
- assert_equal :original_return_value, instance.my_instance_method
32
- ensure
33
- Object.class_eval { remove_method :my_instance_method }
34
- end
35
-
36
- def test_should_stub_protected_method_and_leave_it_unchanged_after_test
37
- Object.class_eval do
38
- def my_instance_method
39
- :original_return_value
40
- end
41
- protected :my_instance_method
42
- end
43
- instance = Class.new.new
44
- assert_snapshot_unchanged(instance) do
45
- test_result = run_as_test do
46
- instance.stubs(:my_instance_method).returns(:new_return_value)
47
- assert_equal :new_return_value, instance.send(:my_instance_method)
48
- end
49
- assert_passed(test_result)
50
- end
51
- assert_equal :original_return_value, instance.send(:my_instance_method)
52
- ensure
53
- Object.class_eval { remove_method :my_instance_method }
54
- end
55
-
56
- def test_should_stub_private_method_and_leave_it_unchanged_after_test
57
- Object.class_eval do
58
- def my_instance_method
59
- :original_return_value
60
- end
61
- private :my_instance_method
62
- end
63
- instance = Class.new.new
64
- assert_snapshot_unchanged(instance) do
65
- test_result = run_as_test do
66
- instance.stubs(:my_instance_method).returns(:new_return_value)
67
- assert_equal :new_return_value, instance.send(:my_instance_method)
68
- end
69
- assert_passed(test_result)
70
- end
71
- assert_equal :original_return_value, instance.send(:my_instance_method)
72
- ensure
73
- Object.class_eval { remove_method :my_instance_method }
74
- end
75
- end
@@ -1,70 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubInstanceMethodDefinedOnSingletonClassTest < 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_public_method_and_leave_it_unchanged_after_test
17
- instance = Class.new.new
18
- class << instance
19
- def my_singleton_method
20
- :original_return_value
21
- end
22
- public :my_singleton_method
23
- end
24
- assert_snapshot_unchanged(instance) do
25
- test_result = run_as_test do
26
- instance.stubs(:my_singleton_method).returns(:stubbed_return_value)
27
- assert_equal :stubbed_return_value, instance.my_singleton_method
28
- end
29
- assert_passed(test_result)
30
- end
31
- assert_equal :original_return_value, instance.my_singleton_method
32
- end
33
-
34
- def test_should_stub_protected_method_and_leave_it_unchanged_after_test
35
- instance = Class.new.new
36
- class << instance
37
- def my_singleton_method
38
- :original_return_value
39
- end
40
- protected :my_singleton_method
41
- end
42
- assert_snapshot_unchanged(instance) do
43
- test_result = run_as_test do
44
- instance.stubs(:my_singleton_method).returns(:stubbed_return_value)
45
- assert_equal :stubbed_return_value, instance.send(:my_singleton_method)
46
- end
47
- assert_passed(test_result)
48
- end
49
- assert_equal :original_return_value, instance.send(:my_singleton_method)
50
- end
51
-
52
- def test_should_stub_private_method_and_leave_it_unchanged_after_test
53
- instance = Class.new.new
54
- class << instance
55
- def my_singleton_method
56
- :original_return_value
57
- end
58
- private :my_singleton_method
59
- end
60
- assert_snapshot_unchanged(instance) do
61
- test_result = run_as_test do
62
- instance.stubs(:my_singleton_method).returns(:stubbed_return_value)
63
- assert_equal :stubbed_return_value, instance.send(:my_singleton_method)
64
- end
65
- assert_passed(test_result)
66
- end
67
- assert_equal :original_return_value, instance.send(:my_singleton_method)
68
- end
69
-
70
- end
@@ -1,72 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubInstanceMethodDefinedOnSuperclassTest < 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_public_method_and_leave_it_unchanged_after_test
17
- superklass = Class.new do
18
- def my_superclass_method
19
- :original_return_value
20
- end
21
- public :my_superclass_method
22
- end
23
- klass = Class.new(superklass)
24
- instance = klass.new
25
- assert_snapshot_unchanged(instance) do
26
- test_result = run_as_test do
27
- instance.stubs(:my_superclass_method).returns(:new_return_value)
28
- assert_equal :new_return_value, instance.my_superclass_method
29
- end
30
- assert_passed(test_result)
31
- end
32
- assert_equal :original_return_value, instance.my_superclass_method
33
- end
34
-
35
- def test_should_stub_protected_method_and_leave_it_unchanged_after_test
36
- superklass = Class.new do
37
- def my_superclass_method
38
- :original_return_value
39
- end
40
- protected :my_superclass_method
41
- end
42
- klass = Class.new(superklass)
43
- instance = klass.new
44
- assert_snapshot_unchanged(instance) do
45
- test_result = run_as_test do
46
- instance.stubs(:my_superclass_method).returns(:new_return_value)
47
- assert_equal :new_return_value, instance.send(:my_superclass_method)
48
- end
49
- assert_passed(test_result)
50
- end
51
- assert_equal :original_return_value, instance.send(:my_superclass_method)
52
- end
53
-
54
- def test_should_stub_private_method_and_leave_it_unchanged_after_test
55
- superklass = Class.new do
56
- def my_superclass_method
57
- :original_return_value
58
- end
59
- private :my_superclass_method
60
- end
61
- klass = Class.new(superklass)
62
- instance = klass.new
63
- assert_snapshot_unchanged(instance) do
64
- test_result = run_as_test do
65
- instance.stubs(:my_superclass_method).returns(:new_return_value)
66
- assert_equal :new_return_value, instance.send(:my_superclass_method)
67
- end
68
- assert_passed(test_result)
69
- end
70
- assert_equal :original_return_value, instance.send(:my_superclass_method)
71
- end
72
- end
@@ -1,39 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- unless Mocha::PRE_RUBY_V19
5
- class StubMethodDefinedOnModuleAndAliasedTest < Mocha::TestCase
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_stubbing_class_method_defined_by_aliasing_module_instance_method
17
- mod = Module.new do
18
- def module_instance_method
19
- 'module-instance-method'
20
- end
21
- end
22
-
23
- klass = Class.new do
24
- extend mod
25
- class << self
26
- alias_method :aliased_module_instance_method, :module_instance_method
27
- end
28
- end
29
-
30
- assert_snapshot_unchanged(klass) do
31
- test_result = run_as_test do
32
- klass.stubs(:aliased_module_instance_method).returns('stubbed-aliased-module-instance-method')
33
- assert_equal 'stubbed-aliased-module-instance-method', klass.aliased_module_instance_method
34
- end
35
- assert_passed(test_result)
36
- end
37
- end
38
- end
39
- end
@@ -1,201 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubModuleMethodTest < 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_method_within_test
17
- mod = Module.new do
18
- def self.my_module_method
19
- :original_return_value
20
- end
21
- end
22
- test_result = run_as_test do
23
- mod.stubs(:my_module_method).returns(:new_return_value)
24
- assert_equal :new_return_value, mod.my_module_method
25
- end
26
- assert_passed(test_result)
27
- end
28
-
29
- def test_should_leave_stubbed_public_method_unchanged_after_test
30
- mod = Module.new do
31
- class << self
32
- def my_module_method
33
- :original_return_value
34
- end
35
- public :my_module_method
36
- end
37
- end
38
- run_as_test do
39
- mod.stubs(:my_module_method).returns(:new_return_value)
40
- end
41
- assert mod.public_methods(false).any? { |m| m.to_s == 'my_module_method' }
42
- assert_equal :original_return_value, mod.my_module_method
43
- end
44
-
45
- def test_should_leave_stubbed_protected_method_unchanged_after_test
46
- mod = Module.new do
47
- class << self
48
- def my_module_method
49
- :original_return_value
50
- end
51
- protected :my_module_method
52
- def my_unprotected_module_method
53
- my_module_method
54
- end
55
- end
56
- end
57
- run_as_test do
58
- mod.stubs(:my_module_method).returns(:new_return_value)
59
- end
60
- assert mod.protected_methods(false).any? { |m| m.to_s == 'my_module_method' }
61
- assert_equal :original_return_value, mod.my_unprotected_module_method
62
- end
63
-
64
- def test_should_leave_stubbed_private_method_unchanged_after_test
65
- mod = Module.new do
66
- class << self
67
- def my_module_method
68
- :original_return_value
69
- end
70
- private :my_module_method
71
- end
72
- end
73
- run_as_test do
74
- mod.stubs(:my_module_method).returns(:new_return_value)
75
- end
76
- assert mod.private_methods(false).any? { |m| m.to_s == 'my_module_method' }
77
- assert_equal :original_return_value, mod.send(:my_module_method)
78
- end
79
-
80
- def test_should_reset_expectations_after_test
81
- mod = Module.new do
82
- def self.my_module_method
83
- :original_return_value
84
- end
85
- end
86
- run_as_test do
87
- mod.stubs(:my_module_method)
88
- end
89
- assert_equal 0, mod.mocha.__expectations__.length
90
- end
91
-
92
- def test_should_be_able_to_stub_a_superclass_method
93
- supermod = Module.new do
94
- def self.my_superclass_method
95
- :original_return_value
96
- end
97
- end
98
- mod = Module.new do
99
- include supermod
100
- end
101
- test_result = run_as_test do
102
- mod.stubs(:my_superclass_method).returns(:new_return_value)
103
- assert_equal :new_return_value, mod.my_superclass_method
104
- end
105
- assert_passed(test_result)
106
- assert supermod.public_methods.any? { |m| m.to_s == 'my_superclass_method' }
107
- assert !mod.public_methods(false).any? { |m| m.to_s == 'my_superclass_method' }
108
- assert_equal :original_return_value, supermod.my_superclass_method
109
- end
110
-
111
- def test_should_be_able_to_stub_method_if_ruby18_public_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
112
- ruby18_mod = Module.new do
113
- class << self
114
- def public_methods(include_superclass = true)
115
- ['my_module_method']
116
- end
117
- end
118
- end
119
- test_result = run_as_test do
120
- ruby18_mod.stubs(:my_module_method).returns(:new_return_value)
121
- assert_equal :new_return_value, ruby18_mod.my_module_method
122
- end
123
- assert_passed(test_result)
124
- end
125
-
126
- def test_should_be_able_to_stub_method_if_ruby19_public_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
127
- ruby19_mod = Module.new do
128
- class << self
129
- def public_methods(include_superclass = true)
130
- [:my_module_method]
131
- end
132
- end
133
- end
134
- test_result = run_as_test do
135
- ruby19_mod.stubs(:my_module_method).returns(:new_return_value)
136
- assert_equal :new_return_value, ruby19_mod.my_module_method
137
- end
138
- assert_passed(test_result)
139
- end
140
-
141
- def test_should_be_able_to_stub_method_if_ruby_18_protected_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
142
- ruby18_mod = Module.new do
143
- class << self
144
- def protected_methods(include_superclass = true)
145
- ['my_module_method']
146
- end
147
- end
148
- end
149
- test_result = run_as_test do
150
- ruby18_mod.stubs(:my_module_method).returns(:new_return_value)
151
- assert_equal :new_return_value, ruby18_mod.my_module_method
152
- end
153
- assert_passed(test_result)
154
- end
155
-
156
- def test_should_be_able_to_stub_method_if_ruby19_protected_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
157
- ruby19_mod = Module.new do
158
- class << self
159
- def protected_methods(include_superclass = true)
160
- [:my_module_method]
161
- end
162
- end
163
- end
164
- test_result = run_as_test do
165
- ruby19_mod.stubs(:my_module_method).returns(:new_return_value)
166
- assert_equal :new_return_value, ruby19_mod.my_module_method
167
- end
168
- assert_passed(test_result)
169
- end
170
-
171
- def test_should_be_able_to_stub_method_if_ruby18_private_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
172
- ruby18_mod = Module.new do
173
- class << self
174
- def private_methods(include_superclass = true)
175
- ['my_module_method']
176
- end
177
- end
178
- end
179
- test_result = run_as_test do
180
- ruby18_mod.stubs(:my_module_method).returns(:new_return_value)
181
- assert_equal :new_return_value, ruby18_mod.my_module_method
182
- end
183
- assert_passed(test_result)
184
- end
185
-
186
- def test_should_be_able_to_stub_method_if_ruby19_private_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
187
- ruby19_mod = Module.new do
188
- class << self
189
- def private_methods(include_superclass = true)
190
- [:my_module_method]
191
- end
192
- end
193
- end
194
- test_result = run_as_test do
195
- ruby19_mod.stubs(:my_module_method).returns(:new_return_value)
196
- assert_equal :new_return_value, ruby19_mod.my_module_method
197
- end
198
- assert_passed(test_result)
199
- end
200
-
201
- end
@@ -1,52 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubTest < 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_stub_and_explicitly_add_an_expectation
17
- test_result = run_as_test do
18
- foo = stub()
19
- foo.stubs(:bar)
20
- foo.bar
21
- end
22
- assert_passed(test_result)
23
- end
24
-
25
- def test_should_build_named_stub_and_explicitly_add_an_expectation
26
- test_result = run_as_test do
27
- foo = stub('foo')
28
- foo.stubs(:bar)
29
- foo.bar
30
- end
31
- assert_passed(test_result)
32
- end
33
-
34
- def test_should_build_stub_incorporating_two_expectations
35
- test_result = run_as_test do
36
- foo = stub(:bar => 'bar', :baz => 'baz')
37
- foo.bar
38
- foo.baz
39
- end
40
- assert_passed(test_result)
41
- end
42
-
43
- def test_should_build_named_stub_incorporating_two_expectations
44
- test_result = run_as_test do
45
- foo = stub('foo', :bar => 'bar', :baz => 'baz')
46
- foo.bar
47
- foo.baz
48
- end
49
- assert_passed(test_result)
50
- end
51
-
52
- end
@@ -1,102 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class Widget
5
-
6
- def model
7
- 'original_model'
8
- end
9
-
10
- class << self
11
-
12
- def find(options)
13
- []
14
- end
15
-
16
- def create(attributes)
17
- Widget.new
18
- end
19
-
20
- end
21
-
22
- end
23
-
24
- module Thingy
25
-
26
- def self.wotsit
27
- :hoojamaflip
28
- end
29
-
30
- end
31
-
32
- class StubbaExampleTest < Mocha::TestCase
33
-
34
- def test_should_stub_instance_method
35
- widget = Widget.new
36
- widget.expects(:model).returns('different_model')
37
- assert_equal 'different_model', widget.model
38
- end
39
-
40
- def test_should_stub_module_method
41
- should_stub_module_method
42
- end
43
-
44
- def test_should_stub_module_method_again
45
- should_stub_module_method
46
- end
47
-
48
- def test_should_stub_class_method
49
- should_stub_class_method
50
- end
51
-
52
- def test_should_stub_class_method_again
53
- should_stub_class_method
54
- end
55
-
56
- def test_should_stub_instance_method_on_any_instance_of_a_class
57
- should_stub_instance_method_on_any_instance_of_a_class
58
- end
59
-
60
- def test_should_stub_instance_method_on_any_instance_of_a_class_again
61
- should_stub_instance_method_on_any_instance_of_a_class
62
- end
63
-
64
- def test_should_stub_two_different_class_methods
65
- should_stub_two_different_class_methods
66
- end
67
-
68
- def test_should_stub_two_different_class_methods_again
69
- should_stub_two_different_class_methods
70
- end
71
-
72
- private
73
-
74
- def should_stub_module_method
75
- Thingy.expects(:wotsit).returns(:dooda)
76
- assert_equal :dooda, Thingy.wotsit
77
- end
78
-
79
- def should_stub_class_method
80
- widgets = [Widget.new]
81
- Widget.expects(:find).with(:all).returns(widgets)
82
- assert_equal widgets, Widget.find(:all)
83
- end
84
-
85
- def should_stub_two_different_class_methods
86
- found_widgets = [Widget.new]
87
- created_widget = Widget.new
88
- Widget.expects(:find).with(:all).returns(found_widgets)
89
- Widget.expects(:create).with(:model => 'wombat').returns(created_widget)
90
- assert_equal found_widgets, Widget.find(:all)
91
- assert_equal created_widget, Widget.create(:model => 'wombat')
92
- end
93
-
94
- def should_stub_instance_method_on_any_instance_of_a_class
95
- Widget.any_instance.expects(:model).at_least_once.returns('another_model')
96
- widget_1 = Widget.new
97
- widget_2 = Widget.new
98
- assert_equal 'another_model', widget_1.model
99
- assert_equal 'another_model', widget_2.model
100
- end
101
-
102
- end