mocha 1.6.0 → 1.7.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 (229) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +58 -0
  3. data/.rubocop_todo.yml +50 -0
  4. data/RELEASE.md +7 -0
  5. data/Rakefile +35 -28
  6. data/bin/build-matrix +17 -18
  7. data/lib/mocha/any_instance_method.rb +19 -25
  8. data/lib/mocha/api.rb +1 -5
  9. data/lib/mocha/argument_iterator.rb +4 -8
  10. data/lib/mocha/backtrace_filter.rb +1 -5
  11. data/lib/mocha/cardinality.rb +20 -27
  12. data/lib/mocha/central.rb +7 -15
  13. data/lib/mocha/change_state_side_effect.rb +0 -4
  14. data/lib/mocha/class_method.rb +31 -37
  15. data/lib/mocha/class_methods.rb +5 -13
  16. data/lib/mocha/configuration.rb +3 -9
  17. data/lib/mocha/debug.rb +3 -2
  18. data/lib/mocha/deprecation.rb +4 -11
  19. data/lib/mocha/detection/mini_test.rb +0 -2
  20. data/lib/mocha/detection/test_unit.rb +4 -4
  21. data/lib/mocha/error_with_filtered_backtrace.rb +0 -4
  22. data/lib/mocha/exception_raiser.rb +2 -5
  23. data/lib/mocha/expectation.rb +15 -18
  24. data/lib/mocha/expectation_error.rb +2 -0
  25. data/lib/mocha/expectation_error_factory.rb +0 -1
  26. data/lib/mocha/expectation_list.rb +2 -6
  27. data/lib/mocha/hooks.rb +0 -1
  28. data/lib/mocha/in_state_ordering_constraint.rb +0 -4
  29. data/lib/mocha/inspect.rb +3 -5
  30. data/lib/mocha/instance_method.rb +0 -2
  31. data/lib/mocha/integration.rb +3 -4
  32. data/lib/mocha/integration/mini_test/adapter.rb +2 -4
  33. data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
  34. data/lib/mocha/integration/mini_test/nothing.rb +4 -4
  35. data/lib/mocha/integration/mini_test/version_13.rb +3 -1
  36. data/lib/mocha/integration/mini_test/version_140.rb +3 -1
  37. data/lib/mocha/integration/mini_test/version_141.rb +3 -1
  38. data/lib/mocha/integration/mini_test/version_142_to_172.rb +3 -1
  39. data/lib/mocha/integration/mini_test/version_200.rb +3 -1
  40. data/lib/mocha/integration/mini_test/version_201_to_222.rb +3 -1
  41. data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +3 -1
  42. data/lib/mocha/integration/mini_test/version_2112_to_320.rb +3 -1
  43. data/lib/mocha/integration/mini_test/version_230_to_2101.rb +3 -1
  44. data/lib/mocha/integration/monkey_patcher.rb +5 -7
  45. data/lib/mocha/integration/test_unit/adapter.rb +5 -6
  46. data/lib/mocha/integration/test_unit/gem_version_200.rb +4 -2
  47. data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +4 -2
  48. data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +4 -2
  49. data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +4 -2
  50. data/lib/mocha/integration/test_unit/nothing.rb +4 -4
  51. data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +3 -1
  52. data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +3 -1
  53. data/lib/mocha/is_a.rb +0 -2
  54. data/lib/mocha/logger.rb +0 -4
  55. data/lib/mocha/method_matcher.rb +1 -5
  56. data/lib/mocha/minitest.rb +1 -1
  57. data/lib/mocha/mock.rb +25 -30
  58. data/lib/mocha/mockery.rb +27 -43
  59. data/lib/mocha/module_method.rb +0 -2
  60. data/lib/mocha/module_methods.rb +0 -4
  61. data/lib/mocha/multiple_yields.rb +0 -5
  62. data/lib/mocha/names.rb +1 -11
  63. data/lib/mocha/no_yields.rb +1 -7
  64. data/lib/mocha/not_initialized_error.rb +0 -2
  65. data/lib/mocha/object_methods.rb +10 -14
  66. data/lib/mocha/parameter_matchers.rb +0 -2
  67. data/lib/mocha/parameter_matchers/all_of.rb +1 -7
  68. data/lib/mocha/parameter_matchers/any_of.rb +1 -7
  69. data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
  70. data/lib/mocha/parameter_matchers/anything.rb +2 -8
  71. data/lib/mocha/parameter_matchers/base.rb +6 -12
  72. data/lib/mocha/parameter_matchers/equals.rb +0 -6
  73. data/lib/mocha/parameter_matchers/equivalent_uri.rb +6 -6
  74. data/lib/mocha/parameter_matchers/has_entries.rb +2 -6
  75. data/lib/mocha/parameter_matchers/has_entry.rb +8 -11
  76. data/lib/mocha/parameter_matchers/has_key.rb +2 -6
  77. data/lib/mocha/parameter_matchers/has_value.rb +2 -6
  78. data/lib/mocha/parameter_matchers/includes.rb +2 -6
  79. data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
  80. data/lib/mocha/parameter_matchers/is_a.rb +2 -6
  81. data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
  82. data/lib/mocha/parameter_matchers/not.rb +2 -6
  83. data/lib/mocha/parameter_matchers/object.rb +0 -2
  84. data/lib/mocha/parameter_matchers/optionally.rb +4 -10
  85. data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
  86. data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
  87. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
  88. data/lib/mocha/parameters_matcher.rb +6 -9
  89. data/lib/mocha/pretty_parameters.rb +0 -4
  90. data/lib/mocha/receivers.rb +6 -12
  91. data/lib/mocha/return_values.rb +3 -7
  92. data/lib/mocha/sequence.rb +4 -9
  93. data/lib/mocha/single_return_value.rb +0 -4
  94. data/lib/mocha/single_yield.rb +0 -5
  95. data/lib/mocha/state_machine.rb +6 -10
  96. data/lib/mocha/stubbing_error.rb +0 -2
  97. data/lib/mocha/test_unit.rb +1 -1
  98. data/lib/mocha/thrower.rb +2 -5
  99. data/lib/mocha/unexpected_invocation.rb +3 -5
  100. data/lib/mocha/version.rb +1 -1
  101. data/lib/mocha/yield_parameters.rb +3 -7
  102. data/mocha.gemspec +34 -58
  103. data/test/acceptance/acceptance_test_helper.rb +0 -4
  104. data/test/acceptance/bug_18914_test.rb +7 -12
  105. data/test/acceptance/bug_21465_test.rb +0 -2
  106. data/test/acceptance/bug_21563_test.rb +0 -2
  107. data/test/acceptance/exception_rescue_test.rb +7 -8
  108. data/test/acceptance/expectations_on_multiple_methods_test.rb +2 -1
  109. data/test/acceptance/expected_invocation_count_test.rb +27 -29
  110. data/test/acceptance/failure_messages_test.rb +3 -5
  111. data/test/acceptance/issue_272_test.rb +0 -1
  112. data/test/acceptance/issue_65_test.rb +15 -13
  113. data/test/acceptance/issue_70_test.rb +0 -1
  114. data/test/acceptance/mocha_example_test.rb +5 -6
  115. data/test/acceptance/mocha_test_result_test.rb +7 -7
  116. data/test/acceptance/mock_test.rb +2 -4
  117. data/test/acceptance/mock_with_initializer_block_test.rb +0 -2
  118. data/test/acceptance/mocked_methods_dispatch_test.rb +0 -2
  119. data/test/acceptance/multiple_expectations_failure_message_test.rb +16 -17
  120. data/test/acceptance/optional_parameters_test.rb +0 -2
  121. data/test/acceptance/parameter_matcher_test.rb +2 -3
  122. data/test/acceptance/partial_mocks_test.rb +4 -6
  123. data/test/acceptance/prepend_test.rb +14 -16
  124. data/test/acceptance/prevent_use_of_mocha_outside_test_test.rb +0 -2
  125. data/test/acceptance/raise_exception_test.rb +2 -4
  126. data/test/acceptance/return_value_test.rb +0 -2
  127. data/test/acceptance/sequence_test.rb +9 -11
  128. data/test/acceptance/states_test.rb +6 -4
  129. data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +5 -4
  130. data/test/acceptance/stub_any_instance_method_test.rb +19 -17
  131. data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +8 -8
  132. data/test/acceptance/stub_class_method_defined_on_class_test.rb +2 -1
  133. data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -1
  134. data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +7 -4
  135. data/test/acceptance/stub_everything_test.rb +1 -3
  136. data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +6 -7
  137. data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -1
  138. data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -1
  139. data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -1
  140. data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -1
  141. data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +2 -1
  142. data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -2
  143. data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -1
  144. data/test/acceptance/stub_module_method_test.rb +13 -13
  145. data/test/acceptance/stub_test.rb +1 -3
  146. data/test/acceptance/stubba_example_test.rb +6 -14
  147. data/test/acceptance/stubba_test_result_test.rb +5 -8
  148. data/test/acceptance/stubbing_error_backtrace_test.rb +2 -2
  149. data/test/acceptance/stubbing_frozen_object_test.rb +2 -1
  150. data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +12 -7
  151. data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -2
  152. data/test/acceptance/stubbing_nil_test.rb +4 -5
  153. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +1 -3
  154. data/test/acceptance/stubbing_non_existent_class_method_test.rb +3 -3
  155. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +1 -3
  156. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -2
  157. data/test/acceptance/stubbing_non_public_class_method_test.rb +3 -3
  158. data/test/acceptance/stubbing_non_public_instance_method_test.rb +1 -3
  159. data/test/acceptance/stubbing_on_non_mock_object_test.rb +4 -10
  160. data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +3 -4
  161. data/test/acceptance/throw_test.rb +0 -2
  162. data/test/acceptance/unexpected_invocation_test.rb +2 -3
  163. data/test/acceptance/unstubbing_test.rb +41 -14
  164. data/test/deprecation_disabler.rb +0 -1
  165. data/test/execution_point.rb +2 -4
  166. data/test/integration/mini_test_test.rb +2 -2
  167. data/test/integration/shared_tests.rb +24 -22
  168. data/test/integration/test_unit_test.rb +2 -2
  169. data/test/method_definer.rb +1 -3
  170. data/test/mini_test_result.rb +17 -11
  171. data/test/minitest_result.rb +0 -1
  172. data/test/simple_counter.rb +0 -2
  173. data/test/test_helper.rb +13 -5
  174. data/test/test_runner.rb +2 -4
  175. data/test/test_unit_result.rb +4 -2
  176. data/test/unit/any_instance_method_test.rb +31 -17
  177. data/test/unit/array_inspect_test.rb +2 -4
  178. data/test/unit/backtrace_filter_test.rb +3 -5
  179. data/test/unit/cardinality_test.rb +0 -2
  180. data/test/unit/central_test.rb +26 -27
  181. data/test/unit/change_state_side_effect_test.rb +0 -4
  182. data/test/unit/class_method_test.rb +59 -34
  183. data/test/unit/class_methods_test.rb +9 -11
  184. data/test/unit/configuration_test.rb +1 -2
  185. data/test/unit/date_time_inspect_test.rb +1 -3
  186. data/test/unit/exception_raiser_test.rb +0 -2
  187. data/test/unit/expectation_list_test.rb +0 -2
  188. data/test/unit/expectation_test.rb +41 -46
  189. data/test/unit/hash_inspect_test.rb +3 -5
  190. data/test/unit/hooks_test.rb +9 -4
  191. data/test/unit/in_state_ordering_constraint_test.rb +0 -4
  192. data/test/unit/method_matcher_test.rb +1 -3
  193. data/test/unit/mock_test.rb +35 -22
  194. data/test/unit/mockery_test.rb +28 -26
  195. data/test/unit/module_methods_test.rb +0 -2
  196. data/test/unit/multiple_yields_test.rb +0 -2
  197. data/test/unit/no_yields_test.rb +0 -2
  198. data/test/unit/object_inspect_test.rb +16 -7
  199. data/test/unit/object_methods_test.rb +6 -8
  200. data/test/unit/parameter_matchers/all_of_test.rb +0 -2
  201. data/test/unit/parameter_matchers/any_of_test.rb +0 -2
  202. data/test/unit/parameter_matchers/anything_test.rb +2 -4
  203. data/test/unit/parameter_matchers/equals_test.rb +1 -3
  204. data/test/unit/parameter_matchers/equivalent_uri_test.rb +0 -1
  205. data/test/unit/parameter_matchers/has_entries_test.rb +2 -2
  206. data/test/unit/parameter_matchers/has_entry_test.rb +13 -14
  207. data/test/unit/parameter_matchers/has_key_test.rb +0 -1
  208. data/test/unit/parameter_matchers/has_value_test.rb +0 -2
  209. data/test/unit/parameter_matchers/includes_test.rb +8 -9
  210. data/test/unit/parameter_matchers/instance_of_test.rb +1 -3
  211. data/test/unit/parameter_matchers/is_a_test.rb +1 -3
  212. data/test/unit/parameter_matchers/kind_of_test.rb +1 -3
  213. data/test/unit/parameter_matchers/not_test.rb +0 -2
  214. data/test/unit/parameter_matchers/regexp_matches_test.rb +1 -2
  215. data/test/unit/parameter_matchers/responds_with_test.rb +9 -3
  216. data/test/unit/parameter_matchers/stub_matcher.rb +0 -4
  217. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +1 -3
  218. data/test/unit/parameters_matcher_test.rb +2 -4
  219. data/test/unit/receivers_test.rb +8 -6
  220. data/test/unit/return_values_test.rb +3 -5
  221. data/test/unit/sequence_test.rb +1 -5
  222. data/test/unit/single_return_value_test.rb +0 -2
  223. data/test/unit/single_yield_test.rb +0 -2
  224. data/test/unit/state_machine_test.rb +1 -3
  225. data/test/unit/string_inspect_test.rb +2 -4
  226. data/test/unit/thrower_test.rb +0 -2
  227. data/test/unit/yield_parameters_test.rb +0 -2
  228. data/yard-templates/default/layout/html/setup.rb +2 -3
  229. metadata +22 -6
@@ -1,9 +1,7 @@
1
1
  require 'mocha/parameter_matchers/base'
2
2
 
3
3
  module Mocha
4
-
5
4
  module ParameterMatchers
6
-
7
5
  # Matches any object.
8
6
  #
9
7
  # @return [Anything] parameter matcher.
@@ -23,20 +21,16 @@ module Mocha
23
21
 
24
22
  # Parameter matcher which always matches a single parameter.
25
23
  class Anything < Base
26
-
27
24
  # @private
28
25
  def matches?(available_parameters)
29
26
  available_parameters.shift
30
- return true
27
+ true
31
28
  end
32
29
 
33
30
  # @private
34
31
  def mocha_inspect
35
- "anything"
32
+ 'anything'
36
33
  end
37
-
38
34
  end
39
-
40
35
  end
41
-
42
36
  end
@@ -1,10 +1,7 @@
1
1
  module Mocha
2
-
3
2
  module ParameterMatchers
4
-
5
3
  # @abstract Subclass and implement +#matches?+ and +#mocha_inspect+ to define a custom matcher. Also add a suitably named instance method to {ParameterMatchers} to build an instance of the new matcher c.f. {#equals}.
6
4
  class Base
7
-
8
5
  # @private
9
6
  def to_matcher
10
7
  self
@@ -16,7 +13,7 @@ module Mocha
16
13
  #
17
14
  # This shorthand will not work with an implicit equals match. Instead, an explicit {Equals} matcher should be used.
18
15
  #
19
- # @param [Base] matcher parameter matcher.
16
+ # @param [Base] other parameter matcher.
20
17
  # @return [AllOf] parameter matcher.
21
18
  #
22
19
  # @see Expectation#with
@@ -30,8 +27,8 @@ module Mocha
30
27
  #
31
28
  # object.expects(:run).with(has_key(:foo) & has_key(:bar))
32
29
  # object.run(:foo => 'foovalue', :bar => 'barvalue)
33
- def &(matcher)
34
- AllOf.new(self, matcher)
30
+ def &(other)
31
+ AllOf.new(self, other)
35
32
  end
36
33
 
37
34
  # A shorthand way of combining two matchers when at least one must match.
@@ -40,7 +37,7 @@ module Mocha
40
37
  #
41
38
  # This shorthand will not work with an implicit equals match. Instead, an explicit {Equals} matcher should be used.
42
39
  #
43
- # @param [Base] matcher parameter matcher.
40
+ # @param [Base] other parameter matcher.
44
41
  # @return [AnyOf] parameter matcher.
45
42
  #
46
43
  # @see Expectation#with
@@ -60,12 +57,9 @@ module Mocha
60
57
  # object.run(1) # passes
61
58
  # object.run(2) # passes
62
59
  # object.run(3) # fails
63
- def |(matcher)
64
- AnyOf.new(self, matcher)
60
+ def |(other)
61
+ AnyOf.new(self, other)
65
62
  end
66
-
67
63
  end
68
-
69
64
  end
70
-
71
65
  end
@@ -1,9 +1,7 @@
1
1
  require 'mocha/parameter_matchers/base'
2
2
 
3
3
  module Mocha
4
-
5
4
  module ParameterMatchers
6
-
7
5
  # Matches any +Object+ equalling +value+.
8
6
  #
9
7
  # @param [Object] value expected value.
@@ -29,7 +27,6 @@ module Mocha
29
27
 
30
28
  # Parameter matcher which matches when actual parameter equals expected value.
31
29
  class Equals < Base
32
-
33
30
  # @private
34
31
  def initialize(value)
35
32
  @value = value
@@ -45,9 +42,6 @@ module Mocha
45
42
  def mocha_inspect
46
43
  @value.mocha_inspect
47
44
  end
48
-
49
45
  end
50
-
51
46
  end
52
-
53
47
  end
@@ -5,7 +5,6 @@ require 'cgi'
5
5
 
6
6
  module Mocha
7
7
  module ParameterMatchers
8
-
9
8
  # Matches a URI without regard to the ordering of parameters in the query string.
10
9
  #
11
10
  # @param [String] uri URI to match.
@@ -29,15 +28,16 @@ module Mocha
29
28
  end
30
29
 
31
30
  # @deprecated Use {#equivalent_uri} instead.
31
+ # rubocop:disable Naming/PredicateName
32
32
  def has_equivalent_query_string(uri)
33
- Mocha::Deprecation.warning("`has_equivalent_query_string` is deprecated. Please use `equivalent_uri` instead.")
33
+ Mocha::Deprecation.warning('`has_equivalent_query_string` is deprecated. Please use `equivalent_uri` instead.')
34
34
 
35
35
  equivalent_uri(uri)
36
36
  end
37
+ # rubocop:enable Naming/PredicateName
37
38
 
38
39
  # Parameter matcher which matches URIs with equivalent query strings.
39
40
  class EquivalentUri < Base
40
-
41
41
  # @private
42
42
  def initialize(uri)
43
43
  @uri = URI.parse(uri)
@@ -55,13 +55,13 @@ module Mocha
55
55
  "equivalent_uri(#{@uri.mocha_inspect})"
56
56
  end
57
57
 
58
- private
58
+ private
59
+
59
60
  # @private
60
61
  def explode(uri)
61
62
  query_hash = CGI.parse(uri.query || '')
62
- URI::Generic::COMPONENT.inject({}){ |h, k| h.merge(k => uri.__send__(k)) }.merge(:query => query_hash)
63
+ URI::Generic::COMPONENT.inject({}) { |h, k| h.merge(k => uri.__send__(k)) }.merge(:query => query_hash)
63
64
  end
64
-
65
65
  end
66
66
  end
67
67
  end
@@ -3,9 +3,7 @@ require 'mocha/parameter_matchers/all_of'
3
3
  require 'mocha/parameter_matchers/has_entry'
4
4
 
5
5
  module Mocha
6
-
7
6
  module ParameterMatchers
8
-
9
7
  # Matches +Hash+ containing all +entries+.
10
8
  #
11
9
  # @param [Hash] entries expected +Hash+ entries.
@@ -24,13 +22,14 @@ module Mocha
24
22
  # object.expects(:method_1).with(has_entries('key_1' => 1, 'key_2' => 2))
25
23
  # object.method_1('key_1' => 1, 'key_2' => 99)
26
24
  # # error raised, because method_1 was not called with Hash containing entries: 'key_1' => 1, 'key_2' => 2
25
+ # rubocop:disable Naming/PredicateName
27
26
  def has_entries(entries)
28
27
  HasEntries.new(entries)
29
28
  end
29
+ # rubocop:enable Naming/PredicateName
30
30
 
31
31
  # Parameter matcher which matches when actual parameter contains all expected +Hash+ entries.
32
32
  class HasEntries < Base
33
-
34
33
  # @private
35
34
  def initialize(entries)
36
35
  @entries = entries
@@ -47,9 +46,6 @@ module Mocha
47
46
  def mocha_inspect
48
47
  "has_entries(#{@entries.mocha_inspect})"
49
48
  end
50
-
51
49
  end
52
-
53
50
  end
54
-
55
51
  end
@@ -1,9 +1,7 @@
1
1
  require 'mocha/parameter_matchers/base'
2
2
 
3
3
  module Mocha
4
-
5
4
  module ParameterMatchers
6
-
7
5
  # Matches +Hash+ containing entry with +key+ and +value+.
8
6
  #
9
7
  # @overload def has_entry(key, value)
@@ -41,6 +39,7 @@ module Mocha
41
39
  # object.expects(:method_1).with(has_entry('key_1' => 1))
42
40
  # object.method_1('key_1' => 2, 'key_2' => 1)
43
41
  # # error raised, because method_1 was not called with Hash containing entry: 'key_1' => 1
42
+ # rubocop:disable Naming/PredicateName
44
43
  def has_entry(*options)
45
44
  case options.length
46
45
  when 1
@@ -48,29 +47,30 @@ module Mocha
48
47
  when Hash
49
48
  case options[0].length
50
49
  when 0
51
- raise ArgumentError.new("Argument has no entries.")
50
+ raise ArgumentError, 'Argument has no entries.'
52
51
  when 1
53
52
  key, value = options[0].first
54
53
  else
55
- raise ArgumentError.new("Argument has multiple entries. Use Mocha::ParameterMatchers#has_entries instead.")
54
+ raise ArgumentError, 'Argument has multiple entries. Use Mocha::ParameterMatchers#has_entries instead.'
56
55
  end
57
56
  else
58
- raise ArgumentError.new("Argument is not a Hash.")
57
+ raise ArgumentError, 'Argument is not a Hash.'
59
58
  end
60
59
  when 2
61
60
  key, value = options
62
61
  else
63
- raise ArgumentError.new("Too many arguments; use either a single argument (must be a Hash) or two arguments (a key and a value).")
62
+ raise ArgumentError, 'Too many arguments; use either a single argument (must be a Hash) or two arguments (a key and a value).'
64
63
  end
65
64
  HasEntry.new(key, value)
66
65
  end
66
+ # rubocop:enable Naming/PredicateName
67
67
 
68
68
  # Parameter matcher which matches when actual parameter contains expected +Hash+ entry.
69
69
  class HasEntry < Base
70
-
71
70
  # @private
72
71
  def initialize(key, value)
73
- @key, @value = key, value
72
+ @key = key
73
+ @value = value
74
74
  end
75
75
 
76
76
  # @private
@@ -85,9 +85,6 @@ module Mocha
85
85
  def mocha_inspect
86
86
  "has_entry(#{@key.mocha_inspect} => #{@value.mocha_inspect})"
87
87
  end
88
-
89
88
  end
90
-
91
89
  end
92
-
93
90
  end
@@ -1,9 +1,7 @@
1
1
  require 'mocha/parameter_matchers/base'
2
2
 
3
3
  module Mocha
4
-
5
4
  module ParameterMatchers
6
-
7
5
  # Matches +Hash+ containing +key+.
8
6
  #
9
7
  # @param [Object] key expected key.
@@ -22,13 +20,14 @@ module Mocha
22
20
  # object.expects(:method_1).with(has_key('key_1'))
23
21
  # object.method_1('key_2' => 2)
24
22
  # # error raised, because method_1 was not called with Hash containing key: 'key_1'
23
+ # rubocop:disable Naming/PredicateName
25
24
  def has_key(key)
26
25
  HasKey.new(key)
27
26
  end
27
+ # rubocop:enable Naming/PredicateName
28
28
 
29
29
  # Parameter matcher which matches when actual parameter contains +Hash+ entry with expected key.
30
30
  class HasKey < Base
31
-
32
31
  # @private
33
32
  def initialize(key)
34
33
  @key = key
@@ -45,9 +44,6 @@ module Mocha
45
44
  def mocha_inspect
46
45
  "has_key(#{@key.mocha_inspect})"
47
46
  end
48
-
49
47
  end
50
-
51
48
  end
52
-
53
49
  end
@@ -1,9 +1,7 @@
1
1
  require 'mocha/parameter_matchers/base'
2
2
 
3
3
  module Mocha
4
-
5
4
  module ParameterMatchers
6
-
7
5
  # Matches +Hash+ containing +value+.
8
6
  #
9
7
  # @param [Object] value expected value.
@@ -22,13 +20,14 @@ module Mocha
22
20
  # object.expects(:method_1).with(has_value(1))
23
21
  # object.method_1('key_2' => 2)
24
22
  # # error raised, because method_1 was not called with Hash containing value: 1
23
+ # rubocop:disable Naming/PredicateName
25
24
  def has_value(value)
26
25
  HasValue.new(value)
27
26
  end
27
+ # rubocop:enable Naming/PredicateName
28
28
 
29
29
  # Parameter matcher which matches when actual parameter contains +Hash+ entry with expected value.
30
30
  class HasValue < Base
31
-
32
31
  # @private
33
32
  def initialize(value)
34
33
  @value = value
@@ -45,9 +44,6 @@ module Mocha
45
44
  def mocha_inspect
46
45
  "has_value(#{@value.mocha_inspect})"
47
46
  end
48
-
49
47
  end
50
-
51
48
  end
52
-
53
49
  end
@@ -2,9 +2,7 @@ require 'mocha/parameter_matchers/all_of'
2
2
  require 'mocha/parameter_matchers/base'
3
3
 
4
4
  module Mocha
5
-
6
5
  module ParameterMatchers
7
-
8
6
  # Matches any object that responds with +true+ to +include?(item)+
9
7
  # for all items.
10
8
  #
@@ -68,7 +66,6 @@ module Mocha
68
66
 
69
67
  # Parameter matcher which matches when actual parameter includes expected values.
70
68
  class Includes < Base
71
-
72
69
  # @private
73
70
  def initialize(*items)
74
71
  @items = items
@@ -79,12 +76,14 @@ module Mocha
79
76
  parameter = available_parameters.shift
80
77
  return false unless parameter.respond_to?(:include?)
81
78
  if @items.size == 1
79
+ # rubocop:disable Style/GuardClause
82
80
  if parameter.respond_to?(:any?) && !parameter.is_a?(String)
83
81
  parameter = parameter.keys if parameter.is_a?(Hash)
84
82
  return parameter.any? { |p| @items.first.to_matcher.matches?([p]) }
85
83
  else
86
84
  return parameter.include?(@items.first)
87
85
  end
86
+ # rubocop:enable Style/GuardClause
88
87
  else
89
88
  includes_matchers = @items.map { |item| Includes.new(item) }
90
89
  AllOf.new(*includes_matchers).matches?([parameter])
@@ -96,9 +95,6 @@ module Mocha
96
95
  item_descriptions = @items.map(&:mocha_inspect)
97
96
  "includes(#{item_descriptions.join(', ')})"
98
97
  end
99
-
100
98
  end
101
-
102
99
  end
103
-
104
100
  end
@@ -1,9 +1,7 @@
1
1
  require 'mocha/parameter_matchers/base'
2
2
 
3
3
  module Mocha
4
-
5
4
  module ParameterMatchers
6
-
7
5
  # Matches any object that is an instance of +klass+
8
6
  #
9
7
  # @param [Class] klass expected class.
@@ -29,7 +27,6 @@ module Mocha
29
27
 
30
28
  # Parameter matcher which matches when actual parameter is an instance of the specified class.
31
29
  class InstanceOf < Base
32
-
33
30
  # @private
34
31
  def initialize(klass)
35
32
  @klass = klass
@@ -45,9 +42,6 @@ module Mocha
45
42
  def mocha_inspect
46
43
  "instance_of(#{@klass.mocha_inspect})"
47
44
  end
48
-
49
45
  end
50
-
51
46
  end
52
-
53
47
  end
@@ -1,9 +1,7 @@
1
1
  require 'mocha/parameter_matchers/base'
2
2
 
3
3
  module Mocha
4
-
5
4
  module ParameterMatchers
6
-
7
5
  # Matches any object that is a +klass+.
8
6
  #
9
7
  # @param [Class] klass expected class.
@@ -23,13 +21,14 @@ module Mocha
23
21
  # object.expects(:method_1).with(is_a(Integer))
24
22
  # object.method_1('string')
25
23
  # # error raised, because method_1 was not called with an Integer
24
+ # rubocop:disable Naming/PredicateName
26
25
  def is_a(klass)
27
26
  IsA.new(klass)
28
27
  end
28
+ # rubocop:enable Naming/PredicateName
29
29
 
30
30
  # Parameter matcher which matches when actual parameter is a specific class.
31
31
  class IsA < Base
32
-
33
32
  # @private
34
33
  def initialize(klass)
35
34
  @klass = klass
@@ -45,9 +44,6 @@ module Mocha
45
44
  def mocha_inspect
46
45
  "is_a(#{@klass.mocha_inspect})"
47
46
  end
48
-
49
47
  end
50
-
51
48
  end
52
-
53
49
  end
@@ -1,9 +1,7 @@
1
1
  require 'mocha/parameter_matchers/base'
2
2
 
3
3
  module Mocha
4
-
5
4
  module ParameterMatchers
6
-
7
5
  # Matches any +Object+ that is a kind of +klass+.
8
6
  #
9
7
  # @param [Class] klass expected class.
@@ -29,7 +27,6 @@ module Mocha
29
27
 
30
28
  # Parameter matcher which matches when actual parameter is a kind of specified class.
31
29
  class KindOf < Base
32
-
33
30
  # @private
34
31
  def initialize(klass)
35
32
  @klass = klass
@@ -38,16 +35,15 @@ module Mocha
38
35
  # @private
39
36
  def matches?(available_parameters)
40
37
  parameter = available_parameters.shift
38
+ # rubocop:disable Style/ClassCheck
41
39
  parameter.kind_of?(@klass)
40
+ # rubocop:enable Style/ClassCheck
42
41
  end
43
42
 
44
43
  # @private
45
44
  def mocha_inspect
46
45
  "kind_of(#{@klass.mocha_inspect})"
47
46
  end
48
-
49
47
  end
50
-
51
48
  end
52
-
53
49
  end