mocha 1.2.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +1 -0
  3. data/.rubocop.yml +65 -0
  4. data/.rubocop_todo.yml +27 -0
  5. data/.yardopts +1 -0
  6. data/CONTRIBUTING.md +4 -9
  7. data/Gemfile +29 -0
  8. data/README.md +110 -106
  9. data/RELEASE.md +306 -1
  10. data/Rakefile +52 -45
  11. data/gemfiles/Gemfile.minitest.latest +1 -0
  12. data/gemfiles/Gemfile.test-unit.latest +2 -5
  13. data/lib/mocha/any_instance_method.rb +9 -62
  14. data/lib/mocha/api.rb +84 -68
  15. data/lib/mocha/argument_iterator.rb +4 -8
  16. data/lib/mocha/backtrace_filter.rb +1 -5
  17. data/lib/mocha/block_matcher.rb +31 -0
  18. data/lib/mocha/cardinality.rb +60 -49
  19. data/lib/mocha/central.rb +21 -12
  20. data/lib/mocha/change_state_side_effect.rb +0 -4
  21. data/lib/mocha/class_methods.rb +19 -21
  22. data/lib/mocha/configuration.rb +312 -47
  23. data/lib/mocha/debug.rb +3 -2
  24. data/lib/mocha/deprecation.rb +8 -11
  25. data/lib/mocha/detection/mini_test.rb +0 -2
  26. data/lib/mocha/detection/test_unit.rb +3 -5
  27. data/lib/mocha/error_with_filtered_backtrace.rb +13 -0
  28. data/lib/mocha/exception_raiser.rb +4 -6
  29. data/lib/mocha/expectation.rb +186 -95
  30. data/lib/mocha/expectation_error.rb +1 -1
  31. data/lib/mocha/expectation_error_factory.rb +0 -1
  32. data/lib/mocha/expectation_list.rb +7 -11
  33. data/lib/mocha/hooks.rb +1 -3
  34. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  35. data/lib/mocha/inspect.rb +30 -38
  36. data/lib/mocha/instance_method.rb +11 -8
  37. data/lib/mocha/integration/mini_test/adapter.rb +2 -4
  38. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  39. data/lib/mocha/integration/mini_test.rb +10 -31
  40. data/lib/mocha/integration/monkey_patcher.rb +5 -7
  41. data/lib/mocha/integration/test_unit/adapter.rb +5 -6
  42. data/lib/mocha/integration/test_unit.rb +10 -26
  43. data/lib/mocha/invocation.rb +73 -0
  44. data/lib/mocha/is_a.rb +0 -2
  45. data/lib/mocha/logger.rb +0 -4
  46. data/lib/mocha/macos_version.rb +5 -0
  47. data/lib/mocha/method_matcher.rb +1 -5
  48. data/lib/mocha/minitest.rb +6 -0
  49. data/lib/mocha/mock.rb +99 -51
  50. data/lib/mocha/mockery.rb +70 -99
  51. data/lib/mocha/names.rb +2 -12
  52. data/lib/mocha/not_initialized_error.rb +7 -0
  53. data/lib/mocha/object_methods.rb +25 -31
  54. data/lib/mocha/parameter_matchers/all_of.rb +2 -8
  55. data/lib/mocha/parameter_matchers/any_of.rb +2 -8
  56. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  57. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  58. data/lib/mocha/parameter_matchers/base.rb +7 -13
  59. data/lib/mocha/parameter_matchers/equals.rb +0 -6
  60. data/lib/mocha/parameter_matchers/{query_string.rb → equivalent_uri.rb} +14 -15
  61. data/lib/mocha/parameter_matchers/has_entries.rb +2 -7
  62. data/lib/mocha/parameter_matchers/has_entry.rb +26 -21
  63. data/lib/mocha/parameter_matchers/has_key.rb +2 -7
  64. data/lib/mocha/parameter_matchers/has_keys.rb +53 -0
  65. data/lib/mocha/parameter_matchers/has_value.rb +2 -7
  66. data/lib/mocha/parameter_matchers/includes.rb +6 -7
  67. data/lib/mocha/parameter_matchers/instance_methods.rb +27 -0
  68. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  69. data/lib/mocha/parameter_matchers/is_a.rb +2 -7
  70. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  71. data/lib/mocha/parameter_matchers/not.rb +2 -7
  72. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  73. data/lib/mocha/parameter_matchers/positional_or_keyword_hash.rb +64 -0
  74. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  75. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  76. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  77. data/lib/mocha/parameter_matchers.rb +3 -4
  78. data/lib/mocha/parameters_matcher.rb +8 -11
  79. data/lib/mocha/raised_exception.rb +11 -0
  80. data/lib/mocha/receivers.rb +10 -14
  81. data/lib/mocha/return_values.rb +4 -8
  82. data/lib/mocha/ruby_version.rb +1 -2
  83. data/lib/mocha/sequence.rb +4 -9
  84. data/lib/mocha/single_return_value.rb +2 -5
  85. data/lib/mocha/state_machine.rb +33 -46
  86. data/lib/mocha/stubbed_method.rb +88 -0
  87. data/lib/mocha/stubbing_error.rb +2 -13
  88. data/lib/mocha/test_unit.rb +5 -2
  89. data/lib/mocha/thrower.rb +4 -6
  90. data/lib/mocha/thrown_object.rb +12 -0
  91. data/lib/mocha/version.rb +1 -1
  92. data/lib/mocha/yield_parameters.rb +7 -17
  93. data/mocha.gemspec +14 -65
  94. data/yard-templates/default/layout/html/google_analytics.erb +6 -9
  95. data/yard-templates/default/layout/html/setup.rb +2 -3
  96. metadata +26 -266
  97. data/bin/build-matrix +0 -70
  98. data/gemfiles/Gemfile.minitest.1.3.0 +0 -7
  99. data/gemfiles/Gemfile.minitest.1.4.0 +0 -7
  100. data/gemfiles/Gemfile.minitest.1.4.1 +0 -7
  101. data/gemfiles/Gemfile.minitest.1.4.2 +0 -7
  102. data/gemfiles/Gemfile.minitest.2.0.0 +0 -7
  103. data/gemfiles/Gemfile.minitest.2.0.1 +0 -7
  104. data/gemfiles/Gemfile.minitest.2.11.0 +0 -7
  105. data/gemfiles/Gemfile.minitest.2.11.2 +0 -7
  106. data/gemfiles/Gemfile.minitest.2.3.0 +0 -7
  107. data/gemfiles/Gemfile.test-unit.2.0.0 +0 -7
  108. data/gemfiles/Gemfile.test-unit.2.0.1 +0 -7
  109. data/gemfiles/Gemfile.test-unit.2.0.3 +0 -7
  110. data/init.rb +0 -3
  111. data/lib/mocha/class_method.rb +0 -119
  112. data/lib/mocha/integration/mini_test/nothing.rb +0 -19
  113. data/lib/mocha/integration/mini_test/version_13.rb +0 -51
  114. data/lib/mocha/integration/mini_test/version_140.rb +0 -51
  115. data/lib/mocha/integration/mini_test/version_141.rb +0 -62
  116. data/lib/mocha/integration/mini_test/version_142_to_172.rb +0 -62
  117. data/lib/mocha/integration/mini_test/version_200.rb +0 -63
  118. data/lib/mocha/integration/mini_test/version_201_to_222.rb +0 -63
  119. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +0 -67
  120. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +0 -70
  121. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +0 -65
  122. data/lib/mocha/integration/test_unit/gem_version_200.rb +0 -59
  123. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +0 -59
  124. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +0 -59
  125. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +0 -65
  126. data/lib/mocha/integration/test_unit/nothing.rb +0 -19
  127. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +0 -58
  128. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +0 -60
  129. data/lib/mocha/integration.rb +0 -14
  130. data/lib/mocha/mini_test.rb +0 -3
  131. data/lib/mocha/module_method.rb +0 -16
  132. data/lib/mocha/module_methods.rb +0 -14
  133. data/lib/mocha/multiple_yields.rb +0 -20
  134. data/lib/mocha/no_yields.rb +0 -11
  135. data/lib/mocha/parameter_matchers/object.rb +0 -17
  136. data/lib/mocha/pretty_parameters.rb +0 -28
  137. data/lib/mocha/setup.rb +0 -9
  138. data/lib/mocha/single_yield.rb +0 -18
  139. data/lib/mocha/standalone.rb +0 -4
  140. data/lib/mocha/unexpected_invocation.rb +0 -26
  141. data/lib/mocha_standalone.rb +0 -4
  142. data/test/acceptance/acceptance_test_helper.rb +0 -41
  143. data/test/acceptance/bug_18914_test.rb +0 -43
  144. data/test/acceptance/bug_21465_test.rb +0 -34
  145. data/test/acceptance/bug_21563_test.rb +0 -25
  146. data/test/acceptance/exception_rescue_test.rb +0 -55
  147. data/test/acceptance/expectations_on_multiple_methods_test.rb +0 -55
  148. data/test/acceptance/expected_invocation_count_test.rb +0 -232
  149. data/test/acceptance/failure_messages_test.rb +0 -64
  150. data/test/acceptance/issue_272_test.rb +0 -52
  151. data/test/acceptance/issue_65_test.rb +0 -63
  152. data/test/acceptance/issue_70_test.rb +0 -55
  153. data/test/acceptance/mocha_example_test.rb +0 -98
  154. data/test/acceptance/mocha_test_result_test.rb +0 -84
  155. data/test/acceptance/mock_test.rb +0 -100
  156. data/test/acceptance/mock_with_initializer_block_test.rb +0 -51
  157. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -78
  158. data/test/acceptance/multiple_expectations_failure_message_test.rb +0 -68
  159. data/test/acceptance/optional_parameters_test.rb +0 -70
  160. data/test/acceptance/parameter_matcher_test.rb +0 -337
  161. data/test/acceptance/partial_mocks_test.rb +0 -47
  162. data/test/acceptance/prepend_test.rb +0 -89
  163. data/test/acceptance/raise_exception_test.rb +0 -39
  164. data/test/acceptance/return_value_test.rb +0 -52
  165. data/test/acceptance/sequence_test.rb +0 -192
  166. data/test/acceptance/states_test.rb +0 -70
  167. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +0 -34
  168. data/test/acceptance/stub_any_instance_method_test.rb +0 -280
  169. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +0 -106
  170. data/test/acceptance/stub_class_method_defined_on_class_test.rb +0 -78
  171. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -75
  172. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +0 -112
  173. data/test/acceptance/stub_everything_test.rb +0 -56
  174. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +0 -93
  175. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -69
  176. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -69
  177. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -75
  178. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -78
  179. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +0 -75
  180. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -70
  181. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -72
  182. data/test/acceptance/stub_method_defined_on_module_and_aliased_test.rb +0 -39
  183. data/test/acceptance/stub_module_method_test.rb +0 -163
  184. data/test/acceptance/stub_test.rb +0 -52
  185. data/test/acceptance/stubba_example_test.rb +0 -102
  186. data/test/acceptance/stubba_test_result_test.rb +0 -66
  187. data/test/acceptance/stubbing_error_backtrace_test.rb +0 -64
  188. data/test/acceptance/stubbing_frozen_object_test.rb +0 -88
  189. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +0 -48
  190. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -65
  191. data/test/acceptance/stubbing_nil_test.rb +0 -61
  192. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +0 -143
  193. data/test/acceptance/stubbing_non_existent_class_method_test.rb +0 -157
  194. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +0 -147
  195. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -130
  196. data/test/acceptance/stubbing_non_public_class_method_test.rb +0 -163
  197. data/test/acceptance/stubbing_non_public_instance_method_test.rb +0 -143
  198. data/test/acceptance/stubbing_on_non_mock_object_test.rb +0 -64
  199. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +0 -35
  200. data/test/acceptance/throw_test.rb +0 -45
  201. data/test/acceptance/unexpected_invocation_test.rb +0 -25
  202. data/test/acceptance/unstubbing_test.rb +0 -168
  203. data/test/assertions.rb +0 -8
  204. data/test/deprecation_disabler.rb +0 -15
  205. data/test/execution_point.rb +0 -36
  206. data/test/integration/mini_test_test.rb +0 -8
  207. data/test/integration/shared_tests.rb +0 -174
  208. data/test/integration/test_unit_test.rb +0 -8
  209. data/test/method_definer.rb +0 -24
  210. data/test/mini_test_result.rb +0 -90
  211. data/test/minitest_result.rb +0 -49
  212. data/test/simple_counter.rb +0 -13
  213. data/test/test_helper.rb +0 -50
  214. data/test/test_runner.rb +0 -58
  215. data/test/test_unit_result.rb +0 -20
  216. data/test/unit/any_instance_method_test.rb +0 -134
  217. data/test/unit/array_inspect_test.rb +0 -16
  218. data/test/unit/backtrace_filter_test.rb +0 -19
  219. data/test/unit/cardinality_test.rb +0 -56
  220. data/test/unit/central_test.rb +0 -100
  221. data/test/unit/change_state_side_effect_test.rb +0 -41
  222. data/test/unit/class_method_test.rb +0 -225
  223. data/test/unit/class_methods_test.rb +0 -40
  224. data/test/unit/configuration_test.rb +0 -38
  225. data/test/unit/date_time_inspect_test.rb +0 -21
  226. data/test/unit/exception_raiser_test.rb +0 -42
  227. data/test/unit/expectation_list_test.rb +0 -82
  228. data/test/unit/expectation_test.rb +0 -497
  229. data/test/unit/hash_inspect_test.rb +0 -16
  230. data/test/unit/hooks_test.rb +0 -29
  231. data/test/unit/in_state_ordering_constraint_test.rb +0 -43
  232. data/test/unit/method_matcher_test.rb +0 -28
  233. data/test/unit/mock_test.rb +0 -342
  234. data/test/unit/mockery_test.rb +0 -151
  235. data/test/unit/module_methods_test.rb +0 -19
  236. data/test/unit/multiple_yields_test.rb +0 -18
  237. data/test/unit/no_yields_test.rb +0 -18
  238. data/test/unit/object_inspect_test.rb +0 -39
  239. data/test/unit/object_methods_test.rb +0 -46
  240. data/test/unit/parameter_matchers/all_of_test.rb +0 -26
  241. data/test/unit/parameter_matchers/any_of_test.rb +0 -26
  242. data/test/unit/parameter_matchers/anything_test.rb +0 -21
  243. data/test/unit/parameter_matchers/equals_test.rb +0 -25
  244. data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
  245. data/test/unit/parameter_matchers/has_entry_test.rb +0 -129
  246. data/test/unit/parameter_matchers/has_key_test.rb +0 -55
  247. data/test/unit/parameter_matchers/has_value_test.rb +0 -57
  248. data/test/unit/parameter_matchers/includes_test.rb +0 -102
  249. data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
  250. data/test/unit/parameter_matchers/is_a_test.rb +0 -25
  251. data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
  252. data/test/unit/parameter_matchers/not_test.rb +0 -26
  253. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -46
  254. data/test/unit/parameter_matchers/responds_with_test.rb +0 -32
  255. data/test/unit/parameter_matchers/stub_matcher.rb +0 -27
  256. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -25
  257. data/test/unit/parameters_matcher_test.rb +0 -121
  258. data/test/unit/receivers_test.rb +0 -66
  259. data/test/unit/return_values_test.rb +0 -63
  260. data/test/unit/sequence_test.rb +0 -104
  261. data/test/unit/single_return_value_test.rb +0 -14
  262. data/test/unit/single_yield_test.rb +0 -18
  263. data/test/unit/state_machine_test.rb +0 -98
  264. data/test/unit/string_inspect_test.rb +0 -11
  265. data/test/unit/thrower_test.rb +0 -20
  266. data/test/unit/yield_parameters_test.rb +0 -93
@@ -1,342 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'mocha/ruby_version'
3
- require 'mocha/mock'
4
- require 'mocha/expectation_error_factory'
5
- require 'set'
6
- require 'simple_counter'
7
-
8
- class MockTest < Mocha::TestCase
9
-
10
- include Mocha
11
-
12
- def test_should_set_single_expectation
13
- mock = build_mock
14
- mock.expects(:method1).returns(1)
15
- assert_nothing_raised(ExpectationErrorFactory.exception_class) do
16
- assert_equal 1, mock.method1
17
- end
18
- end
19
-
20
- def test_should_build_and_store_expectations
21
- mock = build_mock
22
- expectation = mock.expects(:method1)
23
- assert_not_nil expectation
24
- assert_equal [expectation], mock.__expectations__.to_a
25
- end
26
-
27
- def test_should_not_stub_everything_by_default
28
- mock = build_mock
29
- assert_equal false, mock.everything_stubbed
30
- end
31
-
32
- def test_should_stub_everything
33
- mock = build_mock
34
- mock.stub_everything
35
- assert_equal true, mock.everything_stubbed
36
- end
37
-
38
- def test_should_be_able_to_extend_mock_object_with_module
39
- mock = build_mock
40
- assert_nothing_raised(ExpectationErrorFactory.exception_class) { mock.extend(Module.new) }
41
- end
42
-
43
- def test_should_be_equal
44
- mock = build_mock
45
- assert_equal true, mock.eql?(mock)
46
- end
47
-
48
- if PRE_RUBY_V19
49
- OBJECT_METHODS = STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS.reject { |m| m =~ /^__.*__$/ || ["method_missing", "singleton_method_undefined", "initialize"].include?(m)}
50
- else
51
- OBJECT_METHODS = STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS.reject { |m| m =~ /^__.*__$/ || [:object_id, :method_missing, :singleton_method_undefined, :initialize, :String, :singleton_method_added].include?(m) }
52
- end
53
-
54
- def test_should_be_able_to_mock_standard_object_methods
55
- mock = build_mock
56
- OBJECT_METHODS.each { |method| mock.__expects__(method.to_sym).returns(method) }
57
- OBJECT_METHODS.each { |method| assert_equal method, mock.__send__(method.to_sym) }
58
- assert mock.__verified__?
59
- end
60
-
61
- def test_should_be_able_to_stub_standard_object_methods
62
- mock = build_mock
63
- OBJECT_METHODS.each { |method| mock.__stubs__(method.to_sym).returns(method) }
64
- OBJECT_METHODS.each { |method| assert_equal method, mock.__send__(method.to_sym) }
65
- end
66
-
67
- def test_should_create_and_add_expectations
68
- mock = build_mock
69
- expectation1 = mock.expects(:method1)
70
- expectation2 = mock.expects(:method2)
71
- assert_equal [expectation1, expectation2].to_set, mock.__expectations__.to_set
72
- end
73
-
74
- def test_should_pass_backtrace_into_expectation
75
- mock = build_mock
76
- backtrace = Object.new
77
- expectation = mock.expects(:method1, backtrace)
78
- assert_equal backtrace, expectation.backtrace
79
- end
80
-
81
- def test_should_pass_backtrace_into_stub
82
- mock = build_mock
83
- backtrace = Object.new
84
- stub = mock.stubs(:method1, backtrace)
85
- assert_equal backtrace, stub.backtrace
86
- end
87
-
88
- def test_should_create_and_add_stubs
89
- mock = build_mock
90
- stub1 = mock.stubs(:method1)
91
- stub2 = mock.stubs(:method2)
92
- assert_equal [stub1, stub2].to_set, mock.__expectations__.to_set
93
- end
94
-
95
- def test_should_invoke_expectation_and_return_result
96
- mock = build_mock
97
- mock.expects(:my_method).returns(:result)
98
- result = mock.my_method
99
- assert_equal :result, result
100
- end
101
-
102
- def test_should_not_raise_error_if_stubbing_everything
103
- mock = build_mock
104
- mock.stub_everything
105
- result = nil
106
- assert_nothing_raised(ExpectationErrorFactory.exception_class) do
107
- result = mock.unexpected_method
108
- end
109
- assert_nil result
110
- end
111
-
112
- def test_should_raise_assertion_error_for_unexpected_method_call
113
- mock = build_mock
114
- error = assert_raise(ExpectationErrorFactory.exception_class) do
115
- mock.unexpected_method_called(:my_method, :argument1, :argument2)
116
- end
117
- assert_match(/unexpected invocation/, error.message)
118
- assert_match(/my_method/, error.message)
119
- assert_match(/argument1/, error.message)
120
- assert_match(/argument2/, error.message)
121
- end
122
-
123
- def test_should_not_verify_successfully_because_not_all_expectations_have_been_satisfied
124
- mock = build_mock
125
- mock.expects(:method1)
126
- mock.expects(:method2)
127
- mock.method1
128
- assert !mock.__verified__?
129
- end
130
-
131
- def test_should_increment_assertion_counter_for_every_verified_expectation
132
- mock = build_mock
133
-
134
- mock.expects(:method1)
135
- mock.method1
136
-
137
- mock.expects(:method2)
138
- mock.method2
139
-
140
- assertion_counter = SimpleCounter.new
141
-
142
- mock.__verified__?(assertion_counter)
143
-
144
- assert_equal 2, assertion_counter.count
145
- end
146
-
147
- def test_should_yield_supplied_parameters_to_block
148
- mock = build_mock
149
- parameters_for_yield = [1, 2, 3]
150
- mock.expects(:method1).yields(*parameters_for_yield)
151
- yielded_parameters = nil
152
- mock.method1() { |*parameters| yielded_parameters = parameters }
153
- assert_equal parameters_for_yield, yielded_parameters
154
- end
155
-
156
- def test_should_set_up_multiple_expectations_with_return_values
157
- mock = build_mock
158
- mock.expects(:method1 => :result1, :method2 => :result2)
159
- assert_equal :result1, mock.method1
160
- assert_equal :result2, mock.method2
161
- end
162
-
163
- def test_should_set_up_multiple_stubs_with_return_values
164
- mock = build_mock
165
- mock.stubs(:method1 => :result1, :method2 => :result2)
166
- assert_equal :result1, mock.method1
167
- assert_equal :result2, mock.method2
168
- end
169
-
170
- def test_should_keep_returning_specified_value_for_stubs
171
- mock = build_mock
172
- mock.stubs(:method1).returns(1)
173
- assert_equal 1, mock.method1
174
- assert_equal 1, mock.method1
175
- end
176
-
177
- def test_should_keep_returning_specified_value_for_expects
178
- mock = build_mock
179
- mock.expects(:method1).times(2).returns(1)
180
- assert_equal 1, mock.method1
181
- assert_equal 1, mock.method1
182
- end
183
-
184
- def test_should_match_most_recent_call_to_expects
185
- mock = build_mock
186
- mock.expects(:method1).returns(0)
187
- mock.expects(:method1).returns(1)
188
- assert_equal 1, mock.method1
189
- end
190
-
191
- def test_should_match_most_recent_call_to_stubs
192
- mock = build_mock
193
- mock.stubs(:method1).returns(0)
194
- mock.stubs(:method1).returns(1)
195
- assert_equal 1, mock.method1
196
- end
197
-
198
- def test_should_match_most_recent_call_to_stubs_or_expects
199
- mock = build_mock
200
- mock.stubs(:method1).returns(0)
201
- mock.expects(:method1).returns(1)
202
- assert_equal 1, mock.method1
203
- end
204
-
205
- def test_should_match_most_recent_call_to_expects_or_stubs
206
- mock = build_mock
207
- mock.expects(:method1).returns(0)
208
- mock.stubs(:method1).returns(1)
209
- assert_equal 1, mock.method1
210
- end
211
-
212
- def test_should_respond_to_expected_method
213
- mock = build_mock
214
- mock.expects(:method1)
215
- assert_equal true, mock.respond_to?(:method1)
216
- end
217
-
218
- def test_should_respond_to_expected_method_as_string
219
- mock = build_mock
220
- mock.expects(:method1)
221
- assert_equal true, mock.respond_to?('method1')
222
- end
223
-
224
- def test_should_not_respond_to_unexpected_method
225
- mock = build_mock
226
- assert_equal false, mock.respond_to?(:method1)
227
- end
228
-
229
- def test_should_respond_to_methods_which_the_responder_does_responds_to
230
- instance = Class.new do
231
- define_method(:respond_to?) { |symbol| true }
232
- end.new
233
- mock = build_mock
234
- mock.responds_like(instance)
235
- assert_equal true, mock.respond_to?(:invoked_method)
236
- end
237
-
238
- def test_should_not_respond_to_methods_which_the_responder_does_not_responds_to
239
- instance = Class.new do
240
- define_method(:respond_to?) { |symbol| false }
241
- end.new
242
- mock = build_mock
243
- mock.responds_like(instance)
244
- assert_equal false, mock.respond_to?(:invoked_method)
245
- end
246
-
247
- def test_should_respond_to_methods_which_the_responder_instance_does_responds_to
248
- klass = Class.new do
249
- define_method(:respond_to?) { |symbol| true }
250
- end
251
- mock = build_mock
252
- mock.responds_like_instance_of(klass)
253
- assert_equal true, mock.respond_to?(:invoked_method)
254
- end
255
-
256
- def test_should_not_respond_to_methods_which_the_responder_instance_does_not_responds_to
257
- klass = Class.new do
258
- define_method(:respond_to?) { |symbol| false }
259
- end
260
- mock = build_mock
261
- mock.responds_like_instance_of(klass)
262
- assert_equal false, mock.respond_to?(:invoked_method)
263
- end
264
-
265
- def test_respond_like_should_return_itself_to_allow_method_chaining
266
- mock = build_mock
267
- assert_same mock.responds_like(Object.new), mock
268
- end
269
-
270
- def test_respond_like_instance_of_should_return_itself_to_allow_method_chaining
271
- mock = build_mock
272
- assert_same mock.responds_like_instance_of(Object), mock
273
- end
274
-
275
- def test_should_not_raise_no_method_error_if_mock_is_not_restricted_to_respond_like_a_responder
276
- mock = build_mock
277
- mock.stubs(:invoked_method)
278
- assert_nothing_raised(NoMethodError) { mock.invoked_method }
279
- end
280
-
281
- def test_should_not_raise_no_method_error_if_responder_does_respond_to_invoked_method
282
- instance = Class.new do
283
- define_method(:respond_to?) { |symbol| true }
284
- end.new
285
- mock = build_mock
286
- mock.responds_like(instance)
287
- mock.stubs(:invoked_method)
288
- assert_nothing_raised(NoMethodError) { mock.invoked_method }
289
- end
290
-
291
- def test_should_raise_no_method_error_if_responder_does_not_respond_to_invoked_method
292
- instance = Class.new do
293
- define_method(:respond_to?) { |symbol| false }
294
- define_method(:mocha_inspect) { 'mocha_inspect' }
295
- end.new
296
- mock = build_mock
297
- mock.responds_like(instance)
298
- mock.stubs(:invoked_method)
299
- assert_raises(NoMethodError) { mock.invoked_method }
300
- end
301
-
302
- def test_should_raise_no_method_error_with_message_indicating_that_mock_is_constrained_to_respond_like_responder
303
- instance = Class.new do
304
- define_method(:respond_to?) { |symbol| false }
305
- define_method(:mocha_inspect) { 'mocha_inspect' }
306
- end.new
307
- mock = build_mock
308
- mock.responds_like(instance)
309
- mock.stubs(:invoked_method)
310
- begin
311
- mock.invoked_method
312
- rescue NoMethodError => e
313
- assert_match(/which responds like mocha_inspect/, e.message)
314
- end
315
- end
316
-
317
- def test_should_handle_respond_to_with_private_methods_param_without_error
318
- mock = build_mock
319
- assert_nothing_raised { mock.respond_to?(:object_id, false) }
320
- end
321
-
322
- def test_should_respond_to_any_method_if_stubbing_everything
323
- mock = build_mock
324
- mock.stub_everything
325
- assert mock.respond_to?(:abc)
326
- assert mock.respond_to?(:xyz)
327
- end
328
-
329
- def test_should_remove_expectation_for_unstubbed_method
330
- mock = build_mock
331
- mock.expects(:method1)
332
- mock.unstub(:method1)
333
- e = assert_raises(ExpectationErrorFactory.exception_class) { mock.method1 }
334
- assert_match(/unexpected invocation/, e.message)
335
- end
336
-
337
- private
338
-
339
- def build_mock
340
- Mock.new(nil)
341
- end
342
- end
@@ -1,151 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'mocha/mockery'
3
- require 'mocha/state_machine'
4
- require 'mocha/expectation_error_factory'
5
-
6
- class MockeryTest < Mocha::TestCase
7
-
8
- include Mocha
9
-
10
- def test_should_build_instance_of_mockery
11
- mockery = Mockery.instance
12
- assert_not_nil mockery
13
- assert_kind_of Mockery, mockery
14
- end
15
-
16
- def test_should_cache_instance_of_mockery
17
- mockery_1 = Mockery.instance
18
- mockery_2 = Mockery.instance
19
- assert_same mockery_1, mockery_2
20
- end
21
-
22
- def test_should_expire_mockery_instance_cache
23
- mockery_1 = Mockery.instance
24
- Mockery.reset_instance
25
- mockery_2 = Mockery.instance
26
- assert_not_same mockery_1, mockery_2
27
- end
28
-
29
- def test_should_raise_expectation_error_because_not_all_expectations_are_satisfied
30
- mockery = Mockery.new
31
- mock_1 = mockery.named_mock('mock-1') { expects(:method_1) }
32
- mock_2 = mockery.named_mock('mock-2') { expects(:method_2) }
33
- 1.times { mock_1.method_1 }
34
- 0.times { mock_2.method_2 }
35
- assert_raises(ExpectationErrorFactory.exception_class) { mockery.verify }
36
- end
37
-
38
- def test_should_reset_list_of_mocks_on_teardown
39
- mockery = Mockery.new
40
- mockery.unnamed_mock { expects(:my_method) }
41
- mockery.teardown
42
- assert_nothing_raised(ExpectationErrorFactory.exception_class) { mockery.verify }
43
- end
44
-
45
- def test_should_build_instance_of_stubba_on_instantiation
46
- mockery = Mockery.new
47
- assert_not_nil mockery.stubba
48
- assert_kind_of Central, mockery.stubba
49
- end
50
-
51
- def test_should_build_new_instance_of_stubba_on_teardown
52
- mockery = Mockery.new
53
- stubba_1 = mockery.stubba
54
- mockery.teardown
55
- stubba_2 = mockery.stubba
56
- assert_not_same stubba_1, stubba_2
57
- end
58
-
59
- def test_should_build_and_store_new_state_machine
60
- mockery = Mockery.new
61
- mockery.new_state_machine('state-machine-name')
62
- assert_equal 1, mockery.state_machines.length
63
- assert_kind_of StateMachine, mockery.state_machines[0]
64
- end
65
-
66
- def test_should_reset_list_of_state_machines_on_teardown
67
- mockery = Mockery.new
68
- mockery.new_state_machine('state-machine-name')
69
- mockery.teardown
70
- assert_equal 0, mockery.state_machines.length
71
- end
72
-
73
- class FakeMethod
74
- def stub; end
75
- def unstub; end
76
- def matches?(other); true; end
77
- end
78
-
79
- def test_should_unstub_all_methods_on_teardown
80
- mockery = Mockery.new
81
- stubba = mockery.stubba
82
- stubba.stub(FakeMethod.new)
83
- mockery.teardown
84
- assert stubba.stubba_methods.empty?
85
- end
86
-
87
- def test_should_display_object_id_for_mocha_inspect_if_mock_has_no_name
88
- mockery = Mockery.new
89
- mock = mockery.unnamed_mock
90
- assert_match Regexp.new("^#<Mock:0x[0-9A-Fa-f]{1,12}>$"), mock.mocha_inspect
91
- end
92
-
93
- def test_should_display_object_id_for_inspect_if_mock_has_no_name
94
- mockery = Mockery.new
95
- mock = mockery.unnamed_mock
96
- assert_match Regexp.new("^#<Mock:0x[0-9A-Fa-f]{1,12}>$"), mock.inspect
97
- end
98
-
99
- def test_should_display_name_for_mocha_inspect_if_mock_has_string_name
100
- mockery = Mockery.new
101
- mock = mockery.named_mock('named_mock')
102
- assert_equal "#<Mock:named_mock>", mock.mocha_inspect
103
- end
104
-
105
- def test_should_display_name_for_mocha_inspect_if_mock_has_symbol_name
106
- mockery = Mockery.new
107
- mock = mockery.named_mock(:named_mock)
108
- assert_equal "#<Mock:named_mock>", mock.mocha_inspect
109
- end
110
-
111
- def test_should_display_name_for_inspect_if_mock_has_string_name
112
- mockery = Mockery.new
113
- mock = mockery.named_mock('named_mock')
114
- assert_equal "#<Mock:named_mock>", mock.inspect
115
- end
116
-
117
- def test_should_display_name_for_inspect_if_mock_has_symbol_name
118
- mockery = Mockery.new
119
- mock = mockery.named_mock(:named_mock)
120
- assert_equal "#<Mock:named_mock>", mock.inspect
121
- end
122
-
123
- def test_should_display_impersonated_object_for_mocha_inspect
124
- mockery = Mockery.new
125
- instance = Object.new
126
- mock = mockery.mock_impersonating(instance)
127
- assert_equal "#{instance.mocha_inspect}", mock.mocha_inspect
128
- end
129
-
130
- def test_should_display_impersonated_object_for_inspect
131
- mockery = Mockery.new
132
- instance = Object.new
133
- mock = mockery.mock_impersonating(instance)
134
- assert_equal "#{instance.mocha_inspect}", mock.inspect
135
- end
136
-
137
- class FakeClass; end
138
-
139
- def test_should_display_any_instance_prefix_followed_by_class_whose_instances_are_being_impersonated_for_mocha_inspect
140
- mockery = Mockery.new
141
- mock = mockery.mock_impersonating_any_instance_of(FakeClass)
142
- assert_equal "#<AnyInstance:MockeryTest::FakeClass>", mock.mocha_inspect
143
- end
144
-
145
- def test_should_display_any_instance_prefix_followed_by_class_whose_instances_are_being_impersonated_for_inspect
146
- mockery = Mockery.new
147
- mock = mockery.mock_impersonating_any_instance_of(FakeClass)
148
- assert_equal "#<AnyInstance:MockeryTest::FakeClass>", mock.inspect
149
- end
150
-
151
- end
@@ -1,19 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'mocha/module_methods'
3
- require 'mocha/object_methods'
4
-
5
- class ModuleMethodsTest < Mocha::TestCase
6
-
7
- def setup
8
- @module = Module.new.extend(Mocha::ModuleMethods, Mocha::ObjectMethods)
9
- end
10
-
11
- def test_should_use_stubba_module_method_for_module
12
- assert_equal Mocha::ModuleMethod, @module.stubba_method
13
- end
14
-
15
- def test_should_stub_self_for_module
16
- assert_equal @module, @module.stubba_object
17
- end
18
-
19
- end
@@ -1,18 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
-
3
- require 'mocha/multiple_yields'
4
-
5
- class MultipleYieldsTest < Mocha::TestCase
6
-
7
- include Mocha
8
-
9
- def test_should_provide_parameters_for_multiple_yields_in_single_invocation
10
- parameter_group = MultipleYields.new([1, 2, 3], [4, 5])
11
- parameter_groups = []
12
- parameter_group.each do |parameters|
13
- parameter_groups << parameters
14
- end
15
- assert_equal [[1, 2, 3], [4, 5]], parameter_groups
16
- end
17
-
18
- end
@@ -1,18 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
-
3
- require 'mocha/no_yields'
4
-
5
- class NoYieldsTest < Mocha::TestCase
6
-
7
- include Mocha
8
-
9
- def test_should_provide_parameters_for_no_yields_in_single_invocation
10
- parameter_group = NoYields.new
11
- parameter_groups = []
12
- parameter_group.each do |parameters|
13
- parameter_groups << parameters
14
- end
15
- assert_equal [], parameter_groups
16
- end
17
-
18
- end
@@ -1,39 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'mocha/ruby_version'
3
- require 'mocha/inspect'
4
- require 'method_definer'
5
-
6
- class ObjectInspectTest < Mocha::TestCase
7
-
8
- def test_should_return_default_string_representation_of_object_not_including_instance_variables
9
- object = Object.new
10
- class << object
11
- attr_accessor :attribute
12
- end
13
- object.attribute = 'instance_variable'
14
- assert_match Regexp.new("^#<Object:0x[0-9A-Fa-f]{1,8}.*>$"), object.mocha_inspect
15
- assert_no_match(/instance_variable/, object.mocha_inspect)
16
- end
17
-
18
- def test_should_return_customized_string_representation_of_object
19
- object = Object.new
20
- class << object
21
- define_method(:inspect) { 'custom_inspect' }
22
- end
23
- assert_equal 'custom_inspect', object.mocha_inspect
24
- end
25
-
26
- def test_should_use_underscored_id_instead_of_object_id_or_id_so_that_they_can_be_stubbed
27
- calls = []
28
- object = Object.new
29
- object.replace_instance_method(:id) { calls << :id; return 1 } if Mocha::PRE_RUBY_V19
30
- object.replace_instance_method(:object_id) { calls << :object_id; return 1 }
31
- object.replace_instance_method(:__id__) { calls << :__id__; return 1 }
32
- object.replace_instance_method(:inspect) { "object-description" }
33
-
34
- object.mocha_inspect
35
-
36
- assert_equal [:__id__], calls.uniq
37
- end
38
-
39
- end
@@ -1,46 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'mocha/object_methods'
3
- require 'mocha/mock'
4
- require 'mocha/expectation_error_factory'
5
-
6
- class ObjectMethodsTest < Mocha::TestCase
7
-
8
- def setup
9
- @object = Object.new.extend(Mocha::ObjectMethods)
10
- end
11
-
12
- def test_should_build_mocha_referring_to_self
13
- mocha = @object.mocha
14
- assert_not_nil mocha
15
- assert mocha.is_a?(Mocha::Mock)
16
- assert_equal @object.mocha_inspect, mocha.mocha_inspect
17
- end
18
-
19
- def test_should_reuse_existing_mocha
20
- mocha_1 = @object.mocha
21
- mocha_2 = @object.mocha
22
- assert_equal mocha_1, mocha_2
23
- end
24
-
25
- def test_should_reset_mocha
26
- assert_nil @object.reset_mocha
27
- end
28
-
29
- def test_should_use_stubba_instance_method_for_object
30
- assert_equal Mocha::InstanceMethod, Object.new.stubba_method
31
- end
32
-
33
- def test_should_stub_self_for_object
34
- assert_equal @object, @object.stubba_object
35
- end
36
-
37
- def test_nobody_expects_the_spanish_inquisition
38
- assert_raise(Mocha::ExpectationErrorFactory.exception_class) { @object.expects(:the_spanish_inquisition) }
39
- end
40
-
41
- def test_should_alias_object_method
42
- klass = Class.new { def self.method_x; end }
43
- assert_equal klass._method(:method_x), klass.method(:method_x)
44
- end
45
-
46
- end
@@ -1,26 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/all_of'
4
- require 'mocha/inspect'
5
- require 'stub_matcher'
6
-
7
- class AllOfTest < Mocha::TestCase
8
-
9
- include Mocha::ParameterMatchers
10
-
11
- def test_should_match_if_all_matchers_match
12
- matcher = all_of(Stub::Matcher.new(true), Stub::Matcher.new(true), Stub::Matcher.new(true))
13
- assert matcher.matches?(['any_old_value'])
14
- end
15
-
16
- def test_should_not_match_if_any_matcher_does_not_match
17
- matcher = all_of(Stub::Matcher.new(true), Stub::Matcher.new(false), Stub::Matcher.new(true))
18
- assert !matcher.matches?(['any_old_value'])
19
- end
20
-
21
- def test_should_describe_matcher
22
- matcher = all_of(Stub::Matcher.new(true), Stub::Matcher.new(false), Stub::Matcher.new(true))
23
- assert_equal 'all_of(matcher(true), matcher(false), matcher(true))', matcher.mocha_inspect
24
- end
25
-
26
- end
@@ -1,26 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/any_of'
4
- require 'mocha/inspect'
5
- require 'stub_matcher'
6
-
7
- class AnyOfTest < Mocha::TestCase
8
-
9
- include Mocha::ParameterMatchers
10
-
11
- def test_should_match_if_any_matchers_match
12
- matcher = any_of(Stub::Matcher.new(false), Stub::Matcher.new(true), Stub::Matcher.new(false))
13
- assert matcher.matches?(['any_old_value'])
14
- end
15
-
16
- def test_should_not_match_if_no_matchers_match
17
- matcher = any_of(Stub::Matcher.new(false), Stub::Matcher.new(false), Stub::Matcher.new(false))
18
- assert !matcher.matches?(['any_old_value'])
19
- end
20
-
21
- def test_should_describe_matcher
22
- matcher = any_of(Stub::Matcher.new(false), Stub::Matcher.new(true), Stub::Matcher.new(false))
23
- assert_equal 'any_of(matcher(false), matcher(true), matcher(false))', matcher.mocha_inspect
24
- end
25
-
26
- end