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 if +matcher+ does *not* match.
8
6
  #
9
7
  # @param [Base] matcher matcher whose logic to invert.
@@ -22,13 +20,14 @@ module Mocha
22
20
  # object.expects(:method_1).with(Not(includes(1)))
23
21
  # object.method_1([0, 1, 2, 3])
24
22
  # # error raised, because method_1 was not called with object not including 1
23
+ # rubocop:disable Naming/MethodName
25
24
  def Not(matcher)
26
25
  Not.new(matcher)
27
26
  end
27
+ # rubocop:enable Naming/MethodName
28
28
 
29
29
  # Parameter matcher which inverts the logic of the specified matcher using a logical NOT operation.
30
30
  class Not < Base
31
-
32
31
  # @private
33
32
  def initialize(matcher)
34
33
  @matcher = matcher
@@ -44,9 +43,6 @@ module Mocha
44
43
  def mocha_inspect
45
44
  "Not(#{@matcher.mocha_inspect})"
46
45
  end
47
-
48
46
  end
49
-
50
47
  end
51
-
52
48
  end
@@ -1,14 +1,12 @@
1
1
  require 'mocha/parameter_matchers/equals'
2
2
 
3
3
  module Mocha
4
-
5
4
  module ObjectMethods
6
5
  # @private
7
6
  def to_matcher
8
7
  Mocha::ParameterMatchers::Equals.new(self)
9
8
  end
10
9
  end
11
-
12
10
  end
13
11
 
14
12
  # @private
@@ -1,7 +1,5 @@
1
1
  module Mocha
2
-
3
2
  module ParameterMatchers
4
-
5
3
  # Matches optional parameters if available.
6
4
  #
7
5
  # @param [*Array<Base>] matchers matchers for optional parameters.
@@ -38,30 +36,26 @@ module Mocha
38
36
 
39
37
  # Parameter matcher which allows optional parameters to be specified.
40
38
  class Optionally < Base
41
-
42
39
  # @private
43
40
  def initialize(*parameters)
44
- @matchers = parameters.map { |parameter| parameter.to_matcher }
41
+ @matchers = parameters.map(&:to_matcher)
45
42
  end
46
43
 
47
44
  # @private
48
45
  def matches?(available_parameters)
49
46
  index = 0
50
- while (available_parameters.length > 0) && (index < @matchers.length) do
47
+ while !available_parameters.empty? && (index < @matchers.length)
51
48
  matcher = @matchers[index]
52
49
  return false unless matcher.matches?(available_parameters)
53
50
  index += 1
54
51
  end
55
- return true
52
+ true
56
53
  end
57
54
 
58
55
  # @private
59
56
  def mocha_inspect
60
- "optionally(#{@matchers.map { |matcher| matcher.mocha_inspect }.join(", ") })"
57
+ "optionally(#{@matchers.map(&:mocha_inspect).join(', ')})"
61
58
  end
62
-
63
59
  end
64
-
65
60
  end
66
-
67
61
  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 matches +regexp+.
8
6
  #
9
7
  # @param [Regexp] regexp regular expression to match.
@@ -29,7 +27,6 @@ module Mocha
29
27
 
30
28
  # Parameter matcher which matches if specified regular expression matches actual paramter.
31
29
  class RegexpMatches < Base
32
-
33
30
  # @private
34
31
  def initialize(regexp)
35
32
  @regexp = regexp
@@ -46,9 +43,6 @@ module Mocha
46
43
  def mocha_inspect
47
44
  "regexp_matches(#{@regexp.mocha_inspect})"
48
45
  end
49
-
50
46
  end
51
-
52
47
  end
53
-
54
48
  end
@@ -2,9 +2,7 @@ require 'mocha/parameter_matchers/base'
2
2
  require 'yaml'
3
3
 
4
4
  module Mocha
5
-
6
5
  module ParameterMatchers
7
-
8
6
  # Matches any object that responds to +message+ with +result+. To put it another way, it tests the quack, not the duck.
9
7
  #
10
8
  # @param [Symbol] message method to invoke.
@@ -30,25 +28,22 @@ module Mocha
30
28
 
31
29
  # Parameter matcher which matches if actual parameter returns expected result when specified method is invoked.
32
30
  class RespondsWith < Base
33
-
34
31
  # @private
35
32
  def initialize(message, result)
36
- @message, @result = message, result
33
+ @message = message
34
+ @result = result
37
35
  end
38
36
 
39
37
  # @private
40
38
  def matches?(available_parameters)
41
39
  parameter = available_parameters.shift
42
- @result.to_matcher.matches?( [parameter.__send__(@message)] )
40
+ @result.to_matcher.matches?([parameter.__send__(@message)])
43
41
  end
44
42
 
45
43
  # @private
46
44
  def mocha_inspect
47
45
  "responds_with(#{@message.mocha_inspect}, #{@result.mocha_inspect})"
48
46
  end
49
-
50
47
  end
51
-
52
48
  end
53
-
54
49
  end
@@ -2,9 +2,7 @@ require 'mocha/parameter_matchers/base'
2
2
  require 'yaml'
3
3
 
4
4
  module Mocha
5
-
6
5
  module ParameterMatchers
7
-
8
6
  # Matches any YAML that represents the specified +object+
9
7
  #
10
8
  # @param [Object] object object whose YAML to compare.
@@ -29,7 +27,6 @@ module Mocha
29
27
 
30
28
  # Parameter matcher which matches if actual parameter is YAML equivalent of specified object.
31
29
  class YamlEquivalent < Base
32
-
33
30
  # @private
34
31
  def initialize(object)
35
32
  @object = object
@@ -38,16 +35,15 @@ module Mocha
38
35
  # @private
39
36
  def matches?(available_parameters)
40
37
  parameter = available_parameters.shift
38
+ # rubocop:disable Security/YAMLLoad
41
39
  @object == YAML.load(parameter)
40
+ # rubocop:enable Security/YAMLLoad
42
41
  end
43
42
 
44
43
  # @private
45
44
  def mocha_inspect
46
45
  "yaml_equivalent(#{@object.mocha_inspect})"
47
46
  end
48
-
49
47
  end
50
-
51
48
  end
52
-
53
49
  end
@@ -2,23 +2,22 @@ require 'mocha/inspect'
2
2
  require 'mocha/parameter_matchers'
3
3
 
4
4
  module Mocha
5
-
6
5
  class ParametersMatcher
7
-
8
6
  def initialize(expected_parameters = [ParameterMatchers::AnyParameters.new], &matching_block)
9
- @expected_parameters, @matching_block = expected_parameters, matching_block
7
+ @expected_parameters = expected_parameters
8
+ @matching_block = matching_block
10
9
  end
11
10
 
12
11
  def match?(actual_parameters = [])
13
12
  if @matching_block
14
- return @matching_block.call(*actual_parameters)
13
+ @matching_block.call(*actual_parameters)
15
14
  else
16
- return parameters_match?(actual_parameters)
15
+ parameters_match?(actual_parameters)
17
16
  end
18
17
  end
19
18
 
20
19
  def parameters_match?(actual_parameters)
21
- matchers.all? { |matcher| matcher.matches?(actual_parameters) } && (actual_parameters.length == 0)
20
+ matchers.all? { |matcher| matcher.matches?(actual_parameters) } && actual_parameters.empty?
22
21
  end
23
22
 
24
23
  def mocha_inspect
@@ -29,9 +28,7 @@ module Mocha
29
28
  end
30
29
 
31
30
  def matchers
32
- @expected_parameters.map { |parameter| parameter.to_matcher }
31
+ @expected_parameters.map(&:to_matcher)
33
32
  end
34
-
35
33
  end
36
-
37
34
  end
@@ -1,9 +1,7 @@
1
1
  require 'mocha/inspect'
2
2
 
3
3
  module Mocha
4
-
5
4
  class PrettyParameters
6
-
7
5
  def initialize(params)
8
6
  @params = params
9
7
  @params_string = params.mocha_inspect
@@ -22,7 +20,5 @@ module Mocha
22
20
  def remove_outer_hash_braces!
23
21
  @params_string = @params_string.gsub(/^\{|\}$/, '') if @params.length == 1
24
22
  end
25
-
26
23
  end
27
-
28
24
  end
@@ -1,43 +1,39 @@
1
1
  module Mocha
2
-
3
2
  class ObjectReceiver
4
-
5
3
  def initialize(object)
6
4
  @object = object
7
5
  end
8
6
 
9
7
  def mocks
10
- object, mocks = @object, []
11
- while object do
8
+ object = @object
9
+ mocks = []
10
+ while object
12
11
  mocha = object.mocha(false)
13
12
  mocks << mocha if mocha
14
13
  object = object.is_a?(Class) ? object.superclass : nil
15
14
  end
16
15
  mocks
17
16
  end
18
-
19
17
  end
20
18
 
21
19
  class AnyInstanceReceiver
22
-
23
20
  def initialize(klass)
24
21
  @klass = klass
25
22
  end
26
23
 
27
24
  def mocks
28
- klass, mocks = @klass, []
29
- while klass do
25
+ klass = @klass
26
+ mocks = []
27
+ while klass
30
28
  mocha = klass.any_instance.mocha(false)
31
29
  mocks << mocha if mocha
32
30
  klass = klass.superclass
33
31
  end
34
32
  mocks
35
33
  end
36
-
37
34
  end
38
35
 
39
36
  class DefaultReceiver
40
-
41
37
  def initialize(mock)
42
38
  @mock = mock
43
39
  end
@@ -45,7 +41,5 @@ module Mocha
45
41
  def mocks
46
42
  [@mock]
47
43
  end
48
-
49
44
  end
50
-
51
45
  end
@@ -1,9 +1,7 @@
1
1
  require 'mocha/single_return_value'
2
2
 
3
3
  module Mocha
4
-
5
4
  class ReturnValues
6
-
7
5
  def self.build(*values)
8
6
  new(*values.map { |value| SingleReturnValue.new(value) })
9
7
  end
@@ -16,16 +14,14 @@ module Mocha
16
14
 
17
15
  def next
18
16
  case @values.length
19
- when 0 then nil
20
- when 1 then @values.first.evaluate
21
- else @values.shift.evaluate
17
+ when 0 then nil
18
+ when 1 then @values.first.evaluate
19
+ else @values.shift.evaluate
22
20
  end
23
21
  end
24
22
 
25
23
  def +(other)
26
24
  self.class.new(*(@values + other.values))
27
25
  end
28
-
29
26
  end
30
-
31
27
  end
@@ -1,16 +1,14 @@
1
1
  module Mocha
2
-
3
2
  # Used to constrain the order in which expectations can occur.
4
3
  #
5
4
  # @see API#sequence
6
5
  # @see Expectation#in_sequence
7
6
  class Sequence
8
-
9
7
  # @private
10
8
  class InSequenceOrderingConstraint
11
-
12
9
  def initialize(sequence, index)
13
- @sequence, @index = sequence, index
10
+ @sequence = sequence
11
+ @index = index
14
12
  end
15
13
 
16
14
  def allows_invocation_now?
@@ -20,7 +18,6 @@ module Mocha
20
18
  def mocha_inspect
21
19
  "in sequence #{@sequence.mocha_inspect}"
22
20
  end
23
-
24
21
  end
25
22
 
26
23
  # @private
@@ -38,14 +35,12 @@ module Mocha
38
35
 
39
36
  # @private
40
37
  def satisfied_to_index?(index)
41
- @expectations[0...index].all? { |expectation| expectation.satisfied? }
38
+ @expectations[0...index].all?(&:satisfied?)
42
39
  end
43
40
 
44
41
  # @private
45
42
  def mocha_inspect
46
- "#{@name.mocha_inspect}"
43
+ @name.mocha_inspect.to_s
47
44
  end
48
-
49
45
  end
50
-
51
46
  end
@@ -1,9 +1,7 @@
1
1
  require 'mocha/is_a'
2
2
 
3
3
  module Mocha
4
-
5
4
  class SingleReturnValue
6
-
7
5
  def initialize(value)
8
6
  @value = value
9
7
  end
@@ -11,7 +9,5 @@ module Mocha
11
9
  def evaluate
12
10
  @value
13
11
  end
14
-
15
12
  end
16
-
17
13
  end
@@ -1,7 +1,5 @@
1
1
  module Mocha
2
-
3
2
  class SingleYield
4
-
5
3
  attr_reader :parameters
6
4
 
7
5
  def initialize(*parameters)
@@ -11,8 +9,5 @@ module Mocha
11
9
  def each
12
10
  yield(@parameters)
13
11
  end
14
-
15
12
  end
16
-
17
13
  end
18
-
@@ -1,15 +1,13 @@
1
1
  module Mocha
2
-
3
2
  # A state machine that is used to constrain the order of invocations.
4
3
  # An invocation can be constrained to occur when a state {#is}, or {#is_not}, active.
5
4
  class StateMachine
6
-
7
5
  # Provides a mechanism to change the state of a {StateMachine} at some point in the future.
8
6
  class State
9
-
10
7
  # @private
11
8
  def initialize(state_machine, state)
12
- @state_machine, @state = state_machine, state
9
+ @state_machine = state_machine
10
+ @state = state
13
11
  end
14
12
 
15
13
  # @private
@@ -26,15 +24,14 @@ module Mocha
26
24
  def mocha_inspect
27
25
  "#{@state_machine.name} is #{@state.mocha_inspect}"
28
26
  end
29
-
30
27
  end
31
28
 
32
29
  # Provides the ability to determine whether a {StateMachine} is in a specified state at some point in the future.
33
30
  class StatePredicate
34
-
35
31
  # @private
36
32
  def initialize(state_machine, state)
37
- @state_machine, @state = state_machine, state
33
+ @state_machine = state_machine
34
+ @state = state
38
35
  end
39
36
 
40
37
  # @private
@@ -46,7 +43,6 @@ module Mocha
46
43
  def mocha_inspect
47
44
  "#{@state_machine.name} is not #{@state.mocha_inspect}"
48
45
  end
49
-
50
46
  end
51
47
 
52
48
  # @private
@@ -88,9 +84,11 @@ module Mocha
88
84
  end
89
85
 
90
86
  # Provides a mechanism to determine whether the {StateMachine} is not in the state specified by +state_name+ at some point in the future.
87
+ # rubocop:disable Naming/PredicateName
91
88
  def is_not(state_name)
92
89
  StatePredicate.new(self, state_name)
93
90
  end
91
+ # rubocop:enable Naming/PredicateName
94
92
 
95
93
  # @private
96
94
  def mocha_inspect
@@ -100,7 +98,5 @@ module Mocha
100
98
  "#{@name} has no current state"
101
99
  end
102
100
  end
103
-
104
101
  end
105
-
106
102
  end