mocha 1.2.1 → 1.16.1

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 (265) 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/Gemfile +29 -0
  8. data/README.md +104 -106
  9. data/RELEASE.md +277 -1
  10. data/Rakefile +46 -44
  11. data/gemfiles/Gemfile.minitest.latest +1 -0
  12. data/gemfiles/Gemfile.test-unit.latest +2 -5
  13. data/init.rb +1 -3
  14. data/lib/mocha/any_instance_method.rb +9 -62
  15. data/lib/mocha/api.rb +144 -68
  16. data/lib/mocha/argument_iterator.rb +4 -8
  17. data/lib/mocha/backtrace_filter.rb +1 -5
  18. data/lib/mocha/block_matcher.rb +31 -0
  19. data/lib/mocha/cardinality.rb +60 -49
  20. data/lib/mocha/central.rb +21 -12
  21. data/lib/mocha/change_state_side_effect.rb +0 -4
  22. data/lib/mocha/class_methods.rb +19 -21
  23. data/lib/mocha/configuration.rb +372 -18
  24. data/lib/mocha/debug.rb +3 -2
  25. data/lib/mocha/deprecation.rb +8 -11
  26. data/lib/mocha/detection/mini_test.rb +0 -2
  27. data/lib/mocha/detection/test_unit.rb +3 -5
  28. data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
  29. data/lib/mocha/exception_raiser.rb +4 -6
  30. data/lib/mocha/expectation.rb +125 -89
  31. data/lib/mocha/expectation_error.rb +1 -1
  32. data/lib/mocha/expectation_error_factory.rb +0 -1
  33. data/lib/mocha/expectation_list.rb +7 -11
  34. data/lib/mocha/hooks.rb +1 -3
  35. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  36. data/lib/mocha/inspect.rb +30 -38
  37. data/lib/mocha/instance_method.rb +11 -8
  38. data/lib/mocha/integration/mini_test/adapter.rb +2 -4
  39. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  40. data/lib/mocha/integration/mini_test/nothing.rb +4 -4
  41. data/lib/mocha/integration/mini_test/version_13.rb +4 -1
  42. data/lib/mocha/integration/mini_test/version_140.rb +4 -1
  43. data/lib/mocha/integration/mini_test/version_141.rb +4 -1
  44. data/lib/mocha/integration/mini_test/version_142_to_172.rb +4 -1
  45. data/lib/mocha/integration/mini_test/version_200.rb +4 -1
  46. data/lib/mocha/integration/mini_test/version_201_to_222.rb +4 -1
  47. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +4 -1
  48. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +4 -1
  49. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +4 -1
  50. data/lib/mocha/integration/mini_test.rb +7 -0
  51. data/lib/mocha/integration/monkey_patcher.rb +5 -7
  52. data/lib/mocha/integration/test_unit/adapter.rb +5 -6
  53. data/lib/mocha/integration/test_unit/gem_version_200.rb +5 -2
  54. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +5 -2
  55. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +5 -2
  56. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +5 -2
  57. data/lib/mocha/integration/test_unit/nothing.rb +4 -4
  58. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +4 -1
  59. data/lib/mocha/integration/test_unit.rb +7 -2
  60. data/lib/mocha/integration.rb +2 -5
  61. data/lib/mocha/invocation.rb +86 -0
  62. data/lib/mocha/is_a.rb +0 -2
  63. data/lib/mocha/logger.rb +0 -4
  64. data/lib/mocha/macos_version.rb +5 -0
  65. data/lib/mocha/method_matcher.rb +1 -5
  66. data/lib/mocha/minitest.rb +9 -0
  67. data/lib/mocha/mock.rb +102 -58
  68. data/lib/mocha/mockery.rb +70 -99
  69. data/lib/mocha/names.rb +2 -12
  70. data/lib/mocha/not_initialized_error.rb +7 -0
  71. data/lib/mocha/object_methods.rb +25 -31
  72. data/lib/mocha/parameter_matchers/all_of.rb +2 -8
  73. data/lib/mocha/parameter_matchers/any_of.rb +2 -8
  74. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  75. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  76. data/lib/mocha/parameter_matchers/base.rb +6 -12
  77. data/lib/mocha/parameter_matchers/equals.rb +0 -6
  78. data/lib/mocha/parameter_matchers/{query_string.rb → equivalent_uri.rb} +15 -15
  79. data/lib/mocha/parameter_matchers/has_entries.rb +2 -7
  80. data/lib/mocha/parameter_matchers/has_entry.rb +26 -21
  81. data/lib/mocha/parameter_matchers/has_key.rb +2 -7
  82. data/lib/mocha/parameter_matchers/has_keys.rb +53 -0
  83. data/lib/mocha/parameter_matchers/has_value.rb +2 -7
  84. data/lib/mocha/parameter_matchers/includes.rb +6 -7
  85. data/lib/mocha/parameter_matchers/instance_methods.rb +18 -0
  86. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  87. data/lib/mocha/parameter_matchers/is_a.rb +2 -7
  88. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  89. data/lib/mocha/parameter_matchers/not.rb +2 -7
  90. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  91. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  92. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  93. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  94. data/lib/mocha/parameter_matchers.rb +3 -4
  95. data/lib/mocha/parameters_matcher.rb +6 -9
  96. data/lib/mocha/raised_exception.rb +11 -0
  97. data/lib/mocha/receivers.rb +10 -14
  98. data/lib/mocha/return_values.rb +4 -8
  99. data/lib/mocha/ruby_version.rb +8 -1
  100. data/lib/mocha/sequence.rb +4 -9
  101. data/lib/mocha/setup.rb +5 -0
  102. data/lib/mocha/single_return_value.rb +2 -5
  103. data/lib/mocha/state_machine.rb +33 -46
  104. data/lib/mocha/stubbed_method.rb +124 -0
  105. data/lib/mocha/stubbing_error.rb +2 -13
  106. data/lib/mocha/test_unit.rb +8 -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/mocha.gemspec +14 -65
  112. data/yard-templates/default/layout/html/google_analytics.erb +6 -9
  113. data/yard-templates/default/layout/html/setup.rb +2 -3
  114. metadata +25 -247
  115. data/bin/build-matrix +0 -70
  116. data/gemfiles/Gemfile.minitest.1.3.0 +0 -7
  117. data/gemfiles/Gemfile.minitest.1.4.0 +0 -7
  118. data/gemfiles/Gemfile.minitest.1.4.1 +0 -7
  119. data/gemfiles/Gemfile.minitest.1.4.2 +0 -7
  120. data/gemfiles/Gemfile.minitest.2.0.0 +0 -7
  121. data/gemfiles/Gemfile.minitest.2.0.1 +0 -7
  122. data/gemfiles/Gemfile.minitest.2.11.0 +0 -7
  123. data/gemfiles/Gemfile.minitest.2.11.2 +0 -7
  124. data/gemfiles/Gemfile.minitest.2.3.0 +0 -7
  125. data/gemfiles/Gemfile.test-unit.2.0.0 +0 -7
  126. data/gemfiles/Gemfile.test-unit.2.0.1 +0 -7
  127. data/gemfiles/Gemfile.test-unit.2.0.3 +0 -7
  128. data/lib/mocha/class_method.rb +0 -119
  129. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +0 -58
  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_272_test.rb +0 -52
  150. data/test/acceptance/issue_65_test.rb +0 -63
  151. data/test/acceptance/issue_70_test.rb +0 -55
  152. data/test/acceptance/mocha_example_test.rb +0 -98
  153. data/test/acceptance/mocha_test_result_test.rb +0 -84
  154. data/test/acceptance/mock_test.rb +0 -100
  155. data/test/acceptance/mock_with_initializer_block_test.rb +0 -51
  156. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -78
  157. data/test/acceptance/multiple_expectations_failure_message_test.rb +0 -68
  158. data/test/acceptance/optional_parameters_test.rb +0 -70
  159. data/test/acceptance/parameter_matcher_test.rb +0 -337
  160. data/test/acceptance/partial_mocks_test.rb +0 -47
  161. data/test/acceptance/prepend_test.rb +0 -89
  162. data/test/acceptance/raise_exception_test.rb +0 -39
  163. data/test/acceptance/return_value_test.rb +0 -52
  164. data/test/acceptance/sequence_test.rb +0 -192
  165. data/test/acceptance/states_test.rb +0 -70
  166. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +0 -34
  167. data/test/acceptance/stub_any_instance_method_test.rb +0 -280
  168. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +0 -106
  169. data/test/acceptance/stub_class_method_defined_on_class_test.rb +0 -78
  170. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -75
  171. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +0 -112
  172. data/test/acceptance/stub_everything_test.rb +0 -56
  173. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +0 -93
  174. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -69
  175. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -69
  176. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -75
  177. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -78
  178. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +0 -75
  179. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -70
  180. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -72
  181. data/test/acceptance/stub_method_defined_on_module_and_aliased_test.rb +0 -39
  182. data/test/acceptance/stub_module_method_test.rb +0 -163
  183. data/test/acceptance/stub_test.rb +0 -52
  184. data/test/acceptance/stubba_example_test.rb +0 -102
  185. data/test/acceptance/stubba_test_result_test.rb +0 -66
  186. data/test/acceptance/stubbing_error_backtrace_test.rb +0 -64
  187. data/test/acceptance/stubbing_frozen_object_test.rb +0 -88
  188. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +0 -48
  189. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -65
  190. data/test/acceptance/stubbing_nil_test.rb +0 -61
  191. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +0 -143
  192. data/test/acceptance/stubbing_non_existent_class_method_test.rb +0 -157
  193. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +0 -147
  194. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -130
  195. data/test/acceptance/stubbing_non_public_class_method_test.rb +0 -163
  196. data/test/acceptance/stubbing_non_public_instance_method_test.rb +0 -143
  197. data/test/acceptance/stubbing_on_non_mock_object_test.rb +0 -64
  198. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +0 -35
  199. data/test/acceptance/throw_test.rb +0 -45
  200. data/test/acceptance/unexpected_invocation_test.rb +0 -25
  201. data/test/acceptance/unstubbing_test.rb +0 -168
  202. data/test/assertions.rb +0 -8
  203. data/test/deprecation_disabler.rb +0 -15
  204. data/test/execution_point.rb +0 -36
  205. data/test/integration/mini_test_test.rb +0 -8
  206. data/test/integration/shared_tests.rb +0 -174
  207. data/test/integration/test_unit_test.rb +0 -8
  208. data/test/method_definer.rb +0 -24
  209. data/test/mini_test_result.rb +0 -90
  210. data/test/minitest_result.rb +0 -49
  211. data/test/simple_counter.rb +0 -13
  212. data/test/test_helper.rb +0 -50
  213. data/test/test_runner.rb +0 -58
  214. data/test/test_unit_result.rb +0 -20
  215. data/test/unit/any_instance_method_test.rb +0 -134
  216. data/test/unit/array_inspect_test.rb +0 -16
  217. data/test/unit/backtrace_filter_test.rb +0 -19
  218. data/test/unit/cardinality_test.rb +0 -56
  219. data/test/unit/central_test.rb +0 -100
  220. data/test/unit/change_state_side_effect_test.rb +0 -41
  221. data/test/unit/class_method_test.rb +0 -225
  222. data/test/unit/class_methods_test.rb +0 -40
  223. data/test/unit/configuration_test.rb +0 -38
  224. data/test/unit/date_time_inspect_test.rb +0 -21
  225. data/test/unit/exception_raiser_test.rb +0 -42
  226. data/test/unit/expectation_list_test.rb +0 -82
  227. data/test/unit/expectation_test.rb +0 -497
  228. data/test/unit/hash_inspect_test.rb +0 -16
  229. data/test/unit/hooks_test.rb +0 -29
  230. data/test/unit/in_state_ordering_constraint_test.rb +0 -43
  231. data/test/unit/method_matcher_test.rb +0 -28
  232. data/test/unit/mock_test.rb +0 -342
  233. data/test/unit/mockery_test.rb +0 -151
  234. data/test/unit/module_methods_test.rb +0 -19
  235. data/test/unit/multiple_yields_test.rb +0 -18
  236. data/test/unit/no_yields_test.rb +0 -18
  237. data/test/unit/object_inspect_test.rb +0 -39
  238. data/test/unit/object_methods_test.rb +0 -46
  239. data/test/unit/parameter_matchers/all_of_test.rb +0 -26
  240. data/test/unit/parameter_matchers/any_of_test.rb +0 -26
  241. data/test/unit/parameter_matchers/anything_test.rb +0 -21
  242. data/test/unit/parameter_matchers/equals_test.rb +0 -25
  243. data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
  244. data/test/unit/parameter_matchers/has_entry_test.rb +0 -129
  245. data/test/unit/parameter_matchers/has_key_test.rb +0 -55
  246. data/test/unit/parameter_matchers/has_value_test.rb +0 -57
  247. data/test/unit/parameter_matchers/includes_test.rb +0 -102
  248. data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
  249. data/test/unit/parameter_matchers/is_a_test.rb +0 -25
  250. data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
  251. data/test/unit/parameter_matchers/not_test.rb +0 -26
  252. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -46
  253. data/test/unit/parameter_matchers/responds_with_test.rb +0 -32
  254. data/test/unit/parameter_matchers/stub_matcher.rb +0 -27
  255. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -25
  256. data/test/unit/parameters_matcher_test.rb +0 -121
  257. data/test/unit/receivers_test.rb +0 -66
  258. data/test/unit/return_values_test.rb +0 -63
  259. data/test/unit/sequence_test.rb +0 -104
  260. data/test/unit/single_return_value_test.rb +0 -14
  261. data/test/unit/single_yield_test.rb +0 -18
  262. data/test/unit/state_machine_test.rb +0 -98
  263. data/test/unit/string_inspect_test.rb +0 -11
  264. data/test/unit/thrower_test.rb +0 -20
  265. data/test/unit/yield_parameters_test.rb +0 -93
@@ -1,280 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubAnyInstanceMethodTest < 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_within_test
17
- klass = Class.new do
18
- def my_instance_method
19
- :original_return_value
20
- end
21
- end
22
- instance = klass.new
23
- test_result = run_as_test do
24
- klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
25
- assert_method_visibility instance, :my_instance_method, :public
26
- assert_equal :new_return_value, instance.my_instance_method
27
- end
28
- assert_passed(test_result)
29
- end
30
-
31
- def test_should_leave_stubbed_public_method_unchanged_after_test
32
- klass = Class.new do
33
- def my_instance_method
34
- :original_return_value
35
- end
36
- public :my_instance_method
37
- def self.public(*args); end
38
- end
39
- instance = klass.new
40
- run_as_test do
41
- klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
42
- end
43
- assert instance.public_methods(false).any? { |m| m.to_s == 'my_instance_method' }
44
- assert_equal :original_return_value, instance.my_instance_method
45
- end
46
-
47
- def test_should_leave_stubbed_protected_method_unchanged_after_test
48
- klass = Class.new do
49
- def my_instance_method
50
- :original_return_value
51
- end
52
- protected :my_instance_method
53
- def self.protected(*args); end
54
- def my_unprotected_instance_method
55
- my_instance_method
56
- end
57
- end
58
- instance = klass.new
59
- run_as_test do
60
- klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
61
- end
62
- assert instance.protected_methods(false).any? { |m| m.to_s == 'my_instance_method' }
63
- assert_equal :original_return_value, instance.my_unprotected_instance_method
64
- end
65
-
66
- def test_should_stub_protected_method_within_test
67
- klass = Class.new do
68
- def my_instance_method
69
- :original_return_value
70
- end
71
- protected :my_instance_method
72
- def self.protected(*args); end
73
- def my_unprotected_instance_method
74
- my_instance_method
75
- end
76
- end
77
- instance = klass.new
78
- test_result = run_as_test do
79
- klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
80
- assert_method_visibility instance, :my_instance_method, :protected
81
- end
82
- assert_passed(test_result)
83
- end
84
-
85
- def test_should_leave_stubbed_private_method_unchanged_after_test
86
- klass = Class.new do
87
- def my_instance_method
88
- :original_return_value
89
- end
90
- private :my_instance_method
91
- def self.private(*args); end
92
- end
93
- instance = klass.new
94
- run_as_test do
95
- klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
96
- end
97
- assert instance.private_methods(false).any? { |m| m.to_s == 'my_instance_method' }
98
- assert_equal :original_return_value, instance.send(:my_instance_method)
99
- end
100
-
101
- def test_should_stub_private_method_within_test
102
- klass = Class.new do
103
- def my_instance_method
104
- :original_return_value
105
- end
106
- private :my_instance_method
107
- def self.private(*args); end
108
- end
109
- instance = klass.new
110
- test_result = run_as_test do
111
- klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
112
- assert_method_visibility instance, :my_instance_method, :private
113
- end
114
- assert_passed(test_result)
115
- end
116
-
117
- def test_should_reset_expectations_after_test
118
- klass = Class.new do
119
- def my_instance_method
120
- :original_return_value
121
- end
122
- end
123
- run_as_test do
124
- klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
125
- end
126
-
127
- assert_equal 0, klass.any_instance.mocha.__expectations__.length
128
- end
129
-
130
- def test_should_be_able_to_stub_a_public_superclass_method
131
- superklass = Class.new do
132
- def my_superclass_method
133
- :original_return_value
134
- end
135
- public :my_superclass_method
136
- end
137
- klass = Class.new(superklass)
138
- instance = klass.new
139
- test_result = run_as_test do
140
- klass.any_instance.stubs(:my_superclass_method).returns(:new_return_value)
141
- assert_method_visibility instance, :my_superclass_method, :public
142
- assert_equal :new_return_value, instance.my_superclass_method
143
- end
144
- assert_passed(test_result)
145
- assert instance.public_methods(true).any? { |m| m.to_s == 'my_superclass_method' }
146
- assert !klass.public_methods(false).any? { |m| m.to_s == 'my_superclass_method' }
147
- assert_equal :original_return_value, instance.my_superclass_method
148
- end
149
-
150
- def test_should_be_able_to_stub_a_protected_superclass_method
151
- superklass = Class.new do
152
- def my_superclass_method
153
- :original_return_value
154
- end
155
- protected :my_superclass_method
156
- end
157
- klass = Class.new(superklass)
158
- instance = klass.new
159
- test_result = run_as_test do
160
- klass.any_instance.stubs(:my_superclass_method).returns(:new_return_value)
161
- assert_method_visibility instance, :my_superclass_method, :protected
162
- assert_equal :new_return_value, instance.send(:my_superclass_method)
163
- end
164
- assert_passed(test_result)
165
- assert instance.protected_methods(true).any? { |m| m.to_s == 'my_superclass_method' }
166
- assert !klass.protected_methods(false).any? { |m| m.to_s == 'my_superclass_method' }
167
- assert_equal :original_return_value, instance.send(:my_superclass_method)
168
- end
169
-
170
- def test_should_be_able_to_stub_a_private_superclass_method
171
- superklass = Class.new do
172
- def my_superclass_method
173
- :original_return_value
174
- end
175
- private :my_superclass_method
176
- end
177
- klass = Class.new(superklass)
178
- instance = klass.new
179
- test_result = run_as_test do
180
- klass.any_instance.stubs(:my_superclass_method).returns(:new_return_value)
181
- assert_method_visibility instance, :my_superclass_method, :private
182
- assert_equal :new_return_value, instance.send(:my_superclass_method)
183
- end
184
- assert_passed(test_result)
185
- assert instance.private_methods(true).any? { |m| m.to_s == 'my_superclass_method' }
186
- assert !klass.private_methods(false).any? { |m| m.to_s == 'my_superclass_method' }
187
- assert_equal :original_return_value, instance.send(:my_superclass_method)
188
- end
189
-
190
- def test_should_be_able_to_stub_method_if_ruby18_public_instance_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
191
- ruby18_klass = Class.new do
192
- class << self
193
- def public_instance_methods(include_superclass = true)
194
- ['my_instance_method']
195
- end
196
- end
197
- end
198
- test_result = run_as_test do
199
- ruby18_klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
200
- assert_equal :new_return_value, ruby18_klass.new.my_instance_method
201
- end
202
- assert_passed(test_result)
203
- end
204
-
205
- def test_should_be_able_to_stub_method_if_ruby19_public_instance_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
206
- ruby19_klass = Class.new do
207
- class << self
208
- def public_instance_methods(include_superclass = true)
209
- [:my_instance_method]
210
- end
211
- end
212
- end
213
- test_result = run_as_test do
214
- ruby19_klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
215
- assert_equal :new_return_value, ruby19_klass.new.my_instance_method
216
- end
217
- assert_passed(test_result)
218
- end
219
-
220
- def test_should_be_able_to_stub_method_if_ruby18_protected_instance_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
221
- ruby18_klass = Class.new do
222
- class << self
223
- def protected_instance_methods(include_superclass = true)
224
- ['my_instance_method']
225
- end
226
- end
227
- end
228
- test_result = run_as_test do
229
- ruby18_klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
230
- assert_equal :new_return_value, ruby18_klass.new.send(:my_instance_method)
231
- end
232
- assert_passed(test_result)
233
- end
234
-
235
- def test_should_be_able_to_stub_method_if_ruby19_protected_instance_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
236
- ruby19_klass = Class.new do
237
- class << self
238
- def protected_instance_methods(include_superclass = true)
239
- [:my_instance_method]
240
- end
241
- end
242
- end
243
- test_result = run_as_test do
244
- ruby19_klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
245
- assert_equal :new_return_value, ruby19_klass.new.send(:my_instance_method)
246
- end
247
- assert_passed(test_result)
248
- end
249
-
250
- def test_should_be_able_to_stub_method_if_ruby18_private_instance_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
251
- ruby18_klass = Class.new do
252
- class << self
253
- def private_instance_methods(include_superclass = true)
254
- ['my_instance_method']
255
- end
256
- end
257
- end
258
- test_result = run_as_test do
259
- ruby18_klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
260
- assert_equal :new_return_value, ruby18_klass.new.send(:my_instance_method)
261
- end
262
- assert_passed(test_result)
263
- end
264
-
265
- def test_should_be_able_to_stub_method_if_ruby19_private_instance_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
266
- ruby19_klass = Class.new do
267
- class << self
268
- def private_instance_methods(include_superclass = true)
269
- [:my_instance_method]
270
- end
271
- end
272
- end
273
- test_result = run_as_test do
274
- ruby19_klass.any_instance.stubs(:my_instance_method).returns(:new_return_value)
275
- assert_equal :new_return_value, ruby19_klass.new.send(:my_instance_method)
276
- end
277
- assert_passed(test_result)
278
- end
279
-
280
- end
@@ -1,106 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubClassMethodDefinedOnActiveRecordAssociationProxyTest < 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_be_able_to_stub_method_if_ruby18_public_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
17
- ruby18_klass = Class.new do
18
- class << self
19
- def public_methods(include_superclass = true)
20
- ['my_class_method']
21
- end
22
- end
23
- end
24
- test_result = run_as_test do
25
- ruby18_klass.stubs(:my_class_method).returns(:new_return_value)
26
- assert_equal :new_return_value, ruby18_klass.my_class_method
27
- end
28
- assert_passed(test_result)
29
- end
30
-
31
- 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
32
- ruby19_klass = Class.new do
33
- class << self
34
- def public_methods(include_superclass = true)
35
- [:my_class_method]
36
- end
37
- end
38
- end
39
- test_result = run_as_test do
40
- ruby19_klass.stubs(:my_class_method).returns(:new_return_value)
41
- assert_equal :new_return_value, ruby19_klass.my_class_method
42
- end
43
- assert_passed(test_result)
44
- end
45
-
46
- def test_should_be_able_to_stub_method_if_ruby18_protected_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
47
- ruby18_klass = Class.new do
48
- class << self
49
- def protected_methods(include_superclass = true)
50
- ['my_class_method']
51
- end
52
- end
53
- end
54
- test_result = run_as_test do
55
- ruby18_klass.stubs(:my_class_method).returns(:new_return_value)
56
- assert_equal :new_return_value, ruby18_klass.my_class_method
57
- end
58
- assert_passed(test_result)
59
- end
60
-
61
- 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
62
- ruby19_klass = Class.new do
63
- class << self
64
- def protected_methods(include_superclass = true)
65
- [:my_class_method]
66
- end
67
- end
68
- end
69
- test_result = run_as_test do
70
- ruby19_klass.stubs(:my_class_method).returns(:new_return_value)
71
- assert_equal :new_return_value, ruby19_klass.my_class_method
72
- end
73
- assert_passed(test_result)
74
- end
75
-
76
- 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
77
- ruby18_klass = Class.new do
78
- class << self
79
- def private_methods(include_superclass = true)
80
- ['my_class_method']
81
- end
82
- end
83
- end
84
- test_result = run_as_test do
85
- ruby18_klass.stubs(:my_class_method).returns(:new_return_value)
86
- assert_equal :new_return_value, ruby18_klass.my_class_method
87
- end
88
- assert_passed(test_result)
89
- end
90
-
91
- 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
92
- ruby19_klass = Class.new do
93
- class << self
94
- def private_methods(include_superclass = true)
95
- [:my_class_method]
96
- end
97
- end
98
- end
99
- test_result = run_as_test do
100
- ruby19_klass.stubs(:my_class_method).returns(:new_return_value)
101
- assert_equal :new_return_value, ruby19_klass.my_class_method
102
- end
103
- assert_passed(test_result)
104
- end
105
-
106
- end
@@ -1,78 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubClassMethodDefinedOnClassTest < 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
- klass = Class.new do
18
- class << self
19
- def my_class_method
20
- :original_return_value
21
- end
22
- public :my_class_method
23
- def self.public(*args); end
24
- end
25
- end
26
- assert_snapshot_unchanged(klass) do
27
- test_result = run_as_test do
28
- klass.stubs(:my_class_method).returns(:new_return_value)
29
- assert_method_visibility klass, :my_class_method, :public
30
- assert_equal :new_return_value, klass.my_class_method
31
- end
32
- assert_passed(test_result)
33
- end
34
- assert_equal :original_return_value, klass.my_class_method
35
- end
36
-
37
- def test_should_stub_protected_method_and_leave_it_unchanged_after_test
38
- klass = Class.new do
39
- class << self
40
- def my_class_method
41
- :original_return_value
42
- end
43
- protected :my_class_method
44
- def self.protected(*args); end
45
- end
46
- end
47
- assert_snapshot_unchanged(klass) do
48
- test_result = run_as_test do
49
- klass.stubs(:my_class_method).returns(:new_return_value)
50
- assert_method_visibility klass, :my_class_method, :protected
51
- assert_equal :new_return_value, klass.send(:my_class_method)
52
- end
53
- assert_passed(test_result)
54
- end
55
- assert_equal :original_return_value, klass.send(:my_class_method)
56
- end
57
-
58
- def test_should_stub_private_method_and_leave_it_unchanged_after_test
59
- klass = Class.new do
60
- class << self
61
- def my_class_method
62
- :original_return_value
63
- end
64
- private :my_class_method
65
- def self.private(*args); end
66
- end
67
- end
68
- assert_snapshot_unchanged(klass) do
69
- test_result = run_as_test do
70
- klass.stubs(:my_class_method).returns(:new_return_value)
71
- assert_method_visibility klass, :my_class_method, :private
72
- assert_equal :new_return_value, klass.send(:my_class_method)
73
- end
74
- assert_passed(test_result)
75
- end
76
- assert_equal :original_return_value, klass.send(:my_class_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 StubClassMethodDefinedOnModuleTest < 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_class_method
19
- :original_return_value
20
- end
21
- public :my_class_method
22
- end
23
- klass = Class.new do
24
- extend mod
25
- end
26
- assert_snapshot_unchanged(klass) do
27
- test_result = run_as_test do
28
- klass.stubs(:my_class_method).returns(:new_return_value)
29
- assert_equal :new_return_value, klass.my_class_method
30
- end
31
- assert_passed(test_result)
32
- end
33
- assert_equal :original_return_value, klass.my_class_method
34
- end
35
-
36
- def test_should_stub_protected_method_and_leave_it_unchanged_after_test
37
- mod = Module.new do
38
- def my_class_method
39
- :original_return_value
40
- end
41
- protected :my_class_method
42
- end
43
- klass = Class.new do
44
- extend mod
45
- end
46
- assert_snapshot_unchanged(klass) do
47
- test_result = run_as_test do
48
- klass.stubs(:my_class_method).returns(:new_return_value)
49
- assert_equal :new_return_value, klass.send(:my_class_method)
50
- end
51
- assert_passed(test_result)
52
- end
53
- assert_equal :original_return_value, klass.send(:my_class_method)
54
- end
55
-
56
- def test_should_stub_private_method_and_leave_it_unchanged_after_test
57
- mod = Module.new do
58
- def my_class_method
59
- :original_return_value
60
- end
61
- private :my_class_method
62
- end
63
- klass = Class.new do
64
- extend mod
65
- end
66
- assert_snapshot_unchanged(klass) do
67
- test_result = run_as_test do
68
- klass.stubs(:my_class_method).returns(:new_return_value)
69
- assert_equal :new_return_value, klass.send(:my_class_method)
70
- end
71
- assert_passed(test_result)
72
- end
73
- assert_equal :original_return_value, klass.send(:my_class_method)
74
- end
75
- end
@@ -1,112 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubClassMethodDefinedOnSuperclassTest < 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_on_child_class_and_leave_it_unchanged_after_test
17
- superklass = Class.new do
18
- class << self
19
- def my_class_method
20
- :original_return_value
21
- end
22
- public :my_class_method
23
- end
24
- end
25
- klass = Class.new(superklass)
26
- assert_snapshot_unchanged(klass) do
27
- test_result = run_as_test do
28
- klass.stubs(:my_class_method).returns(:new_return_value)
29
- assert_equal :new_return_value, klass.my_class_method
30
- end
31
- assert_passed(test_result)
32
- end
33
- assert_equal :original_return_value, klass.my_class_method
34
- end
35
-
36
- def test_should_stub_protected_method_on_child_class_and_leave_it_unchanged_after_test
37
- superklass = Class.new do
38
- class << self
39
- def my_class_method
40
- :original_return_value
41
- end
42
- protected :my_class_method
43
- end
44
- end
45
- klass = Class.new(superklass)
46
- assert_snapshot_unchanged(klass) do
47
- test_result = run_as_test do
48
- klass.stubs(:my_class_method).returns(:new_return_value)
49
- assert_equal :new_return_value, klass.send(:my_class_method)
50
- end
51
- assert_passed(test_result)
52
- end
53
- assert_equal :original_return_value, klass.send(:my_class_method)
54
- end
55
-
56
- def test_should_stub_private_method_on_child_class_and_leave_it_unchanged_after_test
57
- superklass = Class.new do
58
- class << self
59
- def my_class_method
60
- :original_return_value
61
- end
62
- private :my_class_method
63
- end
64
- end
65
- klass = Class.new(superklass)
66
- assert_snapshot_unchanged(klass) do
67
- test_result = run_as_test do
68
- klass.stubs(:my_class_method).returns(:new_return_value)
69
- assert_equal :new_return_value, klass.send(:my_class_method)
70
- end
71
- assert_passed(test_result)
72
- end
73
- assert_equal :original_return_value, klass.send(:my_class_method)
74
- end
75
-
76
- def test_should_stub_method_on_superclass_and_leave_it_unchanged_after_test
77
- superklass = Class.new do
78
- class << self
79
- def my_class_method
80
- :original_return_value
81
- end
82
- public :my_class_method
83
- end
84
- end
85
- klass = Class.new(superklass)
86
- assert_snapshot_unchanged(klass) do
87
- test_result = run_as_test do
88
- superklass.stubs(:my_class_method).returns(:new_return_value)
89
- assert_equal :new_return_value, klass.my_class_method
90
- end
91
- assert_passed(test_result)
92
- end
93
- assert_equal :original_return_value, klass.my_class_method
94
- end
95
-
96
- def test_stub_on_earliest_receiver_should_take_priority
97
- superklass = Class.new do
98
- class << self
99
- def my_class_method
100
- :original_return_value
101
- end
102
- end
103
- end
104
- klass = Class.new(superklass)
105
- test_result = run_as_test do
106
- klass.stubs(:my_class_method).returns(:klass_return_value)
107
- superklass.stubs(:my_class_method).returns(:superklass_return_value)
108
- assert_equal :klass_return_value, klass.my_class_method
109
- end
110
- assert_passed(test_result)
111
- end
112
- end
@@ -1,56 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class StubEverythingTest < 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_everything()
19
- foo.stubs(:bar)
20
- foo.bar
21
- foo.unexpected_invocation
22
- end
23
- assert_passed(test_result)
24
- end
25
-
26
- def test_should_build_named_stub_and_explicitly_add_an_expectation
27
- test_result = run_as_test do
28
- foo = stub_everything('foo')
29
- foo.stubs(:bar)
30
- foo.bar
31
- foo.unexpected_invocation
32
- end
33
- assert_passed(test_result)
34
- end
35
-
36
- def test_should_build_stub_incorporating_two_expectations
37
- test_result = run_as_test do
38
- foo = stub_everything(:bar => 'bar', :baz => 'baz')
39
- foo.bar
40
- foo.baz
41
- foo.unexpected_invocation
42
- end
43
- assert_passed(test_result)
44
- end
45
-
46
- def test_should_build_named_stub_incorporating_two_expectations
47
- test_result = run_as_test do
48
- foo = stub_everything('foo', :bar => 'bar', :baz => 'baz')
49
- foo.bar
50
- foo.baz
51
- foo.unexpected_invocation
52
- end
53
- assert_passed(test_result)
54
- end
55
-
56
- end