rr 1.0.4 → 1.0.5.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. checksums.yaml +15 -0
  2. data/CHANGES.md +376 -0
  3. data/Gemfile +7 -10
  4. data/README.md +822 -0
  5. data/Rakefile +24 -78
  6. data/VERSION +1 -0
  7. data/lib/rr.rb +3 -0
  8. data/lib/rr/adapters/minitest.rb +6 -0
  9. data/lib/rr/adapters/rr_methods.rb +6 -10
  10. data/lib/rr/adapters/rspec.rb +3 -0
  11. data/lib/rr/adapters/rspec2.rb +30 -0
  12. data/lib/rr/adapters/test_unit.rb +2 -0
  13. data/lib/rr/double.rb +3 -2
  14. data/lib/rr/double_definitions/child_double_definition_create.rb +3 -2
  15. data/lib/rr/double_definitions/double_definition.rb +15 -13
  16. data/lib/rr/double_definitions/double_definition_create.rb +9 -5
  17. data/lib/rr/double_definitions/double_injections/any_instance_of.rb +3 -2
  18. data/lib/rr/double_definitions/strategies/strategy.rb +5 -4
  19. data/lib/rr/double_definitions/strategies/strategy_methods.rb +6 -8
  20. data/lib/rr/double_definitions/strategies/verification/mock.rb +3 -3
  21. data/lib/rr/double_matches.rb +2 -1
  22. data/lib/rr/expectations/argument_equality_expectation.rb +2 -2
  23. data/lib/rr/expectations/times_called_expectation.rb +2 -2
  24. data/lib/rr/injections/double_injection.rb +12 -11
  25. data/lib/rr/injections/injection.rb +2 -2
  26. data/lib/rr/injections/method_missing_injection.rb +21 -7
  27. data/lib/rr/injections/singleton_method_added_injection.rb +3 -1
  28. data/lib/rr/method_dispatches/base_method_dispatch.rb +1 -1
  29. data/lib/rr/method_dispatches/method_dispatch.rb +2 -1
  30. data/lib/rr/method_dispatches/method_missing_dispatch.rb +2 -1
  31. data/lib/rr/proc_from_block.rb +8 -4
  32. data/lib/rr/space.rb +3 -2
  33. data/lib/rr/times_called_matchers/times_called_matcher.rb +2 -2
  34. data/lib/rr/version.rb +5 -0
  35. data/lib/rr/wildcard_matchers/boolean.rb +2 -2
  36. data/spec/runner.rb +41 -0
  37. metadata +45 -133
  38. data/.gitignore +0 -10
  39. data/.runrc +0 -3
  40. data/.rvmrc +0 -2
  41. data/CHANGES +0 -266
  42. data/Gemfile.lock +0 -31
  43. data/README.rdoc +0 -392
  44. data/benchmarks/rr_benchmark.rb +0 -32
  45. data/benchmarks/rspec_benchmark.rb +0 -14
  46. data/doc/0.6.0.release.markdown +0 -81
  47. data/doc/todo.txt +0 -0
  48. data/introducting_rr.txt +0 -206
  49. data/rr.gemspec +0 -37
  50. data/spec/api/any_instance_of/all_instances_of_spec.rb +0 -12
  51. data/spec/api/any_instance_of/any_instance_of_spec.rb +0 -47
  52. data/spec/api/any_instance_of/instance_of_spec.rb +0 -12
  53. data/spec/api/dont_allow/dont_allow_after_stub_spec.rb +0 -14
  54. data/spec/api/mock/mock_spec.rb +0 -193
  55. data/spec/api/proxy/proxy_spec.rb +0 -86
  56. data/spec/api/spy/spy_spec.rb +0 -49
  57. data/spec/api/strong/strong_spec.rb +0 -87
  58. data/spec/api/stub/stub_spec.rb +0 -152
  59. data/spec/core_spec_suite.rb +0 -19
  60. data/spec/environment_fixture_setup.rb +0 -8
  61. data/spec/minitest_spec_suite.rb +0 -21
  62. data/spec/proc_from_block_spec.rb +0 -14
  63. data/spec/rr/adapters/rr_methods_argument_matcher_spec.rb +0 -67
  64. data/spec/rr/adapters/rr_methods_creator_spec.rb +0 -137
  65. data/spec/rr/adapters/rr_methods_space_spec.rb +0 -98
  66. data/spec/rr/adapters/rr_methods_spec_helper.rb +0 -11
  67. data/spec/rr/adapters/rr_methods_times_matcher_spec.rb +0 -13
  68. data/spec/rr/double_definitions/child_double_definition_creator_spec.rb +0 -112
  69. data/spec/rr/double_definitions/double_definition_create_blank_slate_spec.rb +0 -91
  70. data/spec/rr/double_definitions/double_definition_create_spec.rb +0 -443
  71. data/spec/rr/double_injection/double_injection_spec.rb +0 -546
  72. data/spec/rr/double_injection/double_injection_verify_spec.rb +0 -29
  73. data/spec/rr/errors/rr_error_spec.rb +0 -67
  74. data/spec/rr/expectations/any_argument_expectation_spec.rb +0 -47
  75. data/spec/rr/expectations/anything_argument_equality_expectation_spec.rb +0 -14
  76. data/spec/rr/expectations/argument_equality_expectation_spec.rb +0 -135
  77. data/spec/rr/expectations/boolean_argument_equality_expectation_spec.rb +0 -34
  78. data/spec/rr/expectations/hash_including_argument_equality_expectation_spec.rb +0 -82
  79. data/spec/rr/expectations/hash_including_spec.rb +0 -17
  80. data/spec/rr/expectations/satisfy_argument_equality_expectation_spec.rb +0 -59
  81. data/spec/rr/expectations/satisfy_spec.rb +0 -14
  82. data/spec/rr/expectations/times_called_expectation/times_called_expectation_any_times_spec.rb +0 -22
  83. data/spec/rr/expectations/times_called_expectation/times_called_expectation_at_least_spec.rb +0 -37
  84. data/spec/rr/expectations/times_called_expectation/times_called_expectation_at_most_spec.rb +0 -43
  85. data/spec/rr/expectations/times_called_expectation/times_called_expectation_helper.rb +0 -15
  86. data/spec/rr/expectations/times_called_expectation/times_called_expectation_integer_spec.rb +0 -58
  87. data/spec/rr/expectations/times_called_expectation/times_called_expectation_proc_spec.rb +0 -35
  88. data/spec/rr/expectations/times_called_expectation/times_called_expectation_range_spec.rb +0 -39
  89. data/spec/rr/minitest/minitest_integration_test.rb +0 -59
  90. data/spec/rr/minitest/test_helper.rb +0 -7
  91. data/spec/rr/rspec/invocation_matcher_spec.rb +0 -279
  92. data/spec/rr/rspec/rspec_adapter_spec.rb +0 -63
  93. data/spec/rr/rspec/rspec_backtrace_tweaking_spec.rb +0 -31
  94. data/spec/rr/rspec/rspec_backtrace_tweaking_spec_fixture.rb +0 -11
  95. data/spec/rr/rspec/rspec_usage_spec.rb +0 -86
  96. data/spec/rr/space/hash_with_object_id_key_spec.rb +0 -88
  97. data/spec/rr/space/space_spec.rb +0 -596
  98. data/spec/rr/test_unit/test_helper.rb +0 -7
  99. data/spec/rr/test_unit/test_unit_backtrace_test.rb +0 -36
  100. data/spec/rr/test_unit/test_unit_integration_test.rb +0 -59
  101. data/spec/rr/times_called_matchers/any_times_matcher_spec.rb +0 -47
  102. data/spec/rr/times_called_matchers/at_least_matcher_spec.rb +0 -55
  103. data/spec/rr/times_called_matchers/at_most_matcher_spec.rb +0 -70
  104. data/spec/rr/times_called_matchers/integer_matcher_spec.rb +0 -70
  105. data/spec/rr/times_called_matchers/proc_matcher_spec.rb +0 -55
  106. data/spec/rr/times_called_matchers/range_matcher_spec.rb +0 -76
  107. data/spec/rr/times_called_matchers/times_called_matcher_spec.rb +0 -118
  108. data/spec/rr/wildcard_matchers/anything_spec.rb +0 -24
  109. data/spec/rr/wildcard_matchers/boolean_spec.rb +0 -36
  110. data/spec/rr/wildcard_matchers/duck_type_spec.rb +0 -52
  111. data/spec/rr/wildcard_matchers/is_a_spec.rb +0 -32
  112. data/spec/rr/wildcard_matchers/numeric_spec.rb +0 -32
  113. data/spec/rr/wildcard_matchers/range_spec.rb +0 -35
  114. data/spec/rr/wildcard_matchers/regexp_spec.rb +0 -43
  115. data/spec/rr_spec.rb +0 -28
  116. data/spec/rspec_spec_suite.rb +0 -17
  117. data/spec/spec.opts +0 -10
  118. data/spec/spec_helper.rb +0 -41
  119. data/spec/spec_suite.rb +0 -54
  120. data/spec/spy_verification_spec.rb +0 -129
  121. data/spec/test_unit_spec_suite.rb +0 -21
@@ -1,67 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module Adapters
5
- describe RRMethods do
6
- describe "#anything" do
7
- it_should_behave_like "RR::Adapters::RRMethods"
8
-
9
- it "returns an Anything matcher" do
10
- anything.should == RR::WildcardMatchers::Anything.new
11
- end
12
-
13
- it "rr_anything returns an Anything matcher" do
14
- rr_anything.should == RR::WildcardMatchers::Anything.new
15
- end
16
- end
17
-
18
- describe "#is_a" do
19
- it_should_behave_like "RR::Adapters::RRMethods"
20
-
21
- it "returns an IsA matcher" do
22
- is_a(Integer).should == RR::WildcardMatchers::IsA.new(Integer)
23
- end
24
-
25
- it "rr_is_a returns an IsA matcher" do
26
- rr_is_a(Integer).should == RR::WildcardMatchers::IsA.new(Integer)
27
- end
28
- end
29
-
30
- describe "#numeric" do
31
- it_should_behave_like "RR::Adapters::RRMethods"
32
-
33
- it "returns an Numeric matcher" do
34
- numeric.should == RR::WildcardMatchers::Numeric.new
35
- end
36
-
37
- it "rr_numeric returns an Numeric matcher" do
38
- rr_numeric.should == RR::WildcardMatchers::Numeric.new
39
- end
40
- end
41
-
42
- describe "#boolean" do
43
- it_should_behave_like "RR::Adapters::RRMethods"
44
-
45
- it "returns an Boolean matcher" do
46
- boolean.should == RR::WildcardMatchers::Boolean.new
47
- end
48
-
49
- it "rr_boolean returns an Boolean matcher" do
50
- rr_boolean.should == RR::WildcardMatchers::Boolean.new
51
- end
52
- end
53
-
54
- describe "#duck_type" do
55
- it_should_behave_like "RR::Adapters::RRMethods"
56
-
57
- it "returns a DuckType matcher" do
58
- duck_type(:one, :two).should == RR::WildcardMatchers::DuckType.new(:one, :two)
59
- end
60
-
61
- it "rr_duck_type returns a DuckType matcher" do
62
- rr_duck_type(:one, :two).should == RR::WildcardMatchers::DuckType.new(:one, :two)
63
- end
64
- end
65
- end
66
- end
67
- end
@@ -1,137 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module Adapters
5
- describe RRMethods do
6
- attr_reader :subject
7
- before(:each) do
8
- @subject = Object.new
9
- end
10
-
11
- after(:each) do
12
- RR.reset
13
- end
14
-
15
- describe "normal strategy definitions" do
16
- attr_reader :strategy_method_name
17
- def call_strategy(*args, &block)
18
- __send__(strategy_method_name, *args, &block)
19
- end
20
-
21
- describe "#mock" do
22
- before do
23
- @strategy_method_name = :mock
24
- end
25
-
26
- context "when passing no args" do
27
- it "returns a DoubleDefinitionCreate" do
28
- call_strategy.class.should == RR::DoubleDefinitions::DoubleDefinitionCreate
29
- end
30
- end
31
-
32
- context "when passed a method_name argument" do
33
- it "creates a mock Double for method" do
34
- double_definition = mock(subject, :foobar).returns {:baz}
35
- double_definition.times_matcher.should == RR::TimesCalledMatchers::IntegerMatcher.new(1)
36
- double_definition.argument_expectation.class.should == RR::Expectations::ArgumentEqualityExpectation
37
- double_definition.argument_expectation.expected_arguments.should == []
38
- subject.foobar.should == :baz
39
- end
40
- end
41
- end
42
-
43
- describe "#stub" do
44
- before do
45
- @strategy_method_name = :stub
46
- end
47
-
48
- context "when passing no args" do
49
- it "returns a DoubleDefinitionCreate" do
50
- call_strategy.class.should == RR::DoubleDefinitions::DoubleDefinitionCreate
51
- end
52
- end
53
-
54
- context "when passed a method_name argument" do
55
- it "creates a stub Double for method when passed a method_name argument" do
56
- double_definition = stub(subject, :foobar).returns {:baz}
57
- double_definition.times_matcher.should == RR::TimesCalledMatchers::AnyTimesMatcher.new
58
- double_definition.argument_expectation.class.should == RR::Expectations::AnyArgumentExpectation
59
- subject.foobar.should == :baz
60
- end
61
- end
62
- end
63
-
64
- describe "#dont_allow" do
65
- before do
66
- @strategy_method_name = :dont_allow
67
- end
68
-
69
- context "when passing no args" do
70
- it "returns a DoubleDefinitionCreate" do
71
- call_strategy.class.should == RR::DoubleDefinitions::DoubleDefinitionCreate
72
- end
73
- end
74
-
75
- context "when passed a method_name argument_expectation" do
76
- it "creates a mock Double for method" do
77
- double_definition = dont_allow(subject, :foobar)
78
- double_definition.times_matcher.should == RR::TimesCalledMatchers::NeverMatcher.new
79
- double_definition.argument_expectation.class.should == RR::Expectations::AnyArgumentExpectation
80
-
81
- lambda do
82
- subject.foobar
83
- end.should raise_error(RR::Errors::TimesCalledError)
84
- RR.reset
85
- end
86
- end
87
- end
88
- end
89
-
90
- describe "! strategy definitions" do
91
- attr_reader :strategy_method_name
92
- def call_strategy(*args, &definition_eval_block)
93
- __send__(strategy_method_name, *args, &definition_eval_block)
94
- end
95
-
96
- describe "#mock!" do
97
- before do
98
- @strategy_method_name = :mock!
99
- end
100
-
101
- context "when passed a method_name argument" do
102
- it "sets #verification_strategy to Mock" do
103
- proxy = mock!(:foobar)
104
- proxy.double_definition_create.verification_strategy.class.should == RR::DoubleDefinitions::Strategies::Verification::Mock
105
- end
106
- end
107
- end
108
-
109
- describe "#stub!" do
110
- before do
111
- @strategy_method_name = :stub!
112
- end
113
-
114
- context "when passed a method_name argument" do
115
- it "sets #verification_strategy to Stub" do
116
- proxy = stub!(:foobar)
117
- proxy.double_definition_create.verification_strategy.class.should == RR::DoubleDefinitions::Strategies::Verification::Stub
118
- end
119
- end
120
- end
121
-
122
- describe "#dont_allow!" do
123
- before do
124
- @strategy_method_name = :dont_allow!
125
- end
126
-
127
- context "when passed a method_name argument" do
128
- it "sets #verification_strategy to DontAllow" do
129
- proxy = dont_allow!(:foobar)
130
- proxy.double_definition_create.verification_strategy.class.should == RR::DoubleDefinitions::Strategies::Verification::DontAllow
131
- end
132
- end
133
- end
134
- end
135
- end
136
- end
137
- end
@@ -1,98 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module Adapters
5
- describe RRMethods do
6
- attr_reader :space, :subject_1, :subject_2, :method_name
7
- it_should_behave_like "Swapped Space"
8
- it_should_behave_like "RR::Adapters::RRMethods"
9
- before do
10
- @subject_1 = Object.new
11
- @subject_2 = Object.new
12
- @method_name = :foobar
13
- end
14
-
15
- describe "#verify" do
16
- it "aliases #rr_verify" do
17
- RRMethods.instance_method("verify").should == RRMethods.instance_method("rr_verify")
18
- end
19
- end
20
-
21
- describe "#rr_verify" do
22
- it "verifies and deletes the double_injections" do
23
- double_1 = ::RR::Injections::DoubleInjection.find_or_create_by_subject(subject_1, method_name)
24
- double_1_verify_calls = 0
25
- double_1_reset_calls = 0
26
- (
27
- class << double_1;
28
- self;
29
- end).class_eval do
30
- define_method(:verify) do ||
31
- double_1_verify_calls += 1
32
- end
33
- define_method(:reset) do ||
34
- double_1_reset_calls += 1
35
- end
36
- end
37
- double_2 = ::RR::Injections::DoubleInjection.find_or_create_by_subject(subject_2, method_name)
38
- double_2_verify_calls = 0
39
- double_2_reset_calls = 0
40
- ( class << double_2; self; end).class_eval do
41
- define_method(:verify) do ||
42
- double_2_verify_calls += 1
43
- end
44
- define_method(:reset) do ||
45
- double_2_reset_calls += 1
46
- end
47
- end
48
-
49
- rr_verify
50
- double_1_verify_calls.should == 1
51
- double_2_verify_calls.should == 1
52
- double_1_reset_calls.should == 1
53
- double_1_reset_calls.should == 1
54
- end
55
- end
56
-
57
- describe "#reset" do
58
- it "aliases #rr_reset" do
59
- RRMethods.instance_method("reset").should == RRMethods.instance_method("rr_reset")
60
- end
61
- end
62
-
63
- describe "#rr_reset" do
64
- it "removes the ordered doubles" do
65
- mock(subject_1).foobar1.ordered
66
- mock(subject_2).foobar2.ordered
67
-
68
- ::RR::Injections::DoubleInjection.instances.should_not be_empty
69
-
70
- rr_reset
71
- ::RR::Injections::DoubleInjection.instances
72
- ::RR::Injections::DoubleInjection.instances.should be_empty
73
- end
74
-
75
- it "resets all double_injections" do
76
- double_1 = ::RR::Injections::DoubleInjection.find_or_create_by_subject(subject_1, method_name)
77
- double_1_reset_calls = 0
78
- ( class << double_1; self; end).class_eval do
79
- define_method(:reset) do ||
80
- double_1_reset_calls += 1
81
- end
82
- end
83
- double_2 = ::RR::Injections::DoubleInjection.find_or_create_by_subject(subject_2, method_name)
84
- double_2_reset_calls = 0
85
- ( class << double_2; self; end).class_eval do
86
- define_method(:reset) do ||
87
- double_2_reset_calls += 1
88
- end
89
- end
90
-
91
- rr_reset
92
- double_1_reset_calls.should == 1
93
- double_2_reset_calls.should == 1
94
- end
95
- end
96
- end
97
- end
98
- end
@@ -1,11 +0,0 @@
1
- # require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module Adapters
5
- describe RRMethods, :shared => true do
6
- before do
7
- extend RR::Adapters::RRMethods
8
- end
9
- end
10
- end
11
- end
@@ -1,13 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- describe RR::Adapters::RRMethods, "#any_times" do
4
- it_should_behave_like "RR::Adapters::RRMethods"
5
-
6
- it "returns an AnyTimesMatcher" do
7
- any_times.should == RR::TimesCalledMatchers::AnyTimesMatcher.new
8
- end
9
-
10
- it "rr_any_times returns an AnyTimesMatcher" do
11
- rr_any_times.should == RR::TimesCalledMatchers::AnyTimesMatcher.new
12
- end
13
- end
@@ -1,112 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module DoubleDefinitions
5
- describe ChildDoubleDefinitionCreate do
6
- attr_reader :parent_subject, :parent_double_definition_create, :parent_double_definition, :child_double_definition_create
7
- it_should_behave_like "Swapped Space"
8
- before(:each) do
9
- @parent_subject = Object.new
10
- @parent_double_definition_create = DoubleDefinitionCreate.new
11
- @parent_double_definition = DoubleDefinition.new(parent_double_definition_create)
12
- @child_double_definition_create = ChildDoubleDefinitionCreate.new(parent_double_definition)
13
- end
14
-
15
- describe "#root_subject" do
16
- it "returns the #parent_double_definition.root_subject" do
17
- child_subject = Object.new
18
- parent_double_definition_create.stub(parent_subject)
19
- child_double_definition_create.stub(child_subject)
20
- child_double_definition_create.root_subject.should == parent_subject
21
- end
22
- end
23
-
24
- describe "Strategies::Verification definitions" do
25
- describe "methods without !" do
26
- attr_reader :child_subject
27
- before do
28
- @child_subject = Object.new
29
- end
30
-
31
- describe "#mock" do
32
- context "when passed a subject" do
33
- it "sets #parent_double_definition.implementation to a Proc returning the passed-in subject" do
34
- parent_double_definition.implementation.should be_nil
35
- child_double_definition_create.mock(child_subject)
36
- parent_double_definition.implementation.call.should == child_subject
37
- end
38
- end
39
- end
40
-
41
- describe "#stub" do
42
- context "when passed a subject" do
43
- it "sets #parent_double_definition.implementation to a Proc returning the passed-in subject" do
44
- parent_double_definition.implementation.should be_nil
45
- child_double_definition_create.stub(child_subject)
46
- parent_double_definition.implementation.call.should == child_subject
47
- end
48
- end
49
- end
50
-
51
- describe "#dont_allow" do
52
- context "when passed a subject" do
53
- it "sets #parent_double_definition.implementation to a Proc returning the passed-in subject" do
54
- parent_double_definition.implementation.should be_nil
55
- child_double_definition_create.dont_allow(child_subject)
56
- parent_double_definition.implementation.call.should == child_subject
57
- end
58
- end
59
- end
60
- end
61
-
62
- describe "methods with !" do
63
- describe "#mock!" do
64
- it "sets #parent_double_definition.implementation to a Proc returning the #subject" do
65
- parent_double_definition.implementation.should be_nil
66
- child_subject = child_double_definition_create.mock!.__double_definition_create__.subject
67
- parent_double_definition.implementation.call.should == child_subject
68
- end
69
- end
70
-
71
- describe "#stub!" do
72
- it "sets #parent_double_definition.implementation to a Proc returning the #subject" do
73
- parent_double_definition.implementation.should be_nil
74
- child_subject = child_double_definition_create.stub!.__double_definition_create__.subject
75
- parent_double_definition.implementation.call.should == child_subject
76
- end
77
- end
78
-
79
- describe "#dont_allow!" do
80
- it "sets #parent_double_definition.implementation to a Proc returning the #subject" do
81
- parent_double_definition.implementation.should be_nil
82
- child_subject = child_double_definition_create.dont_allow!.__double_definition_create__.subject
83
- parent_double_definition.implementation.call.should == child_subject
84
- end
85
- end
86
- end
87
- end
88
-
89
- describe "Strategies::DoubleInjection definitions" do
90
- describe "methods without !" do
91
- describe "#instance_of" do
92
- it "raises a NoMethodError" do
93
- lambda do
94
- child_double_definition_create.instance_of
95
- end.should raise_error(NoMethodError)
96
- end
97
- end
98
- end
99
-
100
- describe "methods with !" do
101
- describe "#instance_of!" do
102
- it "raises a NoMethodError" do
103
- lambda do
104
- child_double_definition_create.instance_of!
105
- end.should raise_error(NoMethodError)
106
- end
107
- end
108
- end
109
- end
110
- end
111
- end
112
- end
@@ -1,91 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
-
3
- module RR
4
- module DoubleDefinitions
5
- describe DoubleDefinitionCreateBlankSlate do
6
- attr_reader :subject, :double_definition_create, :blank_slate
7
- it_should_behave_like "Swapped Space"
8
-
9
- before(:each) do
10
- @subject = Object.new
11
- @double_definition_create = DoubleDefinitionCreate.new
12
- double_definition_create.mock(subject)
13
- end
14
-
15
- describe ".new" do
16
- it "does not undefine object_id" do
17
- blank_slate = DoubleDefinitionCreateBlankSlate.new(double_definition_create)
18
- blank_slate.object_id.class.should == Fixnum
19
- end
20
-
21
- context "without block" do
22
- before do
23
- @blank_slate = DoubleDefinitionCreateBlankSlate.new(double_definition_create)
24
- end
25
-
26
- it "clears out all methods from proxy" do
27
- stub(subject).i_should_be_a_double.should be_instance_of(DoubleDefinition)
28
- end
29
- end
30
-
31
- context "when passed a block" do
32
- context "when the block has an arity of 1" do
33
- attr_reader :passed_in_argument
34
- before do
35
- passed_in_argument = nil
36
- stub(subject) do |b|
37
- passed_in_argument = b
38
- b.foobar(1, 2) {:one_two}
39
- b.foobar(1) {:one}
40
- b.foobar.with_any_args {:default}
41
- b.baz() {:baz_result}
42
- end
43
- @passed_in_argument = passed_in_argument
44
- end
45
-
46
- it "creates double_injections" do
47
- subject.foobar(1, 2).should == :one_two
48
- subject.foobar(1).should == :one
49
- subject.foobar(:something).should == :default
50
- subject.baz.should == :baz_result
51
- end
52
-
53
- it "passes the self into the block" do
54
- passed_in_argument.__double_definition_create__.should be_instance_of(
55
- ::RR::DoubleDefinitions::DoubleDefinitionCreate
56
- )
57
- end
58
- end
59
-
60
- context "when the block has an arity of 0" do
61
- attr_reader :self_value
62
- before do
63
- self_value = nil
64
- stub(subject) do ||
65
- self_value = self
66
- foobar(1, 2) {:one_two}
67
- foobar(1) {:one}
68
- foobar.with_any_args {:default}
69
- baz() {:baz_result}
70
- end
71
- @self_value = self_value
72
- end
73
-
74
- it "creates double_injections" do
75
- subject.foobar(1, 2).should == :one_two
76
- subject.foobar(1).should == :one
77
- subject.foobar(:something).should == :default
78
- subject.baz.should == :baz_result
79
- end
80
-
81
- it "evaluates the block with the context of self" do
82
- self_value.__double_definition_create__.should be_instance_of(
83
- ::RR::DoubleDefinitions::DoubleDefinitionCreate
84
- )
85
- end
86
- end
87
- end
88
- end
89
- end
90
- end
91
- end