rr 1.1.2.rc1 → 3.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Appraisals +3 -43
- data/CHANGES.md +98 -6
- data/CREDITS.md +5 -0
- data/Gemfile +1 -17
- data/README.md +29 -32
- data/Rakefile +42 -40
- data/doc/02_syntax_comparison.md +1 -0
- data/lib/rr/class_instance_method_defined.rb +1 -1
- data/lib/rr/core_ext/array.rb +2 -0
- data/lib/rr/core_ext/hash.rb +2 -0
- data/lib/rr/deprecations.rb +97 -0
- data/lib/rr/double.rb +28 -10
- data/lib/rr/double_definitions/double_definition.rb +39 -16
- data/lib/rr/double_definitions/double_definition_create.rb +5 -5
- data/lib/rr/double_definitions/double_definition_create_blank_slate.rb +10 -4
- data/lib/rr/double_definitions/double_injections/any_instance_of.rb +1 -1
- data/lib/rr/double_definitions/double_injections/instance.rb +2 -2
- data/lib/rr/double_definitions/strategies/strategy.rb +27 -8
- data/lib/rr/double_definitions/strategies/verification/mock.rb +8 -2
- data/lib/rr/double_matches.rb +4 -3
- data/lib/rr/dsl.rb +152 -0
- data/lib/rr/expectations/any_argument_expectation.rb +4 -4
- data/lib/rr/expectations/argument_equality_expectation.rb +43 -5
- data/lib/rr/injections/double_injection.rb +67 -19
- data/lib/rr/injections/method_missing_injection.rb +37 -6
- data/lib/rr/integrations/minitest_4.rb +1 -1
- data/lib/rr/integrations/minitest_4_active_support.rb +1 -1
- data/lib/rr/integrations/rspec/invocation_matcher.rb +0 -8
- data/lib/rr/integrations/rspec_2.rb +28 -8
- data/lib/rr/keyword_arguments.rb +15 -0
- data/lib/rr/method_dispatches/base_method_dispatch.rb +22 -5
- data/lib/rr/method_dispatches/method_dispatch.rb +21 -10
- data/lib/rr/method_dispatches/method_missing_dispatch.rb +14 -5
- data/lib/rr/recorded_call.rb +35 -0
- data/lib/rr/recorded_calls.rb +23 -9
- data/lib/rr/space.rb +15 -5
- data/lib/rr/spy_verification.rb +13 -5
- data/lib/rr/version.rb +1 -1
- data/lib/rr/wildcard_matchers.rb +10 -10
- data/lib/rr/without_autohook.rb +7 -14
- data/rr.gemspec +8 -3
- data/spec/defines_spec_suite_tasks.rb +12 -0
- data/spec/global_helper.rb +5 -0
- data/spec/spec_suite_configuration.rb +1 -7
- data/spec/suites.yml +0 -14
- data/spec/suites/rspec_2/functional/any_instance_of_spec.rb +133 -33
- data/spec/suites/rspec_2/functional/dont_allow_spec.rb +13 -8
- data/spec/suites/rspec_2/functional/mock_bang_spec.rb +20 -0
- data/spec/suites/rspec_2/functional/mock_instance_of_spec.rb +14 -0
- data/spec/suites/rspec_2/functional/mock_instance_of_strong_spec.rb +15 -0
- data/spec/suites/rspec_2/functional/mock_proxy_instance_of_spec.rb +15 -0
- data/spec/suites/rspec_2/functional/mock_proxy_spec.rb +14 -0
- data/spec/suites/rspec_2/functional/mock_spec.rb +8 -232
- data/spec/suites/rspec_2/functional/mock_strong_spec.rb +14 -0
- data/spec/suites/rspec_2/functional/received_spec.rb +16 -0
- data/spec/suites/rspec_2/functional/spy_spec.rb +89 -28
- data/spec/suites/rspec_2/functional/stub_bang_spec.rb +20 -0
- data/spec/suites/rspec_2/functional/stub_instance_of_spec.rb +15 -0
- data/spec/suites/rspec_2/functional/stub_instance_of_strong_spec.rb +15 -0
- data/spec/suites/rspec_2/functional/stub_proxy_instance_of_spec.rb +16 -0
- data/spec/suites/rspec_2/functional/stub_proxy_spec.rb +45 -0
- data/spec/suites/rspec_2/functional/stub_spec.rb +42 -161
- data/spec/suites/rspec_2/functional/stub_strong_spec.rb +15 -0
- data/spec/suites/rspec_2/helper.rb +2 -2
- data/spec/suites/rspec_2/support/mixins/double_definition_creator_helpers.rb +173 -0
- data/spec/suites/rspec_2/support/mixins/mock_definition_creator_helpers.rb +45 -0
- data/spec/suites/rspec_2/support/mixins/proxy_definition_creator_helpers.rb +33 -0
- data/spec/suites/rspec_2/support/mixins/stub_creator_helpers.rb +43 -0
- data/spec/suites/rspec_2/support/mixins/stub_definition_creator_helpers.rb +45 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_never_called_qualifier.rb +39 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_with_times_called_qualifier.rb +50 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/argument_expectations_without_qualifiers.rb +131 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/dont_allow.rb +148 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of.rb +26 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_instance_of_strong.rb +28 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_proxy.rb +11 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mock_strong.rb +37 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/mocking.rb +107 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of.rb +32 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_instance_of_strong.rb +39 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_proxy.rb +11 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stub_strong.rb +37 -0
- data/spec/suites/rspec_2/support/shared_contexts/double_definition_creators/stubbing.rb +57 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/array_flatten_bug.rb +35 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/block_form.rb +31 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/comparing_arity.rb +63 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/object_is_proxy.rb +43 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/sequential_invocations.rb +26 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/setting_implementation.rb +51 -0
- data/spec/suites/rspec_2/support/shared_examples/double_definition_creators/yields.rb +81 -0
- data/spec/suites/rspec_2/unit/core_ext/enumerable_spec.rb +0 -28
- data/spec/suites/rspec_2/unit/deprecations_spec.rb +27 -0
- data/spec/suites/rspec_2/unit/double_definitions/double_definition_create_spec.rb +18 -18
- data/spec/suites/rspec_2/unit/dsl/double_creators_spec.rb +133 -0
- data/spec/suites/rspec_2/unit/dsl/space_spec.rb +99 -0
- data/spec/suites/rspec_2/unit/dsl/wildcard_matchers_spec.rb +67 -0
- data/spec/suites/rspec_2/unit/expectations/any_argument_expectation_spec.rb +9 -9
- data/spec/suites/rspec_2/unit/expectations/argument_equality_expectation_spec.rb +21 -21
- data/spec/suites/rspec_2/unit/expectations/boolean_argument_equality_expectation_spec.rb +4 -4
- data/spec/suites/rspec_2/unit/expectations/hash_including_argument_equality_expectation_spec.rb +31 -21
- data/spec/suites/rspec_2/unit/injections/double_injection/double_injection_spec.rb +0 -12
- data/spec/suites/rspec_2/unit/integrations/rspec_spec.rb +4 -19
- data/spec/suites/rspec_2/unit/space_spec.rb +7 -4
- data/spec/suites/rspec_2/unit/spy_verification_spec.rb +1 -1
- data/spec/support/adapter.rb +1 -1
- data/spec/support/adapter_tests/rspec.rb +19 -15
- data/spec/support/project/generator.rb +0 -4
- metadata +113 -58
- data/gemfiles/ruby_18_rspec_1.gemfile +0 -14
- data/gemfiles/ruby_18_rspec_1.gemfile.lock +0 -38
- data/gemfiles/ruby_18_rspec_1_rails_2.gemfile +0 -18
- data/gemfiles/ruby_18_rspec_1_rails_2.gemfile.lock +0 -64
- data/gemfiles/ruby_19_rspec_2_rails_3.gemfile +0 -15
- data/gemfiles/ruby_19_rspec_2_rails_3.gemfile.lock +0 -123
- data/lib/rr/adapters.rb +0 -34
- data/lib/rr/adapters/rr_methods.rb +0 -142
- data/lib/rr/integrations/rspec_1.rb +0 -46
- data/lib/rr/integrations/test_unit_1.rb +0 -63
- data/lib/rr/integrations/test_unit_2.rb +0 -17
- data/lib/rr/integrations/test_unit_200.rb +0 -27
- data/lib/rr/integrations/test_unit_200_active_support.rb +0 -25
- data/lib/rr/integrations/test_unit_2_active_support.rb +0 -38
- data/lib/rr/proc_from_block.rb +0 -11
- data/spec/suites/rspec_1/helper.rb +0 -24
- data/spec/suites/rspec_1/integration/rspec_1_spec.rb +0 -93
- data/spec/suites/rspec_1/integration/test_unit_1_spec.rb +0 -102
- data/spec/suites/rspec_1/integration/test_unit_2_spec.rb +0 -109
- data/spec/suites/rspec_1/spec_helper.rb +0 -3
- data/spec/suites/rspec_1_rails_2/integration/astc_rails_2_spec.rb +0 -141
- data/spec/suites/rspec_1_rails_2/integration/rspec_1_rails_2_spec.rb +0 -132
- data/spec/suites/rspec_1_rails_2/integration/test_unit_1_rails_2_spec.rb +0 -141
- data/spec/suites/rspec_1_rails_2/integration/test_unit_2_rails_2_spec.rb +0 -148
- data/spec/suites/rspec_1_rails_2/spec_helper.rb +0 -3
- data/spec/suites/rspec_2/functional/dsl_spec.rb +0 -13
- data/spec/suites/rspec_2/functional/instance_of_spec.rb +0 -14
- data/spec/suites/rspec_2/functional/proxy_spec.rb +0 -136
- data/spec/suites/rspec_2/functional/strong_spec.rb +0 -79
- data/spec/suites/rspec_2/integration/rspec_2_spec.rb +0 -133
- data/spec/suites/rspec_2/integration/test_unit_200_spec.rb +0 -102
- data/spec/suites/rspec_2/integration/test_unit_2_spec.rb +0 -109
- data/spec/suites/rspec_2/unit/adapters/rr_methods/double_creators_spec.rb +0 -135
- data/spec/suites/rspec_2/unit/adapters/rr_methods/space_spec.rb +0 -101
- data/spec/suites/rspec_2/unit/adapters/rr_methods/wildcard_matchers_spec.rb +0 -69
- data/spec/suites/rspec_2/unit/proc_from_block_spec.rb +0 -14
- data/spec/suites/rspec_2_rails_3/integration/astc_rails_3_spec.rb +0 -141
- data/spec/suites/rspec_2_rails_3/integration/minitest_4_rails_3_spec.rb +0 -148
- data/spec/suites/rspec_2_rails_3/integration/rspec_2_rails_3_spec.rb +0 -172
- data/spec/suites/rspec_2_rails_3/integration/test_unit_200_rails_3_spec.rb +0 -141
- data/spec/suites/rspec_2_rails_3/integration/test_unit_2_rails_3_spec.rb +0 -148
- data/spec/suites/rspec_2_rails_3/spec_helper.rb +0 -3
- data/spec/suites/rspec_2_rails_4/integration/astc_rails_4_spec.rb +0 -142
- data/spec/suites/rspec_2_rails_4/integration/minitest_4_rails_4_spec.rb +0 -149
- data/spec/suites/rspec_2_rails_4/integration/rspec_2_rails_4_spec.rb +0 -173
- data/spec/suites/rspec_2_rails_4/integration/test_unit_200_rails_4_spec.rb +0 -142
- data/spec/suites/rspec_2_rails_4/integration/test_unit_2_rails_4_spec.rb +0 -149
- data/spec/suites/rspec_2_rails_4/spec_helper.rb +0 -3
@@ -0,0 +1,67 @@
|
|
1
|
+
require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
|
2
|
+
|
3
|
+
module RR
|
4
|
+
describe DSL do
|
5
|
+
include DSL
|
6
|
+
|
7
|
+
describe "#anything" do
|
8
|
+
it "returns an Anything matcher" do
|
9
|
+
expect(anything).to eq RR::WildcardMatchers::Anything.new
|
10
|
+
end
|
11
|
+
|
12
|
+
it "rr_anything returns an Anything matcher" do
|
13
|
+
expect(rr_anything).to eq RR::WildcardMatchers::Anything.new
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "#is_a" do
|
18
|
+
it "returns an IsA matcher" do
|
19
|
+
expect(is_a(Integer)).to eq RR::WildcardMatchers::IsA.new(Integer)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "rr_is_a returns an IsA matcher" do
|
23
|
+
expect(rr_is_a(Integer)).to eq RR::WildcardMatchers::IsA.new(Integer)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "#numeric" do
|
28
|
+
it "returns an Numeric matcher" do
|
29
|
+
expect(numeric).to eq RR::WildcardMatchers::Numeric.new
|
30
|
+
end
|
31
|
+
|
32
|
+
it "rr_numeric returns an Numeric matcher" do
|
33
|
+
expect(rr_numeric).to eq RR::WildcardMatchers::Numeric.new
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#boolean" do
|
38
|
+
it "returns an Boolean matcher" do
|
39
|
+
expect(boolean).to eq RR::WildcardMatchers::Boolean.new
|
40
|
+
end
|
41
|
+
|
42
|
+
it "rr_boolean returns an Boolean matcher" do
|
43
|
+
expect(rr_boolean).to eq RR::WildcardMatchers::Boolean.new
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "#duck_type" do
|
48
|
+
it "returns a DuckType matcher" do
|
49
|
+
expect(duck_type(:one, :two)).to eq RR::WildcardMatchers::DuckType.new(:one, :two)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "rr_duck_type returns a DuckType matcher" do
|
53
|
+
expect(rr_duck_type(:one, :two)).to eq RR::WildcardMatchers::DuckType.new(:one, :two)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "#any_times" do
|
59
|
+
it "returns an AnyTimesMatcher" do
|
60
|
+
expect(any_times).to eq RR::TimesCalledMatchers::AnyTimesMatcher.new
|
61
|
+
end
|
62
|
+
|
63
|
+
it "rr_any_times returns an AnyTimesMatcher" do
|
64
|
+
expect(rr_any_times).to eq RR::TimesCalledMatchers::AnyTimesMatcher.new
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -21,26 +21,26 @@ module RR
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it "returns false when comparing with ArgumentEqualityExpectation" do
|
24
|
-
expect(expectation).to_not eq ArgumentEqualityExpectation.new(1)
|
24
|
+
expect(expectation).to_not eq ArgumentEqualityExpectation.new([1], {})
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
describe "#exact_match?" do
|
29
29
|
it "returns false" do
|
30
|
-
expectation.should_not be_exact_match(1, 2, 3)
|
31
|
-
expectation.should_not be_exact_match(1, 2)
|
32
|
-
expectation.should_not be_exact_match(1)
|
33
|
-
expectation.should_not be_exact_match()
|
34
|
-
expectation.should_not be_exact_match("does not match")
|
30
|
+
expectation.should_not be_exact_match([1, 2, 3], {})
|
31
|
+
expectation.should_not be_exact_match([1, 2], {})
|
32
|
+
expectation.should_not be_exact_match([1], {})
|
33
|
+
expectation.should_not be_exact_match([], {})
|
34
|
+
expectation.should_not be_exact_match(["does not match"], {})
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
describe "#wildcard_match?" do
|
39
39
|
it "returns true" do
|
40
40
|
expectation = AnyArgumentExpectation.new
|
41
|
-
expect(expectation).to be_wildcard_match(1, 2, 3)
|
42
|
-
expect(expectation).to be_wildcard_match("whatever")
|
43
|
-
expect(expectation).to be_wildcard_match("whatever", "else")
|
41
|
+
expect(expectation).to be_wildcard_match([1, 2, 3], {})
|
42
|
+
expect(expectation).to be_wildcard_match(["whatever"], {})
|
43
|
+
expect(expectation).to be_wildcard_match(["whatever", "else"], {})
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
@@ -5,7 +5,7 @@ module RR
|
|
5
5
|
describe ArgumentEqualityExpectation do
|
6
6
|
attr_reader :expectation
|
7
7
|
before do
|
8
|
-
@expectation = ArgumentEqualityExpectation.new(1, 2, 3)
|
8
|
+
@expectation = ArgumentEqualityExpectation.new([1, 2, 3], {})
|
9
9
|
end
|
10
10
|
|
11
11
|
describe "#expected_arguments" do
|
@@ -16,30 +16,30 @@ module RR
|
|
16
16
|
|
17
17
|
describe "==" do
|
18
18
|
it "returns true when passed in expected_arguments are equal" do
|
19
|
-
expect(expectation).to eq ArgumentEqualityExpectation.new(1, 2, 3)
|
19
|
+
expect(expectation).to eq ArgumentEqualityExpectation.new([1, 2, 3], {})
|
20
20
|
end
|
21
21
|
|
22
22
|
it "returns false when passed in expected_arguments are not equal" do
|
23
|
-
expect(expectation).to_not eq ArgumentEqualityExpectation.new(1, 2)
|
24
|
-
expect(expectation).to_not eq ArgumentEqualityExpectation.new(1)
|
25
|
-
expect(expectation).to_not eq ArgumentEqualityExpectation.new(:something)
|
26
|
-
expect(expectation).to_not eq ArgumentEqualityExpectation.new()
|
23
|
+
expect(expectation).to_not eq ArgumentEqualityExpectation.new([1, 2], {})
|
24
|
+
expect(expectation).to_not eq ArgumentEqualityExpectation.new([1], {})
|
25
|
+
expect(expectation).to_not eq ArgumentEqualityExpectation.new([:something], {})
|
26
|
+
expect(expectation).to_not eq ArgumentEqualityExpectation.new([], {})
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
describe "#exact_match?" do
|
31
31
|
context "when all arguments exactly match" do
|
32
32
|
it "returns true" do
|
33
|
-
expect(expectation).to be_exact_match(1, 2, 3)
|
33
|
+
expect(expectation).to be_exact_match([1, 2, 3], {})
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
37
|
context "when all arguments do not exactly match" do
|
38
38
|
it "returns false" do
|
39
|
-
expectation.should_not be_exact_match(1, 2)
|
40
|
-
expectation.should_not be_exact_match(1)
|
41
|
-
expectation.should_not be_exact_match()
|
42
|
-
expectation.should_not be_exact_match("does not match")
|
39
|
+
expectation.should_not be_exact_match([1, 2], {})
|
40
|
+
expectation.should_not be_exact_match([1], {})
|
41
|
+
expectation.should_not be_exact_match([], {})
|
42
|
+
expectation.should_not be_exact_match(["does not match"], {})
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -47,26 +47,26 @@ module RR
|
|
47
47
|
describe "#wildcard_match?" do
|
48
48
|
context "when not an exact match" do
|
49
49
|
it "returns false" do
|
50
|
-
expectation = ArgumentEqualityExpectation.new(1)
|
51
|
-
expectation.should_not be_wildcard_match(1, 2, 3)
|
52
|
-
expectation.should_not be_wildcard_match("whatever")
|
53
|
-
expectation.should_not be_wildcard_match("whatever", "else")
|
50
|
+
expectation = ArgumentEqualityExpectation.new([1], {})
|
51
|
+
expectation.should_not be_wildcard_match([1, 2, 3], {})
|
52
|
+
expectation.should_not be_wildcard_match(["whatever"], {})
|
53
|
+
expectation.should_not be_wildcard_match(["whatever", "else"], {})
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
57
|
context "when an exact match" do
|
58
58
|
it "returns true" do
|
59
|
-
expectation = ArgumentEqualityExpectation.new(1, 2)
|
60
|
-
expect(expectation).to be_wildcard_match(1, 2)
|
61
|
-
expectation.should_not be_wildcard_match(1)
|
62
|
-
expectation.should_not be_wildcard_match("whatever", "else")
|
59
|
+
expectation = ArgumentEqualityExpectation.new([1, 2], {})
|
60
|
+
expect(expectation).to be_wildcard_match([1, 2], {})
|
61
|
+
expectation.should_not be_wildcard_match([1], {})
|
62
|
+
expectation.should_not be_wildcard_match(["whatever", "else"], {})
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
66
|
context "when not passed correct number of arguments" do
|
67
67
|
it "returns false" do
|
68
|
-
expectation.should_not be_wildcard_match()
|
69
|
-
expectation.should_not be_wildcard_match(Object.new, Object.new)
|
68
|
+
expectation.should_not be_wildcard_match([], {})
|
69
|
+
expectation.should_not be_wildcard_match([Object.new, Object.new], {})
|
70
70
|
end
|
71
71
|
end
|
72
72
|
end
|
@@ -7,20 +7,20 @@ module RR
|
|
7
7
|
attr_reader :expectation
|
8
8
|
|
9
9
|
before do
|
10
|
-
@expectation = ArgumentEqualityExpectation.new(boolean)
|
10
|
+
@expectation = ArgumentEqualityExpectation.new([boolean], {})
|
11
11
|
end
|
12
12
|
|
13
13
|
describe "#wildcard_match?" do
|
14
14
|
context "when passed a Boolean" do
|
15
15
|
it "returns true" do
|
16
|
-
expect(expectation).to be_wildcard_match(true)
|
17
|
-
expect(expectation).to be_wildcard_match(false)
|
16
|
+
expect(expectation).to be_wildcard_match([true], {})
|
17
|
+
expect(expectation).to be_wildcard_match([false], {})
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
context "when not passed a Boolean" do
|
22
22
|
it "returns false" do
|
23
|
-
expectation.should_not be_wildcard_match(:not_a_boolean)
|
23
|
+
expectation.should_not be_wildcard_match([:not_a_boolean], {})
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
data/spec/suites/rspec_2/unit/expectations/hash_including_argument_equality_expectation_spec.rb
CHANGED
@@ -11,70 +11,80 @@ module Expectations
|
|
11
11
|
|
12
12
|
describe "#exact_match?" do
|
13
13
|
before do
|
14
|
-
@expectation = ArgumentEqualityExpectation.new(hash_including(expected_hash))
|
14
|
+
@expectation = ArgumentEqualityExpectation.new([hash_including(expected_hash)], {})
|
15
15
|
end
|
16
16
|
|
17
17
|
it "returns true when passed in a HashIncluding matcher with the same hash" do
|
18
|
-
expect(expectation).to be_exact_match(RR::WildcardMatchers::HashIncluding.new(expected_hash)
|
18
|
+
expect(expectation).to be_exact_match([RR::WildcardMatchers::HashIncluding.new(expected_hash)],
|
19
|
+
{})
|
19
20
|
end
|
20
21
|
|
21
22
|
it "returns false when passed in a HashIncluding matcher with a different argument list" do
|
22
|
-
expectation.should_not be_exact_match(RR::WildcardMatchers::HashIncluding.new(:foo => 1)
|
23
|
+
expectation.should_not be_exact_match([RR::WildcardMatchers::HashIncluding.new(:foo => 1)],
|
24
|
+
{})
|
23
25
|
end
|
24
26
|
|
25
27
|
it "returns false otherwise" do
|
26
|
-
expectation.should_not be_exact_match("hello")
|
27
|
-
expectation.should_not be_exact_match(:hello)
|
28
|
-
expectation.should_not be_exact_match(1)
|
29
|
-
expectation.should_not be_exact_match(nil)
|
30
|
-
expectation.should_not be_exact_match(true)
|
31
|
-
expectation.should_not be_exact_match()
|
28
|
+
expectation.should_not be_exact_match(["hello"], {})
|
29
|
+
expectation.should_not be_exact_match([:hello], {})
|
30
|
+
expectation.should_not be_exact_match([1], {})
|
31
|
+
expectation.should_not be_exact_match([nil], {})
|
32
|
+
expectation.should_not be_exact_match([true], {})
|
33
|
+
expectation.should_not be_exact_match([], {})
|
32
34
|
end
|
33
35
|
end
|
34
36
|
|
35
37
|
describe "#wildcard_match?" do
|
36
38
|
before do
|
37
|
-
@expectation = ArgumentEqualityExpectation.new(hash_including(expected_hash)
|
39
|
+
@expectation = ArgumentEqualityExpectation.new([hash_including(expected_hash)],
|
40
|
+
{})
|
38
41
|
end
|
39
42
|
|
40
43
|
it "returns true when hash contains same key/values as the expectation" do
|
41
|
-
expect(expectation).to be_wildcard_match(expected_hash)
|
44
|
+
expect(expectation).to be_wildcard_match([expected_hash], {})
|
42
45
|
end
|
43
46
|
|
44
47
|
it "returns true when hash contains at least expectation's key/values" do
|
45
|
-
expect(expectation).to be_wildcard_match(expected_hash.merge(:oregon => "Salem")
|
48
|
+
expect(expectation).to be_wildcard_match([expected_hash.merge(:oregon => "Salem")],
|
49
|
+
{})
|
46
50
|
end
|
47
51
|
|
48
52
|
it "returns true when passed the same hash, even after the original is modified" do
|
49
53
|
original_expected_hash = expected_hash.clone
|
50
54
|
expected_hash[:texas] = nil
|
51
|
-
expect(expectation).to be_wildcard_match(original_expected_hash)
|
55
|
+
expect(expectation).to be_wildcard_match([original_expected_hash], {})
|
52
56
|
end
|
53
57
|
|
54
58
|
it "returns true even if one of the expectation's values is nil" do
|
55
|
-
expectation = ArgumentEqualityExpectation.new(hash_including(:foo => nil)
|
56
|
-
|
59
|
+
expectation = ArgumentEqualityExpectation.new([hash_including(:foo => nil)],
|
60
|
+
{})
|
61
|
+
expect(expectation).to be_wildcard_match([{:foo => nil}],
|
62
|
+
{})
|
57
63
|
end
|
58
64
|
|
59
65
|
it "returns false when hash matches only some required key/values" do
|
60
|
-
expectation.should_not be_wildcard_match({:texas => "Austin"}
|
66
|
+
expectation.should_not be_wildcard_match([{:texas => "Austin"}],
|
67
|
+
{})
|
61
68
|
end
|
62
69
|
|
63
70
|
it "returns false when hash matches all the keys but not all the values" do
|
64
|
-
expectation.should_not be_wildcard_match({:texas => "Austin", :maine => "Portland"}
|
71
|
+
expectation.should_not be_wildcard_match([{:texas => "Austin", :maine => "Portland"}],
|
72
|
+
{})
|
65
73
|
end
|
66
74
|
|
67
75
|
it "returns false when passed a hash that matches all values but not all keys" do
|
68
|
-
expectation.should_not be_wildcard_match({:texas => "Austin", :georgia => "Augusta"}
|
76
|
+
expectation.should_not be_wildcard_match([{:texas => "Austin", :georgia => "Augusta"}],
|
77
|
+
{})
|
69
78
|
end
|
70
79
|
|
71
80
|
it "returns true when an exact match" do
|
72
|
-
expect(expectation).to be_wildcard_match(hash_including(expected_hash)
|
81
|
+
expect(expectation).to be_wildcard_match([hash_including(expected_hash)],
|
82
|
+
{})
|
73
83
|
end
|
74
84
|
|
75
85
|
it "returns false when not passed correct number of arguments" do
|
76
|
-
expectation.should_not be_wildcard_match()
|
77
|
-
expectation.should_not be_wildcard_match(:a, :b)
|
86
|
+
expectation.should_not be_wildcard_match([], {})
|
87
|
+
expectation.should_not be_wildcard_match([:a, :b], {})
|
78
88
|
end
|
79
89
|
end
|
80
90
|
end
|
@@ -231,12 +231,6 @@ module RR
|
|
231
231
|
end
|
232
232
|
|
233
233
|
describe "being called" do
|
234
|
-
it "defines __rr__original_{method_name} to be the lazily created method" do
|
235
|
-
subject.foobar
|
236
|
-
expect((!!subject.methods.detect {|method| method.to_sym == :__rr__original_foobar})).to be_true
|
237
|
-
expect(subject.__rr__original_foobar).to eq :original_foobar
|
238
|
-
end
|
239
|
-
|
240
234
|
it "calls the lazily created method and returns the injected method return value" do
|
241
235
|
original_return_value = nil
|
242
236
|
stub.proxy(subject).foobar {|arg| original_return_value = arg; :new_foobar}
|
@@ -383,12 +377,6 @@ module RR
|
|
383
377
|
end
|
384
378
|
|
385
379
|
describe "being called" do
|
386
|
-
it "defines __rr__original_{method_name} to be the lazily created method" do
|
387
|
-
subject.foobar
|
388
|
-
expect((!!subject.methods.detect {|method| method.to_sym == :__rr__original_foobar})).to be_true
|
389
|
-
expect(subject.__rr__original_foobar).to eq :original_foobar
|
390
|
-
end
|
391
|
-
|
392
380
|
it "calls the lazily created method and returns the injected method return value" do
|
393
381
|
original_return_value = nil
|
394
382
|
stub.proxy(subject).foobar {|arg| original_return_value = arg; :new_foobar}
|
@@ -2,7 +2,7 @@ require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
|
|
2
2
|
|
3
3
|
module RR
|
4
4
|
module Integrations
|
5
|
-
describe
|
5
|
+
describe RSpec2 do
|
6
6
|
attr_reader :fixture, :method_name
|
7
7
|
|
8
8
|
describe "#setup_mocks_for_rspec" do
|
@@ -10,7 +10,7 @@ module RR
|
|
10
10
|
|
11
11
|
before do
|
12
12
|
@fixture = Object.new
|
13
|
-
fixture.extend
|
13
|
+
fixture.extend RSpec2::Mixin
|
14
14
|
@method_name = :foobar
|
15
15
|
end
|
16
16
|
|
@@ -28,7 +28,7 @@ module RR
|
|
28
28
|
|
29
29
|
before do
|
30
30
|
@fixture = Object.new
|
31
|
-
fixture.extend
|
31
|
+
fixture.extend RSpec2::Mixin
|
32
32
|
@method_name = :foobar
|
33
33
|
end
|
34
34
|
|
@@ -47,7 +47,7 @@ module RR
|
|
47
47
|
|
48
48
|
before do
|
49
49
|
@fixture = Object.new
|
50
|
-
fixture.extend
|
50
|
+
fixture.extend RSpec2::Mixin
|
51
51
|
@method_name = :foobar
|
52
52
|
end
|
53
53
|
|
@@ -65,21 +65,6 @@ module RR
|
|
65
65
|
expect(RR.trim_backtrace).to eq false
|
66
66
|
end
|
67
67
|
end
|
68
|
-
|
69
|
-
describe '#have_received' do
|
70
|
-
it "creates an invocation matcher with a method name" do
|
71
|
-
method = :test
|
72
|
-
matcher = 'fake'
|
73
|
-
mock(RR::Integrations::RSpec::InvocationMatcher).new(method) { matcher }
|
74
|
-
expect(have_received(method)).to eq matcher
|
75
|
-
end
|
76
|
-
|
77
|
-
it "creates an invocation matcher without a method name" do
|
78
|
-
matcher = 'fake'
|
79
|
-
mock(RR::Integrations::RSpec::InvocationMatcher).new(nil) { matcher }
|
80
|
-
expect(have_received).to eq matcher
|
81
|
-
end
|
82
|
-
end
|
83
68
|
end
|
84
69
|
end
|
85
70
|
end
|
@@ -11,9 +11,12 @@ module RR
|
|
11
11
|
describe "#record_call" do
|
12
12
|
it "should add a call to the list" do
|
13
13
|
object = Object.new
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
method_name = :to_s
|
15
|
+
arguments = []
|
16
|
+
keyword_arguments = {}
|
17
|
+
space.record_call(object, method_name, arguments, keyword_arguments, lambda {})
|
18
|
+
expect(space.recorded_calls[0]).to eq \
|
19
|
+
RR::RecordedCall.new(object, method_name, arguments, keyword_arguments, lambda {})
|
17
20
|
end
|
18
21
|
end
|
19
22
|
|
@@ -200,7 +203,7 @@ module RR
|
|
200
203
|
|
201
204
|
it "should clear the #recorded_calls" do
|
202
205
|
object = Object.new
|
203
|
-
space.record_call(object, :to_s, [], nil)
|
206
|
+
space.record_call(object, :to_s, [], {}, nil)
|
204
207
|
|
205
208
|
space.reset
|
206
209
|
expect(space.recorded_calls).to eq RR::RecordedCalls.new([])
|