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.
- checksums.yaml +5 -5
- data/.rubocop.yml +58 -0
- data/.rubocop_todo.yml +50 -0
- data/RELEASE.md +7 -0
- data/Rakefile +35 -28
- data/bin/build-matrix +17 -18
- data/lib/mocha/any_instance_method.rb +19 -25
- data/lib/mocha/api.rb +1 -5
- data/lib/mocha/argument_iterator.rb +4 -8
- data/lib/mocha/backtrace_filter.rb +1 -5
- data/lib/mocha/cardinality.rb +20 -27
- data/lib/mocha/central.rb +7 -15
- data/lib/mocha/change_state_side_effect.rb +0 -4
- data/lib/mocha/class_method.rb +31 -37
- data/lib/mocha/class_methods.rb +5 -13
- data/lib/mocha/configuration.rb +3 -9
- data/lib/mocha/debug.rb +3 -2
- data/lib/mocha/deprecation.rb +4 -11
- data/lib/mocha/detection/mini_test.rb +0 -2
- data/lib/mocha/detection/test_unit.rb +4 -4
- data/lib/mocha/error_with_filtered_backtrace.rb +0 -4
- data/lib/mocha/exception_raiser.rb +2 -5
- data/lib/mocha/expectation.rb +15 -18
- data/lib/mocha/expectation_error.rb +2 -0
- data/lib/mocha/expectation_error_factory.rb +0 -1
- data/lib/mocha/expectation_list.rb +2 -6
- data/lib/mocha/hooks.rb +0 -1
- data/lib/mocha/in_state_ordering_constraint.rb +0 -4
- data/lib/mocha/inspect.rb +3 -5
- data/lib/mocha/instance_method.rb +0 -2
- data/lib/mocha/integration.rb +3 -4
- data/lib/mocha/integration/mini_test/adapter.rb +2 -4
- data/lib/mocha/integration/mini_test/exception_translation.rb +1 -1
- data/lib/mocha/integration/mini_test/nothing.rb +4 -4
- data/lib/mocha/integration/mini_test/version_13.rb +3 -1
- data/lib/mocha/integration/mini_test/version_140.rb +3 -1
- data/lib/mocha/integration/mini_test/version_141.rb +3 -1
- data/lib/mocha/integration/mini_test/version_142_to_172.rb +3 -1
- data/lib/mocha/integration/mini_test/version_200.rb +3 -1
- data/lib/mocha/integration/mini_test/version_201_to_222.rb +3 -1
- data/lib/mocha/integration/mini_test/version_2110_to_2111.rb +3 -1
- data/lib/mocha/integration/mini_test/version_2112_to_320.rb +3 -1
- data/lib/mocha/integration/mini_test/version_230_to_2101.rb +3 -1
- data/lib/mocha/integration/monkey_patcher.rb +5 -7
- data/lib/mocha/integration/test_unit/adapter.rb +5 -6
- data/lib/mocha/integration/test_unit/gem_version_200.rb +4 -2
- data/lib/mocha/integration/test_unit/gem_version_201_to_202.rb +4 -2
- data/lib/mocha/integration/test_unit/gem_version_203_to_220.rb +4 -2
- data/lib/mocha/integration/test_unit/gem_version_230_to_250.rb +4 -2
- data/lib/mocha/integration/test_unit/nothing.rb +4 -4
- data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +3 -1
- data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +3 -1
- data/lib/mocha/is_a.rb +0 -2
- data/lib/mocha/logger.rb +0 -4
- data/lib/mocha/method_matcher.rb +1 -5
- data/lib/mocha/minitest.rb +1 -1
- data/lib/mocha/mock.rb +25 -30
- data/lib/mocha/mockery.rb +27 -43
- data/lib/mocha/module_method.rb +0 -2
- data/lib/mocha/module_methods.rb +0 -4
- data/lib/mocha/multiple_yields.rb +0 -5
- data/lib/mocha/names.rb +1 -11
- data/lib/mocha/no_yields.rb +1 -7
- data/lib/mocha/not_initialized_error.rb +0 -2
- data/lib/mocha/object_methods.rb +10 -14
- data/lib/mocha/parameter_matchers.rb +0 -2
- data/lib/mocha/parameter_matchers/all_of.rb +1 -7
- data/lib/mocha/parameter_matchers/any_of.rb +1 -7
- data/lib/mocha/parameter_matchers/any_parameters.rb +3 -9
- data/lib/mocha/parameter_matchers/anything.rb +2 -8
- data/lib/mocha/parameter_matchers/base.rb +6 -12
- data/lib/mocha/parameter_matchers/equals.rb +0 -6
- data/lib/mocha/parameter_matchers/equivalent_uri.rb +6 -6
- data/lib/mocha/parameter_matchers/has_entries.rb +2 -6
- data/lib/mocha/parameter_matchers/has_entry.rb +8 -11
- data/lib/mocha/parameter_matchers/has_key.rb +2 -6
- data/lib/mocha/parameter_matchers/has_value.rb +2 -6
- data/lib/mocha/parameter_matchers/includes.rb +2 -6
- data/lib/mocha/parameter_matchers/instance_of.rb +0 -6
- data/lib/mocha/parameter_matchers/is_a.rb +2 -6
- data/lib/mocha/parameter_matchers/kind_of.rb +2 -6
- data/lib/mocha/parameter_matchers/not.rb +2 -6
- data/lib/mocha/parameter_matchers/object.rb +0 -2
- data/lib/mocha/parameter_matchers/optionally.rb +4 -10
- data/lib/mocha/parameter_matchers/regexp_matches.rb +0 -6
- data/lib/mocha/parameter_matchers/responds_with.rb +3 -8
- data/lib/mocha/parameter_matchers/yaml_equivalent.rb +2 -6
- data/lib/mocha/parameters_matcher.rb +6 -9
- data/lib/mocha/pretty_parameters.rb +0 -4
- data/lib/mocha/receivers.rb +6 -12
- data/lib/mocha/return_values.rb +3 -7
- data/lib/mocha/sequence.rb +4 -9
- data/lib/mocha/single_return_value.rb +0 -4
- data/lib/mocha/single_yield.rb +0 -5
- data/lib/mocha/state_machine.rb +6 -10
- data/lib/mocha/stubbing_error.rb +0 -2
- data/lib/mocha/test_unit.rb +1 -1
- data/lib/mocha/thrower.rb +2 -5
- data/lib/mocha/unexpected_invocation.rb +3 -5
- data/lib/mocha/version.rb +1 -1
- data/lib/mocha/yield_parameters.rb +3 -7
- data/mocha.gemspec +34 -58
- data/test/acceptance/acceptance_test_helper.rb +0 -4
- data/test/acceptance/bug_18914_test.rb +7 -12
- data/test/acceptance/bug_21465_test.rb +0 -2
- data/test/acceptance/bug_21563_test.rb +0 -2
- data/test/acceptance/exception_rescue_test.rb +7 -8
- data/test/acceptance/expectations_on_multiple_methods_test.rb +2 -1
- data/test/acceptance/expected_invocation_count_test.rb +27 -29
- data/test/acceptance/failure_messages_test.rb +3 -5
- data/test/acceptance/issue_272_test.rb +0 -1
- data/test/acceptance/issue_65_test.rb +15 -13
- data/test/acceptance/issue_70_test.rb +0 -1
- data/test/acceptance/mocha_example_test.rb +5 -6
- data/test/acceptance/mocha_test_result_test.rb +7 -7
- data/test/acceptance/mock_test.rb +2 -4
- data/test/acceptance/mock_with_initializer_block_test.rb +0 -2
- data/test/acceptance/mocked_methods_dispatch_test.rb +0 -2
- data/test/acceptance/multiple_expectations_failure_message_test.rb +16 -17
- data/test/acceptance/optional_parameters_test.rb +0 -2
- data/test/acceptance/parameter_matcher_test.rb +2 -3
- data/test/acceptance/partial_mocks_test.rb +4 -6
- data/test/acceptance/prepend_test.rb +14 -16
- data/test/acceptance/prevent_use_of_mocha_outside_test_test.rb +0 -2
- data/test/acceptance/raise_exception_test.rb +2 -4
- data/test/acceptance/return_value_test.rb +0 -2
- data/test/acceptance/sequence_test.rb +9 -11
- data/test/acceptance/states_test.rb +6 -4
- data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +5 -4
- data/test/acceptance/stub_any_instance_method_test.rb +19 -17
- data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +8 -8
- data/test/acceptance/stub_class_method_defined_on_class_test.rb +2 -1
- data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -1
- data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +7 -4
- data/test/acceptance/stub_everything_test.rb +1 -3
- data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +6 -7
- data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -1
- data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -1
- data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -1
- data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -1
- data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +2 -1
- data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -2
- data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -1
- data/test/acceptance/stub_module_method_test.rb +13 -13
- data/test/acceptance/stub_test.rb +1 -3
- data/test/acceptance/stubba_example_test.rb +6 -14
- data/test/acceptance/stubba_test_result_test.rb +5 -8
- data/test/acceptance/stubbing_error_backtrace_test.rb +2 -2
- data/test/acceptance/stubbing_frozen_object_test.rb +2 -1
- data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +12 -7
- data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -2
- data/test/acceptance/stubbing_nil_test.rb +4 -5
- data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +1 -3
- data/test/acceptance/stubbing_non_existent_class_method_test.rb +3 -3
- data/test/acceptance/stubbing_non_existent_instance_method_test.rb +1 -3
- data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -2
- data/test/acceptance/stubbing_non_public_class_method_test.rb +3 -3
- data/test/acceptance/stubbing_non_public_instance_method_test.rb +1 -3
- data/test/acceptance/stubbing_on_non_mock_object_test.rb +4 -10
- data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +3 -4
- data/test/acceptance/throw_test.rb +0 -2
- data/test/acceptance/unexpected_invocation_test.rb +2 -3
- data/test/acceptance/unstubbing_test.rb +41 -14
- data/test/deprecation_disabler.rb +0 -1
- data/test/execution_point.rb +2 -4
- data/test/integration/mini_test_test.rb +2 -2
- data/test/integration/shared_tests.rb +24 -22
- data/test/integration/test_unit_test.rb +2 -2
- data/test/method_definer.rb +1 -3
- data/test/mini_test_result.rb +17 -11
- data/test/minitest_result.rb +0 -1
- data/test/simple_counter.rb +0 -2
- data/test/test_helper.rb +13 -5
- data/test/test_runner.rb +2 -4
- data/test/test_unit_result.rb +4 -2
- data/test/unit/any_instance_method_test.rb +31 -17
- data/test/unit/array_inspect_test.rb +2 -4
- data/test/unit/backtrace_filter_test.rb +3 -5
- data/test/unit/cardinality_test.rb +0 -2
- data/test/unit/central_test.rb +26 -27
- data/test/unit/change_state_side_effect_test.rb +0 -4
- data/test/unit/class_method_test.rb +59 -34
- data/test/unit/class_methods_test.rb +9 -11
- data/test/unit/configuration_test.rb +1 -2
- data/test/unit/date_time_inspect_test.rb +1 -3
- data/test/unit/exception_raiser_test.rb +0 -2
- data/test/unit/expectation_list_test.rb +0 -2
- data/test/unit/expectation_test.rb +41 -46
- data/test/unit/hash_inspect_test.rb +3 -5
- data/test/unit/hooks_test.rb +9 -4
- data/test/unit/in_state_ordering_constraint_test.rb +0 -4
- data/test/unit/method_matcher_test.rb +1 -3
- data/test/unit/mock_test.rb +35 -22
- data/test/unit/mockery_test.rb +28 -26
- data/test/unit/module_methods_test.rb +0 -2
- data/test/unit/multiple_yields_test.rb +0 -2
- data/test/unit/no_yields_test.rb +0 -2
- data/test/unit/object_inspect_test.rb +16 -7
- data/test/unit/object_methods_test.rb +6 -8
- data/test/unit/parameter_matchers/all_of_test.rb +0 -2
- data/test/unit/parameter_matchers/any_of_test.rb +0 -2
- data/test/unit/parameter_matchers/anything_test.rb +2 -4
- data/test/unit/parameter_matchers/equals_test.rb +1 -3
- data/test/unit/parameter_matchers/equivalent_uri_test.rb +0 -1
- data/test/unit/parameter_matchers/has_entries_test.rb +2 -2
- data/test/unit/parameter_matchers/has_entry_test.rb +13 -14
- data/test/unit/parameter_matchers/has_key_test.rb +0 -1
- data/test/unit/parameter_matchers/has_value_test.rb +0 -2
- data/test/unit/parameter_matchers/includes_test.rb +8 -9
- data/test/unit/parameter_matchers/instance_of_test.rb +1 -3
- data/test/unit/parameter_matchers/is_a_test.rb +1 -3
- data/test/unit/parameter_matchers/kind_of_test.rb +1 -3
- data/test/unit/parameter_matchers/not_test.rb +0 -2
- data/test/unit/parameter_matchers/regexp_matches_test.rb +1 -2
- data/test/unit/parameter_matchers/responds_with_test.rb +9 -3
- data/test/unit/parameter_matchers/stub_matcher.rb +0 -4
- data/test/unit/parameter_matchers/yaml_equivalent_test.rb +1 -3
- data/test/unit/parameters_matcher_test.rb +2 -4
- data/test/unit/receivers_test.rb +8 -6
- data/test/unit/return_values_test.rb +3 -5
- data/test/unit/sequence_test.rb +1 -5
- data/test/unit/single_return_value_test.rb +0 -2
- data/test/unit/single_yield_test.rb +0 -2
- data/test/unit/state_machine_test.rb +1 -3
- data/test/unit/string_inspect_test.rb +2 -4
- data/test/unit/thrower_test.rb +0 -2
- data/test/unit/yield_parameters_test.rb +0 -2
- data/yard-templates/default/layout/html/setup.rb +2 -3
- 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
|
-
|
27
|
+
true
|
31
28
|
end
|
32
29
|
|
33
30
|
# @private
|
34
31
|
def mocha_inspect
|
35
|
-
|
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]
|
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 &(
|
34
|
-
AllOf.new(self,
|
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]
|
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 |(
|
64
|
-
AnyOf.new(self,
|
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(
|
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
|
-
|
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
|
50
|
+
raise ArgumentError, 'Argument has no entries.'
|
52
51
|
when 1
|
53
52
|
key, value = options[0].first
|
54
53
|
else
|
55
|
-
raise ArgumentError
|
54
|
+
raise ArgumentError, 'Argument has multiple entries. Use Mocha::ParameterMatchers#has_entries instead.'
|
56
55
|
end
|
57
56
|
else
|
58
|
-
raise ArgumentError
|
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
|
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
|
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
|