mocha 1.1.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +1 -0
  3. data/.rubocop.yml +61 -0
  4. data/.rubocop_todo.yml +27 -0
  5. data/.yardopts +1 -0
  6. data/CONTRIBUTING.md +4 -9
  7. data/README.md +114 -28
  8. data/RELEASE.md +248 -1
  9. data/Rakefile +53 -35
  10. data/gemfiles/Gemfile.test-unit.latest +5 -1
  11. data/init.rb +1 -3
  12. data/lib/mocha/any_instance_method.rb +12 -72
  13. data/lib/mocha/api.rb +121 -56
  14. data/lib/mocha/argument_iterator.rb +4 -8
  15. data/lib/mocha/backtrace_filter.rb +1 -5
  16. data/lib/mocha/block_matcher.rb +31 -0
  17. data/lib/mocha/cardinality.rb +60 -49
  18. data/lib/mocha/central.rb +21 -12
  19. data/lib/mocha/change_state_side_effect.rb +0 -4
  20. data/lib/mocha/class_methods.rb +19 -20
  21. data/lib/mocha/configuration.rb +361 -18
  22. data/lib/mocha/debug.rb +3 -2
  23. data/lib/mocha/deprecation.rb +8 -11
  24. data/lib/mocha/detection/mini_test.rb +0 -2
  25. data/lib/mocha/detection/test_unit.rb +3 -5
  26. data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
  27. data/lib/mocha/exception_raiser.rb +4 -6
  28. data/lib/mocha/expectation.rb +125 -89
  29. data/lib/mocha/expectation_error.rb +1 -1
  30. data/lib/mocha/expectation_error_factory.rb +0 -1
  31. data/lib/mocha/expectation_list.rb +7 -11
  32. data/lib/mocha/hooks.rb +1 -3
  33. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  34. data/lib/mocha/inspect.rb +30 -38
  35. data/lib/mocha/instance_method.rb +15 -8
  36. data/lib/mocha/integration/mini_test/adapter.rb +2 -4
  37. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  38. data/lib/mocha/integration/mini_test/nothing.rb +4 -4
  39. data/lib/mocha/integration/mini_test/version_13.rb +4 -1
  40. data/lib/mocha/integration/mini_test/version_140.rb +4 -1
  41. data/lib/mocha/integration/mini_test/version_141.rb +4 -1
  42. data/lib/mocha/integration/mini_test/version_142_to_172.rb +4 -1
  43. data/lib/mocha/integration/mini_test/version_200.rb +4 -1
  44. data/lib/mocha/integration/mini_test/version_201_to_222.rb +4 -1
  45. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +4 -1
  46. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +4 -1
  47. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +4 -1
  48. data/lib/mocha/integration/mini_test.rb +7 -0
  49. data/lib/mocha/integration/monkey_patcher.rb +8 -2
  50. data/lib/mocha/integration/test_unit/adapter.rb +5 -6
  51. data/lib/mocha/integration/test_unit/gem_version_200.rb +5 -2
  52. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +5 -2
  53. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +5 -2
  54. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +5 -2
  55. data/lib/mocha/integration/test_unit/nothing.rb +4 -4
  56. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +4 -1
  57. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +4 -1
  58. data/lib/mocha/integration/test_unit.rb +7 -0
  59. data/lib/mocha/integration.rb +2 -5
  60. data/lib/mocha/invocation.rb +77 -0
  61. data/lib/mocha/is_a.rb +0 -2
  62. data/lib/mocha/logger.rb +0 -4
  63. data/lib/mocha/macos_version.rb +5 -0
  64. data/lib/mocha/method_matcher.rb +1 -5
  65. data/lib/mocha/minitest.rb +8 -0
  66. data/lib/mocha/mock.rb +94 -46
  67. data/lib/mocha/mockery.rb +72 -98
  68. data/lib/mocha/names.rb +2 -12
  69. data/lib/mocha/not_initialized_error.rb +7 -0
  70. data/lib/mocha/object_methods.rb +25 -31
  71. data/lib/mocha/parameter_matchers/all_of.rb +2 -8
  72. data/lib/mocha/parameter_matchers/any_of.rb +2 -8
  73. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  74. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  75. data/lib/mocha/parameter_matchers/base.rb +6 -12
  76. data/lib/mocha/parameter_matchers/equals.rb +1 -7
  77. data/lib/mocha/parameter_matchers/{query_string.rb → equivalent_uri.rb} +15 -15
  78. data/lib/mocha/parameter_matchers/has_entries.rb +2 -7
  79. data/lib/mocha/parameter_matchers/has_entry.rb +26 -21
  80. data/lib/mocha/parameter_matchers/has_key.rb +2 -7
  81. data/lib/mocha/parameter_matchers/has_keys.rb +53 -0
  82. data/lib/mocha/parameter_matchers/has_value.rb +2 -7
  83. data/lib/mocha/parameter_matchers/includes.rb +50 -8
  84. data/lib/mocha/parameter_matchers/instance_methods.rb +18 -0
  85. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  86. data/lib/mocha/parameter_matchers/is_a.rb +2 -7
  87. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  88. data/lib/mocha/parameter_matchers/not.rb +2 -7
  89. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  90. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  91. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  92. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  93. data/lib/mocha/parameter_matchers.rb +3 -4
  94. data/lib/mocha/parameters_matcher.rb +6 -9
  95. data/lib/mocha/raised_exception.rb +11 -0
  96. data/lib/mocha/receivers.rb +10 -14
  97. data/lib/mocha/return_values.rb +4 -8
  98. data/lib/mocha/ruby_version.rb +4 -0
  99. data/lib/mocha/sequence.rb +4 -9
  100. data/lib/mocha/setup.rb +5 -0
  101. data/lib/mocha/single_return_value.rb +2 -5
  102. data/lib/mocha/singleton_class.rb +9 -0
  103. data/lib/mocha/state_machine.rb +33 -46
  104. data/lib/mocha/stubbed_method.rb +125 -0
  105. data/lib/mocha/stubbing_error.rb +2 -13
  106. data/lib/mocha/test_unit.rb +7 -2
  107. data/lib/mocha/thrower.rb +4 -6
  108. data/lib/mocha/thrown_object.rb +12 -0
  109. data/lib/mocha/version.rb +1 -1
  110. data/lib/mocha/yield_parameters.rb +7 -17
  111. data/lib/mocha.rb +8 -0
  112. data/mocha.gemspec +42 -40
  113. data/yard-templates/default/layout/html/google_analytics.erb +6 -9
  114. data/yard-templates/default/layout/html/setup.rb +2 -3
  115. metadata +45 -191
  116. data/bin/build-matrix +0 -71
  117. data/gemfiles/Gemfile.minitest.1.3.0 +0 -7
  118. data/gemfiles/Gemfile.minitest.1.4.0 +0 -7
  119. data/gemfiles/Gemfile.minitest.1.4.1 +0 -7
  120. data/gemfiles/Gemfile.minitest.1.4.2 +0 -7
  121. data/gemfiles/Gemfile.minitest.2.0.0 +0 -7
  122. data/gemfiles/Gemfile.minitest.2.0.1 +0 -7
  123. data/gemfiles/Gemfile.minitest.2.11.0 +0 -7
  124. data/gemfiles/Gemfile.minitest.2.11.2 +0 -7
  125. data/gemfiles/Gemfile.minitest.2.3.0 +0 -7
  126. data/gemfiles/Gemfile.test-unit.2.0.0 +0 -7
  127. data/gemfiles/Gemfile.test-unit.2.0.1 +0 -7
  128. data/gemfiles/Gemfile.test-unit.2.0.3 +0 -7
  129. data/lib/mocha/class_method.rb +0 -127
  130. data/lib/mocha/mini_test.rb +0 -3
  131. data/lib/mocha/module_method.rb +0 -16
  132. data/lib/mocha/module_methods.rb +0 -14
  133. data/lib/mocha/multiple_yields.rb +0 -20
  134. data/lib/mocha/no_yields.rb +0 -11
  135. data/lib/mocha/parameter_matchers/object.rb +0 -17
  136. data/lib/mocha/pretty_parameters.rb +0 -28
  137. data/lib/mocha/single_yield.rb +0 -18
  138. data/lib/mocha/standalone.rb +0 -4
  139. data/lib/mocha/unexpected_invocation.rb +0 -26
  140. data/lib/mocha_standalone.rb +0 -4
  141. data/test/acceptance/acceptance_test_helper.rb +0 -41
  142. data/test/acceptance/bug_18914_test.rb +0 -43
  143. data/test/acceptance/bug_21465_test.rb +0 -34
  144. data/test/acceptance/bug_21563_test.rb +0 -25
  145. data/test/acceptance/exception_rescue_test.rb +0 -55
  146. data/test/acceptance/expectations_on_multiple_methods_test.rb +0 -55
  147. data/test/acceptance/expected_invocation_count_test.rb +0 -232
  148. data/test/acceptance/failure_messages_test.rb +0 -64
  149. data/test/acceptance/issue_65_test.rb +0 -63
  150. data/test/acceptance/issue_70_test.rb +0 -55
  151. data/test/acceptance/mocha_example_test.rb +0 -98
  152. data/test/acceptance/mocha_test_result_test.rb +0 -84
  153. data/test/acceptance/mock_test.rb +0 -100
  154. data/test/acceptance/mock_with_initializer_block_test.rb +0 -51
  155. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -78
  156. data/test/acceptance/multiple_expectations_failure_message_test.rb +0 -68
  157. data/test/acceptance/optional_parameters_test.rb +0 -70
  158. data/test/acceptance/parameter_matcher_test.rb +0 -337
  159. data/test/acceptance/partial_mocks_test.rb +0 -47
  160. data/test/acceptance/prepend_test.rb +0 -88
  161. data/test/acceptance/raise_exception_test.rb +0 -39
  162. data/test/acceptance/return_value_test.rb +0 -52
  163. data/test/acceptance/sequence_test.rb +0 -192
  164. data/test/acceptance/states_test.rb +0 -70
  165. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +0 -34
  166. data/test/acceptance/stub_any_instance_method_test.rb +0 -238
  167. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +0 -106
  168. data/test/acceptance/stub_class_method_defined_on_class_test.rb +0 -78
  169. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -75
  170. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +0 -112
  171. data/test/acceptance/stub_everything_test.rb +0 -56
  172. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +0 -93
  173. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -69
  174. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -69
  175. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -75
  176. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -75
  177. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +0 -75
  178. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -70
  179. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -72
  180. data/test/acceptance/stub_module_method_test.rb +0 -163
  181. data/test/acceptance/stub_test.rb +0 -52
  182. data/test/acceptance/stubba_example_test.rb +0 -102
  183. data/test/acceptance/stubba_test_result_test.rb +0 -66
  184. data/test/acceptance/stubbing_error_backtrace_test.rb +0 -64
  185. data/test/acceptance/stubbing_frozen_object_test.rb +0 -88
  186. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +0 -48
  187. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -65
  188. data/test/acceptance/stubbing_nil_test.rb +0 -59
  189. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +0 -130
  190. data/test/acceptance/stubbing_non_existent_class_method_test.rb +0 -157
  191. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +0 -147
  192. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -130
  193. data/test/acceptance/stubbing_non_public_class_method_test.rb +0 -163
  194. data/test/acceptance/stubbing_non_public_instance_method_test.rb +0 -143
  195. data/test/acceptance/stubbing_on_non_mock_object_test.rb +0 -64
  196. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +0 -35
  197. data/test/acceptance/throw_test.rb +0 -45
  198. data/test/acceptance/unexpected_invocation_test.rb +0 -25
  199. data/test/acceptance/unstubbing_test.rb +0 -168
  200. data/test/assertions.rb +0 -6
  201. data/test/deprecation_disabler.rb +0 -15
  202. data/test/execution_point.rb +0 -36
  203. data/test/integration/mini_test_test.rb +0 -8
  204. data/test/integration/shared_tests.rb +0 -174
  205. data/test/integration/test_unit_test.rb +0 -8
  206. data/test/method_definer.rb +0 -24
  207. data/test/mini_test_result.rb +0 -90
  208. data/test/minitest_result.rb +0 -49
  209. data/test/simple_counter.rb +0 -13
  210. data/test/test_helper.rb +0 -50
  211. data/test/test_runner.rb +0 -58
  212. data/test/test_unit_result.rb +0 -20
  213. data/test/unit/any_instance_method_test.rb +0 -132
  214. data/test/unit/array_inspect_test.rb +0 -16
  215. data/test/unit/backtrace_filter_test.rb +0 -19
  216. data/test/unit/cardinality_test.rb +0 -56
  217. data/test/unit/central_test.rb +0 -100
  218. data/test/unit/change_state_side_effect_test.rb +0 -41
  219. data/test/unit/class_method_test.rb +0 -223
  220. data/test/unit/class_methods_test.rb +0 -40
  221. data/test/unit/configuration_test.rb +0 -38
  222. data/test/unit/date_time_inspect_test.rb +0 -21
  223. data/test/unit/exception_raiser_test.rb +0 -42
  224. data/test/unit/expectation_list_test.rb +0 -82
  225. data/test/unit/expectation_test.rb +0 -497
  226. data/test/unit/hash_inspect_test.rb +0 -16
  227. data/test/unit/hooks_test.rb +0 -29
  228. data/test/unit/in_state_ordering_constraint_test.rb +0 -43
  229. data/test/unit/method_matcher_test.rb +0 -28
  230. data/test/unit/mock_test.rb +0 -341
  231. data/test/unit/mockery_test.rb +0 -151
  232. data/test/unit/module_methods_test.rb +0 -19
  233. data/test/unit/multiple_yields_test.rb +0 -18
  234. data/test/unit/no_yields_test.rb +0 -18
  235. data/test/unit/object_inspect_test.rb +0 -38
  236. data/test/unit/object_methods_test.rb +0 -46
  237. data/test/unit/parameter_matchers/all_of_test.rb +0 -26
  238. data/test/unit/parameter_matchers/any_of_test.rb +0 -26
  239. data/test/unit/parameter_matchers/anything_test.rb +0 -21
  240. data/test/unit/parameter_matchers/equals_test.rb +0 -25
  241. data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
  242. data/test/unit/parameter_matchers/has_entry_test.rb +0 -129
  243. data/test/unit/parameter_matchers/has_key_test.rb +0 -55
  244. data/test/unit/parameter_matchers/has_value_test.rb +0 -57
  245. data/test/unit/parameter_matchers/includes_test.rb +0 -59
  246. data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
  247. data/test/unit/parameter_matchers/is_a_test.rb +0 -25
  248. data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
  249. data/test/unit/parameter_matchers/not_test.rb +0 -26
  250. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -46
  251. data/test/unit/parameter_matchers/responds_with_test.rb +0 -32
  252. data/test/unit/parameter_matchers/stub_matcher.rb +0 -27
  253. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -25
  254. data/test/unit/parameters_matcher_test.rb +0 -121
  255. data/test/unit/receivers_test.rb +0 -66
  256. data/test/unit/return_values_test.rb +0 -63
  257. data/test/unit/sequence_test.rb +0 -104
  258. data/test/unit/single_return_value_test.rb +0 -14
  259. data/test/unit/single_yield_test.rb +0 -18
  260. data/test/unit/state_machine_test.rb +0 -98
  261. data/test/unit/string_inspect_test.rb +0 -11
  262. data/test/unit/thrower_test.rb +0 -20
  263. data/test/unit/yield_parameters_test.rb +0 -93
@@ -1,16 +0,0 @@
1
- require 'mocha/class_method'
2
-
3
- module Mocha
4
-
5
- class ModuleMethod < ClassMethod
6
-
7
- def method_exists?(method)
8
- return true if stubbee.public_methods(false).include?(method)
9
- return true if stubbee.protected_methods(false).include?(method)
10
- return true if stubbee.private_methods(false).include?(method)
11
- return false
12
- end
13
-
14
- end
15
-
16
- end
@@ -1,14 +0,0 @@
1
- require 'mocha/module_method'
2
-
3
- module Mocha
4
-
5
- # @private
6
- module ModuleMethods
7
-
8
- def stubba_method
9
- Mocha::ModuleMethod
10
- end
11
-
12
- end
13
-
14
- end
@@ -1,20 +0,0 @@
1
- module Mocha
2
-
3
- class MultipleYields
4
-
5
- attr_reader :parameter_groups
6
-
7
- def initialize(*parameter_groups)
8
- @parameter_groups = parameter_groups
9
- end
10
-
11
- def each
12
- @parameter_groups.each do |parameter_group|
13
- yield(parameter_group)
14
- end
15
- end
16
-
17
- end
18
-
19
- end
20
-
@@ -1,11 +0,0 @@
1
- module Mocha
2
-
3
- class NoYields
4
-
5
- def each
6
- end
7
-
8
- end
9
-
10
- end
11
-
@@ -1,17 +0,0 @@
1
- require 'mocha/parameter_matchers/equals'
2
-
3
- module Mocha
4
-
5
- module ObjectMethods
6
- # @private
7
- def to_matcher
8
- Mocha::ParameterMatchers::Equals.new(self)
9
- end
10
- end
11
-
12
- end
13
-
14
- # @private
15
- class Object
16
- include Mocha::ObjectMethods
17
- end
@@ -1,28 +0,0 @@
1
- require 'mocha/inspect'
2
-
3
- module Mocha
4
-
5
- class PrettyParameters
6
-
7
- def initialize(params)
8
- @params = params
9
- @params_string = params.mocha_inspect
10
- end
11
-
12
- def pretty
13
- remove_outer_array_braces!
14
- remove_outer_hash_braces!
15
- @params_string
16
- end
17
-
18
- def remove_outer_array_braces!
19
- @params_string = @params_string.gsub(/^\[|\]$/, '')
20
- end
21
-
22
- def remove_outer_hash_braces!
23
- @params_string = @params_string.gsub(/^\{|\}$/, '') if @params.length == 1
24
- end
25
-
26
- end
27
-
28
- end
@@ -1,18 +0,0 @@
1
- module Mocha
2
-
3
- class SingleYield
4
-
5
- attr_reader :parameters
6
-
7
- def initialize(*parameters)
8
- @parameters = parameters
9
- end
10
-
11
- def each
12
- yield(@parameters)
13
- end
14
-
15
- end
16
-
17
- end
18
-
@@ -1,4 +0,0 @@
1
- require 'mocha/api'
2
- require 'mocha/deprecation'
3
-
4
- Mocha::Deprecation.warning("`require 'mocha/standalone'` has been deprecated. Please use `require 'mocha/api' instead.")
@@ -1,26 +0,0 @@
1
- module Mocha
2
-
3
- # Exception raised when an unexpected method is invoked
4
- class UnexpectedInvocation
5
-
6
- # @private
7
- def initialize(mock, symbol, *arguments)
8
- @mock, @symbol, @arguments = mock, symbol, arguments
9
- end
10
-
11
- # @private
12
- def full_description
13
- method_matcher = MethodMatcher.new(@symbol)
14
- parameters_matcher = ParametersMatcher.new(@arguments)
15
- method_signature = "#{@mock.mocha_inspect}.#{method_matcher.mocha_inspect}#{parameters_matcher.mocha_inspect}"
16
- "unexpected invocation: #{method_signature}\n"
17
- end
18
-
19
- # @private
20
- def short_description
21
- "unexpected invocation: #{@symbol}(#{@arguments.join(', ')})"
22
- end
23
-
24
- end
25
-
26
- end
@@ -1,4 +0,0 @@
1
- require 'mocha/api'
2
- require 'mocha/deprecation'
3
-
4
- Mocha::Deprecation.warning("`require 'mocha_standalone'` has been deprecated. Please use `require 'mocha/api' instead.")
@@ -1,41 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'test_runner'
3
- require 'mocha/configuration'
4
- require 'introspection'
5
-
6
- module AcceptanceTest
7
-
8
- class FakeLogger
9
-
10
- attr_reader :warnings
11
-
12
- def initialize
13
- @warnings = []
14
- end
15
-
16
- def warn(message)
17
- @warnings << message
18
- end
19
-
20
- end
21
-
22
- attr_reader :logger
23
-
24
- include TestRunner
25
-
26
- def setup_acceptance_test
27
- Mocha::Configuration.reset_configuration
28
- @logger = FakeLogger.new
29
- mockery = Mocha::Mockery.instance
30
- @original_logger = mockery.logger
31
- mockery.logger = @logger
32
- end
33
-
34
- def teardown_acceptance_test
35
- Mocha::Configuration.reset_configuration
36
- Mocha::Mockery.instance.logger = @original_logger
37
- end
38
-
39
- include Introspection::Assertions
40
-
41
- end
@@ -1,43 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class Bug18914Test < 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
- class AlwaysEql
17
-
18
- def my_method
19
- true
20
- end
21
-
22
- def ==(o)
23
- true
24
- end
25
-
26
- def eql?(o)
27
- true
28
- end
29
-
30
- end
31
-
32
- def test_should_not_allow_stubbing_of_non_mock_instance_disrupted_by_legitimate_overriding_of_eql_method
33
-
34
- always_eql_1 = AlwaysEql.new
35
- always_eql_1.stubs(:my_method).returns(false)
36
-
37
- always_eql_2 = AlwaysEql.new
38
- always_eql_2.stubs(:my_method).returns(false)
39
-
40
- assert_equal false, always_eql_2.my_method
41
- end
42
-
43
- end
@@ -1,34 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class Bug21465Test < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_allow_expected_method_name_to_be_a_string
17
- test_result = run_as_test do
18
- mock = mock()
19
- mock.expects('wibble')
20
- mock.wibble
21
- end
22
- assert_passed(test_result)
23
- end
24
-
25
- def test_should_allow_stubbed_method_name_to_be_a_string
26
- test_result = run_as_test do
27
- mock = mock()
28
- mock.stubs('wibble')
29
- mock.wibble
30
- end
31
- assert_passed(test_result)
32
- end
33
-
34
- end
@@ -1,25 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class Bug21563Test < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_allow_stubbing_of_verified_method
17
- test_result = run_as_test do
18
- object = Object.new
19
- object.stubs(:verified?).returns(false)
20
- assert !object.verified?
21
- end
22
- assert_passed(test_result)
23
- end
24
-
25
- end
@@ -1,55 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class ExceptionRescueTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_unexpected_invocation_exception_is_not_caught_by_standard_rescue
17
- test_result = run_as_test do
18
- mock = mock('mock')
19
- begin
20
- mock.some_method
21
- rescue => e
22
- flunk "should not rescue #{e.class}"
23
- end
24
- end
25
- assert_failed(test_result)
26
- assert_equal "unexpected invocation: #<Mock:mock>.some_method()", test_result.failure_message_lines[0]
27
- end
28
-
29
- def test_invocation_never_expected_exception_is_not_caught_by_standard_rescue
30
- test_result = run_as_test do
31
- mock = mock('mock')
32
- mock.expects(:some_method).never
33
- begin
34
- mock.some_method
35
- rescue => e
36
- flunk "should not rescue #{e.class}"
37
- end
38
- end
39
- assert_failed(test_result)
40
- assert_equal "unexpected invocation: #<Mock:mock>.some_method()", test_result.failure_message_lines[0]
41
- end
42
-
43
- def test_unsatisfied_expectation_exception_is_not_caught_by_standard_rescue
44
- test_result = run_as_test do
45
- mock = mock('mock')
46
- mock.expects(:some_method)
47
- end
48
- assert_failed(test_result)
49
- assert_equal [
50
- "not all expectations were satisfied",
51
- "unsatisfied expectations:",
52
- "- expected exactly once, not yet invoked: #<Mock:mock>.some_method(any_parameters)"
53
- ], test_result.failure_message_lines
54
- end
55
- end
@@ -1,55 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class ExpectationsOnMultipleMethodsTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_expect_calls_to_multiple_methods
17
- instance = Class.new do
18
- def my_instance_method_1
19
- :original_return_value_1
20
- end
21
- def my_instance_method_2
22
- :original_return_value_2
23
- end
24
- end.new
25
- test_result = run_as_test do
26
- instance.expects(
27
- :my_instance_method_1 => :new_return_value_1,
28
- :my_instance_method_2 => :new_return_value_2
29
- )
30
- assert_equal :new_return_value_1, instance.my_instance_method_1
31
- assert_equal :new_return_value_2, instance.my_instance_method_2
32
- end
33
- assert_passed(test_result)
34
- end
35
-
36
- def test_should_stub_calls_to_multiple_methods
37
- instance = Class.new do
38
- def my_instance_method_1
39
- :original_return_value_1
40
- end
41
- def my_instance_method_2
42
- :original_return_value_2
43
- end
44
- end.new
45
- test_result = run_as_test do
46
- instance.stubs(
47
- :my_instance_method_1 => :new_return_value_1,
48
- :my_instance_method_2 => :new_return_value_2
49
- )
50
- assert_equal :new_return_value_1, instance.my_instance_method_1
51
- assert_equal :new_return_value_2, instance.my_instance_method_2
52
- end
53
- assert_passed(test_result)
54
- end
55
- end
@@ -1,232 +0,0 @@
1
- require File.expand_path('../acceptance_test_helper', __FILE__)
2
- require 'mocha/setup'
3
-
4
- class ExpectedInvocationCountTest < Mocha::TestCase
5
-
6
- include AcceptanceTest
7
-
8
- def setup
9
- setup_acceptance_test
10
- end
11
-
12
- def teardown
13
- teardown_acceptance_test
14
- end
15
-
16
- def test_should_pass_if_method_is_never_expected_and_is_never_called
17
- test_result = run_as_test do
18
- mock = mock('mock')
19
- mock.expects(:method).never
20
- 0.times { mock.method }
21
- end
22
- assert_passed(test_result)
23
- end
24
-
25
- def test_should_fail_fast_if_method_is_never_expected_but_is_called_once
26
- test_result = run_as_test do
27
- mock = mock('mock')
28
- mock.expects(:method).never
29
- 1.times { mock.method }
30
- end
31
- assert_failed(test_result)
32
- assert_equal [
33
- "unexpected invocation: #<Mock:mock>.method()",
34
- "unsatisfied expectations:",
35
- "- expected never, invoked once: #<Mock:mock>.method(any_parameters)"
36
- ], test_result.failure_message_lines
37
- end
38
-
39
- def test_should_pass_if_method_is_expected_twice_and_is_called_twice
40
- test_result = run_as_test do
41
- mock = mock('mock')
42
- mock.expects(:method).twice
43
- 2.times { mock.method }
44
- end
45
- assert_passed(test_result)
46
- end
47
-
48
- def test_should_fail_if_method_is_expected_twice_but_is_called_once
49
- test_result = run_as_test do
50
- mock = mock('mock')
51
- mock.expects(:method).twice
52
- 1.times { mock.method }
53
- end
54
- assert_failed(test_result)
55
- assert_equal [
56
- "not all expectations were satisfied",
57
- "unsatisfied expectations:",
58
- "- expected exactly twice, invoked once: #<Mock:mock>.method(any_parameters)"
59
- ], test_result.failure_message_lines
60
- end
61
-
62
- def test_should_fail_fast_if_method_is_expected_twice_but_is_called_three_times
63
- test_result = run_as_test do
64
- mock = mock('mock')
65
- mock.expects(:method).twice
66
- 3.times { mock.method }
67
- end
68
- assert_failed(test_result)
69
- assert_equal [
70
- "unexpected invocation: #<Mock:mock>.method()",
71
- "unsatisfied expectations:",
72
- "- expected exactly twice, invoked 3 times: #<Mock:mock>.method(any_parameters)"
73
- ], test_result.failure_message_lines
74
- end
75
-
76
- def test_should_pass_if_method_is_expected_between_two_and_four_times_and_is_called_twice
77
- test_result = run_as_test do
78
- mock = mock('mock')
79
- mock.expects(:method).times(2..4)
80
- 2.times { mock.method }
81
- end
82
- assert_passed(test_result)
83
- end
84
-
85
- def test_should_pass_if_method_is_expected_between_two_and_four_times_and_is_called_three_times
86
- test_result = run_as_test do
87
- mock = mock('mock')
88
- mock.expects(:method).times(2..4)
89
- 3.times { mock.method }
90
- end
91
- assert_passed(test_result)
92
- end
93
-
94
- def test_should_pass_if_method_is_expected_between_two_and_four_times_and_is_called_four_times
95
- test_result = run_as_test do
96
- mock = mock('mock')
97
- mock.expects(:method).times(2..4)
98
- 4.times { mock.method }
99
- end
100
- assert_passed(test_result)
101
- end
102
-
103
- def test_should_fail_if_method_is_expected_between_two_and_four_times_and_is_called_once
104
- test_result = run_as_test do
105
- mock = mock('mock')
106
- mock.expects(:method).times(2..4)
107
- 1.times { mock.method }
108
- end
109
- assert_failed(test_result)
110
- assert_equal [
111
- "not all expectations were satisfied",
112
- "unsatisfied expectations:",
113
- "- expected between 2 and 4 times, invoked once: #<Mock:mock>.method(any_parameters)"
114
- ], test_result.failure_message_lines
115
- end
116
-
117
- def test_should_fail_fast_if_method_is_expected_between_two_and_four_times_and_is_called_five_times
118
- test_result = run_as_test do
119
- mock = mock('mock')
120
- mock.expects(:method).times(2..4)
121
- 5.times { mock.method }
122
- end
123
- assert_failed(test_result)
124
- assert_equal [
125
- "unexpected invocation: #<Mock:mock>.method()",
126
- "unsatisfied expectations:",
127
- "- expected between 2 and 4 times, invoked 5 times: #<Mock:mock>.method(any_parameters)"
128
- ], test_result.failure_message_lines
129
- end
130
-
131
- def test_should_pass_if_method_is_expected_at_least_once_and_is_called_once
132
- test_result = run_as_test do
133
- mock = mock('mock')
134
- mock.expects(:method).at_least_once
135
- 1.times { mock.method }
136
- end
137
- assert_passed(test_result)
138
- end
139
-
140
- def test_should_pass_if_method_is_expected_at_least_once_and_is_called_twice
141
- test_result = run_as_test do
142
- mock = mock('mock')
143
- mock.expects(:method).at_least_once
144
- 2.times { mock.method }
145
- end
146
- assert_passed(test_result)
147
- end
148
-
149
- def test_should_fail_if_method_is_expected_at_least_once_but_is_never_called
150
- test_result = run_as_test do
151
- mock = mock('mock')
152
- mock.expects(:method).at_least_once
153
- 0.times { mock.method }
154
- end
155
- assert_failed(test_result)
156
- assert_equal [
157
- "not all expectations were satisfied",
158
- "unsatisfied expectations:",
159
- "- expected at least once, not yet invoked: #<Mock:mock>.method(any_parameters)"
160
- ], test_result.failure_message_lines
161
- end
162
-
163
- def test_should_pass_if_method_is_expected_at_most_once_and_is_never_called
164
- test_result = run_as_test do
165
- mock = mock('mock')
166
- mock.expects(:method).at_most_once
167
- 0.times { mock.method }
168
- end
169
- assert_passed(test_result)
170
- end
171
-
172
- def test_should_pass_if_method_is_expected_at_most_once_and_called_once
173
- test_result = run_as_test do
174
- mock = mock('mock')
175
- mock.expects(:method).at_most_once
176
- 1.times { mock.method }
177
- end
178
- assert_passed(test_result)
179
- end
180
-
181
- def test_should_fail_fast_if_method_is_expected_at_most_once_but_is_called_twice
182
- test_result = run_as_test do
183
- mock = mock('mock')
184
- mock.expects(:method).at_most_once
185
- 2.times { mock.method }
186
- end
187
- assert_failed(test_result)
188
- assert_equal [
189
- "unexpected invocation: #<Mock:mock>.method()",
190
- "unsatisfied expectations:",
191
- "- expected at most once, invoked twice: #<Mock:mock>.method(any_parameters)"
192
- ], test_result.failure_message_lines
193
- end
194
-
195
- def test_should_pass_if_method_is_never_expected_and_is_never_called_even_if_everything_is_stubbed
196
- test_result = run_as_test do
197
- stub = stub_everything('stub')
198
- stub.expects(:method).never
199
- 0.times { stub.method }
200
- end
201
- assert_passed(test_result)
202
- end
203
-
204
- def test_should_fail_fast_if_method_is_never_expected_but_is_called_once_even_if_everything_is_stubbed
205
- test_result = run_as_test do
206
- stub = stub_everything('stub')
207
- stub.expects(:method).never
208
- 1.times { stub.method }
209
- end
210
- assert_failed(test_result)
211
- assert_equal [
212
- "unexpected invocation: #<Mock:stub>.method()",
213
- "unsatisfied expectations:",
214
- "- expected never, invoked once: #<Mock:stub>.method(any_parameters)"
215
- ], test_result.failure_message_lines
216
- end
217
-
218
- def test_should_fail_fast_if_there_is_no_matching_expectation
219
- test_result = run_as_test do
220
- mock = mock('mock')
221
- mock.expects(:method).with(1)
222
- 1.times { mock.method }
223
- end
224
- assert_failed(test_result)
225
- assert_equal [
226
- "unexpected invocation: #<Mock:mock>.method()",
227
- "unsatisfied expectations:",
228
- "- expected exactly once, not yet invoked: #<Mock:mock>.method(1)"
229
- ], test_result.failure_message_lines
230
- end
231
-
232
- end