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,21 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/anything'
4
- require 'mocha/inspect'
5
-
6
- class AnythingTest < Mocha::TestCase
7
-
8
- include Mocha::ParameterMatchers
9
-
10
- def test_should_match_anything
11
- matcher = anything
12
- assert matcher.matches?([:something])
13
- assert matcher.matches?([{'x' => 'y'}])
14
- end
15
-
16
- def test_should_describe_matcher
17
- matcher = anything
18
- assert_equal "anything", matcher.mocha_inspect
19
- end
20
-
21
- end
@@ -1,25 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/equals'
4
- require 'mocha/inspect'
5
-
6
- class EqualsTest < Mocha::TestCase
7
-
8
- include Mocha::ParameterMatchers
9
-
10
- def test_should_match_object_that_equals_value
11
- matcher = equals('x')
12
- assert matcher.matches?(['x'])
13
- end
14
-
15
- def test_should_not_match_object_that_does_not_equal_value
16
- matcher = equals('x')
17
- assert !matcher.matches?(['y'])
18
- end
19
-
20
- def test_should_describe_matcher
21
- matcher = equals('x')
22
- assert_equal "'x'", matcher.mocha_inspect
23
- end
24
-
25
- end
@@ -1,51 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/has_entries'
4
- require 'mocha/parameter_matchers/object'
5
- require 'mocha/inspect'
6
-
7
- class HasEntriesTest < Mocha::TestCase
8
-
9
- include Mocha::ParameterMatchers
10
-
11
- def test_should_match_hash_including_specified_entries
12
- matcher = has_entries(:key_1 => 'value_1', :key_2 => 'value_2')
13
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2', :key_3 => 'value_3' }])
14
- end
15
-
16
- def test_should_not_match_hash_not_including_specified_entries
17
- matcher = has_entries(:key_1 => 'value_2', :key_2 => 'value_2', :key_3 => 'value_3')
18
- assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
19
- end
20
-
21
- def test_should_describe_matcher
22
- matcher = has_entries(:key_1 => 'value_1', :key_2 => 'value_2')
23
- description = matcher.mocha_inspect
24
- matches = /has_entries\((.*)\)/.match(description)
25
- assert_not_nil matches[0]
26
- entries = eval(matches[1], binding, __FILE__, __LINE__)
27
- assert_equal 'value_1', entries[:key_1]
28
- assert_equal 'value_2', entries[:key_2]
29
- end
30
-
31
- def test_should_match_hash_including_specified_entries_with_nested_key_matchers
32
- matcher = has_entries(equals(:key_1) => 'value_1', equals(:key_2) => 'value_2')
33
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2', :key_3 => 'value_3' }])
34
- end
35
-
36
- def test_should_not_match_hash_not_including_specified_entries_with_nested_key_matchers
37
- matcher = has_entries(equals(:key_1) => 'value_2', equals(:key_2) => 'value_2', equals(:key_3) => 'value_3')
38
- assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
39
- end
40
-
41
- def test_should_match_hash_including_specified_entries_with_nested_value_matchers
42
- matcher = has_entries(:key_1 => equals('value_1'), :key_2 => equals('value_2'))
43
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2', :key_3 => 'value_3' }])
44
- end
45
-
46
- def test_should_not_match_hash_not_including_specified_entries_with_nested_value_matchers
47
- matcher = has_entries(:key_1 => equals('value_2'), :key_2 => equals('value_2'), :key_3 => equals('value_3'))
48
- assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
49
- end
50
-
51
- end
@@ -1,129 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/has_entry'
4
- require 'mocha/parameter_matchers/object'
5
- require 'mocha/parameter_matchers/equals'
6
- require 'mocha/inspect'
7
-
8
- class HasEntryTest < Mocha::TestCase
9
-
10
- include Mocha::ParameterMatchers
11
-
12
- def test_should_match_hash_including_specified_key_value_pair
13
- matcher = has_entry(:key_1, 'value_1')
14
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
15
- end
16
-
17
- def test_should_not_match_hash_not_including_specified_key_value_pair
18
- matcher = has_entry(:key_1, 'value_2')
19
- assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
20
- end
21
-
22
- def test_should_match_hash_including_specified_entry
23
- matcher = has_entry(:key_1 => 'value_1')
24
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
25
- end
26
-
27
- def test_should_not_match_hash_not_including_specified_entry
28
- matcher = has_entry(:key_1 => 'value_2')
29
- assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
30
- end
31
-
32
- def test_should_describe_matcher_with_key_value_pair
33
- matcher = has_entry(:key_1, 'value_1')
34
- assert_equal "has_entry(:key_1 => 'value_1')", matcher.mocha_inspect
35
- end
36
-
37
- def test_should_describe_matcher_with_entry
38
- matcher = has_entry(:key_1 => 'value_1')
39
- assert_equal "has_entry(:key_1 => 'value_1')", matcher.mocha_inspect
40
- end
41
-
42
- def test_should_match_hash_including_specified_entry_with_nested_key_matcher
43
- matcher = has_entry(equals(:key_1) => 'value_1')
44
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
45
- end
46
-
47
- def test_should_match_hash_including_specified_entry_with_nested_value_matcher
48
- matcher = has_entry(:key_1 => equals('value_1'))
49
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
50
- end
51
-
52
- def test_should_not_match_hash_not_including_specified_entry_with_nested_key_matcher
53
- matcher = has_entry(equals(:key_1) => 'value_2')
54
- assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
55
- end
56
-
57
- def test_should_not_match_hash_not_including_specified_entry_with_nested_value_matcher
58
- matcher = has_entry(:key_1 => equals('value_2'))
59
- assert !matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
60
- end
61
-
62
- def test_should_not_match_object_that_doesnt_respond_to_keys
63
- matcher = has_entry(:key_1 => equals('value_2'))
64
- object = Class.new do
65
- def [](key)
66
- 'value_2'
67
- end
68
- end.new
69
- assert !matcher.matches?([object])
70
- end
71
-
72
- def test_should_not_match_object_that_doesnt_respond_to_square_bracket
73
- matcher = has_entry(:key_1 => equals('value_2'))
74
- object = Class.new do
75
- def keys
76
- [:key_1]
77
- end
78
- end.new
79
- assert !matcher.matches?([object])
80
- end
81
-
82
- def test_should_raise_argument_error_if_single_argument_is_not_a_hash
83
- e = assert_raises(ArgumentError) do
84
- has_entry(Array.new)
85
- end
86
- assert_equal "Argument is not a Hash.", e.message
87
- end
88
-
89
- def test_should_raise_argument_error_if_no_entries_are_supplied
90
- e = assert_raises(ArgumentError) do
91
- has_entry({})
92
- end
93
- assert_equal "Argument has no entries.", e.message
94
- end
95
-
96
- def test_should_raise_argument_error_if_multiple_entries_are_supplied
97
- e = assert_raises(ArgumentError) do
98
- has_entry(:key_1 => 'value_1', :key_2 => 'value_2')
99
- end
100
- assert_equal "Argument has multiple entries. Use Mocha::ParameterMatchers#has_entries instead.", e.message
101
- end
102
-
103
- def test_should_raise_argument_error_if_more_than_two_arguments_are_supplied
104
- e = assert_raises(ArgumentError) do
105
- has_entry(1, 2, 3)
106
- end
107
- assert_equal "Too many arguments; use either a single argument (must be a Hash) or two arguments (a key and a value).", e.message
108
- end
109
-
110
- def test_should_match_array_as_key
111
- matcher = has_entry([:key_1, :key_2] => 'value_1')
112
- assert matcher.matches?([{[:key_1, :key_2] => 'value_1', :key_3 => 'value_2'}])
113
- end
114
-
115
- def test_should_match_array_as_value
116
- matcher = has_entry(:key_1 => ['value_1', 'value_2'])
117
- assert matcher.matches?([{:key_1 => ['value_1', 'value_2']}])
118
- end
119
-
120
- def test_should_match_hash_as_value_and_key
121
- matcher = has_entry({{:key_1 => 'value_1', :key_2 => 'value_2'} => {:key_3 => 'value_3', :key_4 => 'value_4'}})
122
- assert matcher.matches?([{{:key_1 => 'value_1', :key_2 => 'value_2'} => {:key_3 => 'value_3', :key_4 => 'value_4'}, :key_5 => 'value_5'}])
123
- end
124
-
125
- def test_should_match_matcher_as_value_and_key
126
- matcher = has_entry({has_entry(:key_1 => 'value_1') => has_entry(:key_3 => 'value_3')})
127
- assert matcher.matches?([{{:key_1 => 'value_1', :key_2 => 'value_2'} => {:key_3 => 'value_3', :key_4 => 'value_4'}, :key_5 => 'value_5'}])
128
- end
129
- end
@@ -1,55 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/has_key'
4
- require 'mocha/parameter_matchers/object'
5
- require 'mocha/inspect'
6
-
7
- class HasKeyTest < Mocha::TestCase
8
-
9
- include Mocha::ParameterMatchers
10
-
11
- def test_should_match_hash_including_specified_key
12
- matcher = has_key(:key_1)
13
- assert matcher.matches?([{ :key_1 => 1, :key_2 => 2 }])
14
- end
15
-
16
- def test_should_not_match_hash_not_including_specified_key
17
- matcher = has_key(:key_1)
18
- assert !matcher.matches?([{ :key_2 => 2 }])
19
- end
20
-
21
- def test_should_describe_matcher
22
- matcher = has_key(:key)
23
- assert_equal 'has_key(:key)', matcher.mocha_inspect
24
- end
25
-
26
- def test_should_match_hash_including_specified_key_with_nested_key_matcher
27
- matcher = has_key(equals(:key_1))
28
- assert matcher.matches?([{ :key_1 => 1, :key_2 => 2 }])
29
- end
30
-
31
- def test_should_not_match_hash_not_including_specified_key_with_nested_key_matcher
32
- matcher = has_key(equals(:key_1))
33
- assert !matcher.matches?([{ :key_2 => 2 }])
34
- end
35
-
36
- def test_should_not_raise_error_on_empty_arguments
37
- matcher = has_key(:key)
38
- assert_nothing_raised { matcher.matches?([]) }
39
- end
40
-
41
- def test_should_not_match_on_empty_arguments
42
- matcher = has_key(:key)
43
- assert !matcher.matches?([])
44
- end
45
-
46
- def test_should_not_raise_error_on_argument_that_does_not_respond_to_keys
47
- matcher = has_key(:key)
48
- assert_nothing_raised { matcher.matches?([:key]) }
49
- end
50
-
51
- def test_should_not_match_on_argument_that_does_not_respond_to_keys
52
- matcher = has_key(:key)
53
- assert !matcher.matches?([:key])
54
- end
55
- end
@@ -1,57 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/has_value'
4
- require 'mocha/parameter_matchers/object'
5
- require 'mocha/parameter_matchers/equals'
6
- require 'mocha/inspect'
7
-
8
- class HasValueTest < Mocha::TestCase
9
-
10
- include Mocha::ParameterMatchers
11
-
12
- def test_should_match_hash_including_specified_value
13
- matcher = has_value('value_1')
14
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
15
- end
16
-
17
- def test_should_not_match_hash_not_including_specified_value
18
- matcher = has_value('value_1')
19
- assert !matcher.matches?([{ :key_2 => 'value_2' }])
20
- end
21
-
22
- def test_should_describe_matcher
23
- matcher = has_value('value_1')
24
- assert_equal "has_value('value_1')", matcher.mocha_inspect
25
- end
26
-
27
- def test_should_match_hash_including_specified_value_with_nested_value_matcher
28
- matcher = has_value(equals('value_1'))
29
- assert matcher.matches?([{ :key_1 => 'value_1', :key_2 => 'value_2' }])
30
- end
31
-
32
- def test_should_not_match_hash_not_including_specified_value_with_nested_value_matcher
33
- matcher = has_value(equals('value_1'))
34
- assert !matcher.matches?([{ :key_2 => 'value_2' }])
35
- end
36
-
37
- def test_should_not_raise_error_on_empty_arguments
38
- matcher = has_value('value_1')
39
- assert_nothing_raised { matcher.matches?([]) }
40
- end
41
-
42
- def test_should_not_match_empty_arguments
43
- matcher = has_value('value_1')
44
- assert !matcher.matches?([])
45
- end
46
-
47
- def test_should_not_raise_error_on_argument_that_does_not_respond_to_values
48
- matcher = has_value('value_1')
49
- assert_nothing_raised { matcher.matches?(['value_1']) }
50
- end
51
-
52
- def test_should_not_match_on_argument_that_does_not_respond_to_values
53
- matcher = has_value('value_1')
54
- assert !matcher.matches?(['value_1'])
55
- end
56
-
57
- end
@@ -1,59 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/includes'
4
- require 'mocha/inspect'
5
-
6
- class IncludesTest < Mocha::TestCase
7
-
8
- include Mocha::ParameterMatchers
9
-
10
- def test_should_match_object_including_value
11
- matcher = includes(:x)
12
- assert matcher.matches?([[:x, :y, :z]])
13
- end
14
-
15
- def test_should_match_object_including_all_values
16
- matcher = includes(:x, :y, :z)
17
- assert matcher.matches?([[:x, :y, :z]])
18
- end
19
-
20
- def test_should_not_match_object_that_does_not_include_value
21
- matcher = includes(:not_included)
22
- assert !matcher.matches?([[:x, :y, :z]])
23
- end
24
-
25
- def test_should_not_match_object_that_does_not_include_any_one_value
26
- matcher = includes(:x, :y, :z, :not_included)
27
- assert !matcher.matches?([[:x, :y, :z]])
28
- end
29
-
30
- def test_should_describe_matcher_with_one_item
31
- matcher = includes(:x)
32
- assert_equal "includes(:x)", matcher.mocha_inspect
33
- end
34
-
35
- def test_should_describe_matcher_with_multiple_items
36
- matcher = includes(:x, :y, :z)
37
- assert_equal "includes(:x, :y, :z)", matcher.mocha_inspect
38
- end
39
-
40
- def test_should_not_raise_error_on_emtpy_arguments
41
- matcher = includes(:x)
42
- assert_nothing_raised { matcher.matches?([]) }
43
- end
44
-
45
- def test_should_not_match_on_empty_arguments
46
- matcher = includes(:x)
47
- assert !matcher.matches?([])
48
- end
49
-
50
- def test_should_not_raise_error_on_argument_that_does_not_respond_to_include
51
- matcher = includes(:x)
52
- assert_nothing_raised { matcher.matches?([:x]) }
53
- end
54
-
55
- def test_should_not_match_on_argument_that_does_not_respond_to_include
56
- matcher = includes(:x)
57
- assert !matcher.matches?([:x])
58
- end
59
- end
@@ -1,25 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/instance_of'
4
- require 'mocha/inspect'
5
-
6
- class InstanceOfTest < Mocha::TestCase
7
-
8
- include Mocha::ParameterMatchers
9
-
10
- def test_should_match_object_that_is_an_instance_of_specified_class
11
- matcher = instance_of(String)
12
- assert matcher.matches?(['string'])
13
- end
14
-
15
- def test_should_not_match_object_that_is_not_an_instance_of_specified_class
16
- matcher = instance_of(String)
17
- assert !matcher.matches?([99])
18
- end
19
-
20
- def test_should_describe_matcher
21
- matcher = instance_of(String)
22
- assert_equal "instance_of(String)", matcher.mocha_inspect
23
- end
24
-
25
- end
@@ -1,25 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/is_a'
4
- require 'mocha/inspect'
5
-
6
- class IsATest < Mocha::TestCase
7
-
8
- include Mocha::ParameterMatchers
9
-
10
- def test_should_match_object_that_is_a_specified_class
11
- matcher = is_a(Integer)
12
- assert matcher.matches?([99])
13
- end
14
-
15
- def test_should_not_match_object_that_is_not_a_specified_class
16
- matcher = is_a(Integer)
17
- assert !matcher.matches?(['string'])
18
- end
19
-
20
- def test_should_describe_matcher
21
- matcher = is_a(Integer)
22
- assert_equal "is_a(Integer)", matcher.mocha_inspect
23
- end
24
-
25
- end
@@ -1,25 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/kind_of'
4
- require 'mocha/inspect'
5
-
6
- class KindOfTest < Mocha::TestCase
7
-
8
- include Mocha::ParameterMatchers
9
-
10
- def test_should_match_object_that_is_a_kind_of_specified_class
11
- matcher = kind_of(Integer)
12
- assert matcher.matches?([99])
13
- end
14
-
15
- def test_should_not_match_object_that_is_not_a_kind_of_specified_class
16
- matcher = kind_of(Integer)
17
- assert !matcher.matches?(['string'])
18
- end
19
-
20
- def test_should_describe_matcher
21
- matcher = kind_of(Integer)
22
- assert_equal "kind_of(Integer)", matcher.mocha_inspect
23
- end
24
-
25
- end
@@ -1,26 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/not'
4
- require 'mocha/inspect'
5
- require 'stub_matcher'
6
-
7
- class NotTest < Mocha::TestCase
8
-
9
- include Mocha::ParameterMatchers
10
-
11
- def test_should_match_if_matcher_does_not_match
12
- matcher = Not(Stub::Matcher.new(false))
13
- assert matcher.matches?(['any_old_value'])
14
- end
15
-
16
- def test_should_not_match_if_matcher_does_match
17
- matcher = Not(Stub::Matcher.new(true))
18
- assert !matcher.matches?(['any_old_value'])
19
- end
20
-
21
- def test_should_describe_matcher
22
- matcher = Not(Stub::Matcher.new(true))
23
- assert_equal 'Not(matcher(true))', matcher.mocha_inspect
24
- end
25
-
26
- end
@@ -1,46 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/regexp_matches'
4
- require 'mocha/inspect'
5
-
6
- class RegexpMatchesTest < Mocha::TestCase
7
-
8
- include Mocha::ParameterMatchers
9
-
10
- def test_should_match_parameter_matching_regular_expression
11
- matcher = regexp_matches(/oo/)
12
- assert matcher.matches?(['foo'])
13
- end
14
-
15
- def test_should_not_match_parameter_not_matching_regular_expression
16
- matcher = regexp_matches(/oo/)
17
- assert !matcher.matches?(['bar'])
18
- end
19
-
20
- def test_should_describe_matcher
21
- matcher = regexp_matches(/oo/)
22
- assert_equal "regexp_matches(/oo/)", matcher.mocha_inspect
23
- end
24
-
25
- def test_should_not_raise_error_on_empty_arguments
26
- matcher = regexp_matches(/oo/)
27
- assert_nothing_raised { matcher.matches?([]) }
28
- end
29
-
30
- def test_should_not_match_on_empty_arguments
31
- matcher = regexp_matches(/oo/)
32
- assert !matcher.matches?([])
33
- end
34
-
35
- def test_should_not_raise_error_on_argument_that_does_not_respond_to_equals_tilde
36
- object_not_responding_to_equals_tilde = Class.new { undef =~ }.new
37
- matcher = regexp_matches(/oo/)
38
- assert_nothing_raised { matcher.matches?([object_not_responding_to_equals_tilde]) }
39
- end
40
-
41
- def test_should_not_match_on_argument_that_does_not_respond_to_equals_tilde
42
- object_not_responding_to_equals_tilde = Class.new { undef =~ }.new
43
- matcher = regexp_matches(/oo/)
44
- assert !matcher.matches?([object_not_responding_to_equals_tilde])
45
- end
46
- end
@@ -1,32 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/responds_with'
4
- require 'mocha/parameter_matchers/object'
5
- require 'mocha/inspect'
6
-
7
- class RespondsWithTest < Mocha::TestCase
8
-
9
- include Mocha::ParameterMatchers
10
-
11
- def test_should_match_parameter_responding_with_expected_value
12
- matcher = responds_with(:upcase, 'FOO')
13
- assert matcher.matches?(['foo'])
14
- end
15
-
16
- def test_should_not_match_parameter_responding_with_unexpected_value
17
- matcher = responds_with(:upcase, 'FOO')
18
- assert !matcher.matches?(['bar'])
19
- end
20
-
21
- def test_should_match_parameter_responding_with_nested_responds_with_matcher
22
- matcher = responds_with(:foo, responds_with(:bar, 'baz'))
23
- object = Class.new { def foo; Class.new { def bar; 'baz'; end }.new; end }.new
24
- assert matcher.matches?([object])
25
- end
26
-
27
- def test_should_describe_matcher
28
- matcher = responds_with(:foo, :bar)
29
- assert_equal 'responds_with(:foo, :bar)', matcher.mocha_inspect
30
- end
31
-
32
- end
@@ -1,27 +0,0 @@
1
- module Stub
2
-
3
- class Matcher
4
-
5
- attr_accessor :value
6
-
7
- def initialize(matches)
8
- @matches = matches
9
- end
10
-
11
- def matches?(available_parameters)
12
- value = available_parameters.shift
13
- @value = value
14
- @matches
15
- end
16
-
17
- def mocha_inspect
18
- "matcher(#{@matches})"
19
- end
20
-
21
- def to_matcher
22
- self
23
- end
24
-
25
- end
26
-
27
- end
@@ -1,25 +0,0 @@
1
- require File.expand_path('../../../test_helper', __FILE__)
2
-
3
- require 'mocha/parameter_matchers/yaml_equivalent'
4
- require 'mocha/inspect'
5
-
6
- class YamlEquivalentTest < Mocha::TestCase
7
-
8
- include Mocha::ParameterMatchers
9
-
10
- def test_should_match_parameter_matching_yaml_representation_of_object
11
- matcher = yaml_equivalent([1, 2, 3])
12
- assert matcher.matches?(["--- \n- 1\n- 2\n- 3\n"])
13
- end
14
-
15
- def test_should_not_match_parameter_matching_yaml_representation_of_object
16
- matcher = yaml_equivalent([1, 2, 3])
17
- assert !matcher.matches?(["--- \n- 4\n- 5\n"])
18
- end
19
-
20
- def test_should_describe_matcher
21
- matcher = yaml_equivalent([1, 2, 3])
22
- assert_equal "yaml_equivalent([1, 2, 3])", matcher.mocha_inspect
23
- end
24
-
25
- end