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,40 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'mocha/class_methods'
3
- require 'mocha/object_methods'
4
-
5
- class ClassMethodsTest < Mocha::TestCase
6
-
7
- def setup
8
- @klass = Class.new.extend(Mocha::ClassMethods, Mocha::ObjectMethods)
9
- end
10
-
11
- def test_should_build_any_instance_object
12
- any_instance = @klass.any_instance
13
- assert_not_nil any_instance
14
- assert any_instance.is_a?(Mocha::ClassMethods::AnyInstance)
15
- end
16
-
17
- def test_should_return_same_any_instance_object
18
- any_instance_1 = @klass.any_instance
19
- any_instance_2 = @klass.any_instance
20
- assert_equal any_instance_1, any_instance_2
21
- end
22
-
23
- def test_should_use_stubba_class_method_for_class
24
- assert_equal Mocha::ClassMethod, @klass.stubba_method
25
- end
26
-
27
- def test_should_use_stubba_class_method_for_any_instance
28
- assert_equal Mocha::AnyInstanceMethod, @klass.any_instance.stubba_method
29
- end
30
-
31
- def test_should_stub_self_for_class
32
- assert_equal @klass, @klass.stubba_object
33
- end
34
-
35
- def test_should_stub_relevant_class_for_any_instance
36
- any_instance = @klass.any_instance
37
- assert_equal @klass, any_instance.stubba_object
38
- end
39
-
40
- end
@@ -1,38 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require "mocha/configuration"
3
-
4
- class ConfigurationTest < Mocha::TestCase
5
- def test_allow_temporarily_changes_config_when_given_block
6
- Mocha::Configuration.warn_when(:stubbing_method_unnecessarily)
7
- yielded = false
8
- Mocha::Configuration.allow(:stubbing_method_unnecessarily) do
9
- yielded = true
10
- assert Mocha::Configuration.allow?(:stubbing_method_unnecessarily)
11
- end
12
- assert yielded
13
- assert Mocha::Configuration.warn_when?(:stubbing_method_unnecessarily)
14
- end
15
-
16
- def test_prevent_temporarily_changes_config_when_given_block
17
- Mocha::Configuration.allow(:stubbing_method_unnecessarily)
18
- yielded = false
19
- Mocha::Configuration.prevent(:stubbing_method_unnecessarily) do
20
- yielded = true
21
- assert Mocha::Configuration.prevent?(:stubbing_method_unnecessarily)
22
- end
23
- assert yielded
24
- assert Mocha::Configuration.allow?(:stubbing_method_unnecessarily)
25
- end
26
-
27
- def test_warn_when_temporarily_changes_config_when_given_block
28
- Mocha::Configuration.allow(:stubbing_method_unnecessarily)
29
- yielded = false
30
- Mocha::Configuration.warn_when(:stubbing_method_unnecessarily) do
31
- yielded = true
32
- assert Mocha::Configuration.warn_when?(:stubbing_method_unnecessarily)
33
- end
34
- assert yielded
35
- assert Mocha::Configuration.allow?(:stubbing_method_unnecessarily)
36
- end
37
- end
38
-
@@ -1,21 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'mocha/inspect'
3
-
4
- class DateTimeInspectTest < Mocha::TestCase
5
-
6
- def test_should_use_include_date_in_seconds
7
- time = Time.now
8
- assert_equal "#{time.inspect} (#{time.to_f} secs)", time.mocha_inspect
9
- end
10
-
11
- def test_should_use_to_s_for_date
12
- date = Date.new(2006, 1, 1)
13
- assert_equal date.to_s, date.mocha_inspect
14
- end
15
-
16
- def test_should_use_to_s_for_datetime
17
- datetime = DateTime.new(2006, 1, 1)
18
- assert_equal datetime.to_s, datetime.mocha_inspect
19
- end
20
-
21
- end
@@ -1,42 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
-
3
- require 'mocha/exception_raiser'
4
- require 'timeout'
5
-
6
- class ExceptionRaiserTest < Mocha::TestCase
7
-
8
- include Mocha
9
-
10
- def test_should_raise_exception_with_specified_class_and_default_message
11
- exception_class = Class.new(StandardError)
12
- raiser = ExceptionRaiser.new(exception_class, nil)
13
- exception = assert_raises(exception_class) { raiser.evaluate }
14
- assert_equal exception_class.to_s, exception.message
15
- end
16
-
17
- def test_should_raise_exception_with_specified_class_and_message
18
- exception_class = Class.new(StandardError)
19
- raiser = ExceptionRaiser.new(exception_class, 'message')
20
- exception = assert_raises(exception_class) { raiser.evaluate }
21
- assert_equal 'message', exception.message
22
- end
23
-
24
- def test_should_raise_exception_instance
25
- exception_class = Class.new(StandardError)
26
- raiser = ExceptionRaiser.new(exception_class.new('message'), nil)
27
- exception = assert_raises(exception_class) { raiser.evaluate }
28
- assert_equal 'message', exception.message
29
- end
30
-
31
- def test_should_raise_interrupt_exception_with_default_message_so_it_works_in_ruby_1_8_6
32
- raiser = ExceptionRaiser.new(Interrupt, nil)
33
- assert_raises(Interrupt) { raiser.evaluate }
34
- end
35
-
36
- def test_should_raise_subclass_of_interrupt_exception_with_default_message_so_it_works_in_ruby_1_8_6
37
- exception_class = Class.new(Interrupt)
38
- raiser = ExceptionRaiser.new(exception_class, nil)
39
- assert_raises(exception_class) { raiser.evaluate }
40
- end
41
-
42
- end
@@ -1,82 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
- require 'mocha/expectation_list'
3
- require 'mocha/expectation'
4
- require 'set'
5
- require 'method_definer'
6
-
7
- class ExpectationListTest < Mocha::TestCase
8
-
9
- include Mocha
10
-
11
- def test_should_return_added_expectation
12
- expectation_list = ExpectationList.new
13
- expectation = Expectation.new(nil, :my_method)
14
- assert_same expectation, expectation_list.add(expectation)
15
- end
16
-
17
- def test_should_find_matching_expectation
18
- expectation_list = ExpectationList.new
19
- expectation1 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
20
- expectation2 = Expectation.new(nil, :my_method).with(:argument3, :argument4)
21
- expectation_list.add(expectation1)
22
- expectation_list.add(expectation2)
23
- assert_same expectation1, expectation_list.match(:my_method, :argument1, :argument2)
24
- end
25
-
26
- def test_should_remove_all_expectations_matching_method_name
27
- expectation_list = ExpectationList.new
28
- expectation1 = Expectation.new(nil, :method_one).with(:argument1, :argument2)
29
- expectation2 = Expectation.new(nil, :method_one).with(:argument3, :argument4)
30
- expectation3 = Expectation.new(nil, :method_two)
31
- expectation_list.add(expectation1)
32
- expectation_list.add(expectation2)
33
- expectation_list.add(expectation3)
34
- expectation_list.remove_all_matching_method(:method_one)
35
- assert_nil expectation_list.match(:method_one, :argument1, :argument2)
36
- assert_nil expectation_list.match(:method_one, :argument3, :argument4)
37
- assert_same expectation3, expectation_list.match(:method_two)
38
- end
39
-
40
- def test_should_find_most_recent_matching_expectation
41
- expectation_list = ExpectationList.new
42
- expectation1 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
43
- expectation2 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
44
- expectation_list.add(expectation1)
45
- expectation_list.add(expectation2)
46
- assert_same expectation2, expectation_list.match(:my_method, :argument1, :argument2)
47
- end
48
-
49
- def test_should_find_matching_expectation_allowing_invocation
50
- expectation_list = ExpectationList.new
51
- expectation1 = Expectation.new(nil, :my_method).with(:argument1, :argument2)
52
- expectation2 = Expectation.new(nil, :my_method).with(:argument3, :argument4)
53
- expectation1.define_instance_method(:invocations_allowed?) { true }
54
- expectation2.define_instance_method(:invocations_allowed?) { true }
55
- expectation_list.add(expectation1)
56
- expectation_list.add(expectation2)
57
- assert_same expectation1, expectation_list.match_allowing_invocation(:my_method, :argument1, :argument2)
58
- end
59
-
60
- def test_should_find_most_recent_matching_expectation_allowing_invocation
61
- expectation_list = ExpectationList.new
62
- expectation1 = Expectation.new(nil, :my_method)
63
- expectation2 = Expectation.new(nil, :my_method)
64
- expectation1.define_instance_method(:invocations_allowed?) { true }
65
- expectation2.define_instance_method(:invocations_allowed?) { false }
66
- expectation_list.add(expectation1)
67
- expectation_list.add(expectation2)
68
- assert_same expectation1, expectation_list.match_allowing_invocation(:my_method)
69
- end
70
-
71
- def test_should_combine_two_expectation_lists_into_one
72
- expectation_list1 = ExpectationList.new
73
- expectation_list2 = ExpectationList.new
74
- expectation1 = Expectation.new(nil, :my_method)
75
- expectation2 = Expectation.new(nil, :my_method)
76
- expectation_list1.add(expectation1)
77
- expectation_list2.add(expectation2)
78
- expectation_list = expectation_list1 + expectation_list2
79
- assert_equal [expectation1, expectation2], expectation_list.to_a
80
- end
81
-
82
- end