rr 0.10.10 → 0.10.11

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 (50) hide show
  1. data/CHANGES +4 -0
  2. data/VERSION.yml +1 -1
  3. data/lib/rr.rb +5 -3
  4. data/lib/rr/adapters/rr_methods.rb +5 -5
  5. data/lib/rr/blank_slate.rb +17 -0
  6. data/lib/rr/double_definitions/{child_double_definition_creator.rb → child_double_definition_create.rb} +1 -1
  7. data/lib/rr/double_definitions/double_definition.rb +13 -11
  8. data/lib/rr/double_definitions/{double_definition_creator.rb → double_definition_create.rb} +52 -43
  9. data/lib/rr/double_definitions/double_definition_create_blank_slate.rb +26 -0
  10. data/lib/rr/double_definitions/strategies/implementation/implementation_strategy.rb +2 -2
  11. data/lib/rr/double_definitions/strategies/scope/instance.rb +1 -1
  12. data/lib/rr/double_definitions/strategies/scope/instance_of_class.rb +6 -6
  13. data/lib/rr/double_definitions/strategies/scope/scope_strategy.rb +2 -2
  14. data/lib/rr/double_definitions/strategies/strategy.rb +15 -16
  15. data/lib/rr/double_definitions/strategies/verification/mock.rb +1 -1
  16. data/lib/rr/double_definitions/strategies/verification/stub.rb +1 -1
  17. data/lib/rr/double_definitions/strategies/verification/verification_strategy.rb +2 -2
  18. data/lib/rr/injections/double_injection.rb +59 -4
  19. data/lib/rr/injections/injection.rb +6 -0
  20. data/lib/rr/injections/method_missing_injection.rb +13 -1
  21. data/lib/rr/injections/singleton_method_added_injection.rb +14 -3
  22. data/lib/rr/method_dispatches/base_method_dispatch.rb +2 -2
  23. data/lib/rr/method_dispatches/method_missing_dispatch.rb +2 -2
  24. data/lib/rr/recorded_calls.rb +1 -1
  25. data/lib/rr/space.rb +17 -68
  26. data/lib/rr/spy_verification_proxy.rb +1 -6
  27. data/spec/rr/adapters/rr_methods_creator_spec.rb +9 -21
  28. data/spec/rr/adapters/rr_methods_space_spec.rb +10 -25
  29. data/spec/rr/double_definitions/child_double_definition_creator_spec.rb +16 -16
  30. data/spec/rr/double_definitions/double_definition_create_blank_slate_spec.rb +87 -0
  31. data/spec/rr/double_definitions/{double_definition_creator_spec.rb → double_definition_create_spec.rb} +64 -72
  32. data/spec/rr/double_injection/double_injection_verify_spec.rb +2 -2
  33. data/spec/rr/expectations/times_called_expectation/times_called_expectation_any_times_spec.rb +5 -29
  34. data/spec/rr/expectations/times_called_expectation/times_called_expectation_at_least_spec.rb +7 -39
  35. data/spec/rr/expectations/times_called_expectation/times_called_expectation_at_most_spec.rb +19 -47
  36. data/spec/rr/expectations/times_called_expectation/times_called_expectation_helper.rb +1 -9
  37. data/spec/rr/expectations/times_called_expectation/times_called_expectation_integer_spec.rb +18 -64
  38. data/spec/rr/expectations/times_called_expectation/times_called_expectation_proc_spec.rb +7 -53
  39. data/spec/rr/expectations/times_called_expectation/times_called_expectation_range_spec.rb +12 -56
  40. data/spec/rr/rspec/rspec_adapter_spec.rb +8 -11
  41. data/spec/rr/space/space_spec.rb +72 -212
  42. data/spec/spec_helper.rb +0 -76
  43. data/spec/spy_verification_spec.rb +1 -1
  44. metadata +8 -11
  45. data/lib/rr/double_definitions/double_definition_creator_proxy.rb +0 -37
  46. data/ruby_19_spec.rb +0 -12
  47. data/spec/rr/double_definitions/double_definition_creator_proxy_spec.rb +0 -124
  48. data/spec/rr/double_definitions/double_definition_spec.rb +0 -1168
  49. data/spec/rr/double_spec.rb +0 -361
  50. data/spec/rr/expectations/times_called_expectation/times_called_expectation_spec.rb +0 -38
@@ -20,7 +20,7 @@ module RR
20
20
 
21
21
  describe "#rr_verify" do
22
22
  it "verifies and deletes the double_injections" do
23
- double_1 = space.double_injection(subject_1, method_name)
23
+ double_1 = Injections::DoubleInjection.create(subject_1, method_name)
24
24
  double_1_verify_calls = 0
25
25
  double_1_reset_calls = 0
26
26
  (
@@ -34,7 +34,7 @@ module RR
34
34
  double_1_reset_calls += 1
35
35
  end
36
36
  end
37
- double_2 = space.double_injection(subject_2, method_name)
37
+ double_2 = Injections::DoubleInjection.create(subject_2, method_name)
38
38
  double_2_verify_calls = 0
39
39
  double_2_reset_calls = 0
40
40
  (
@@ -65,41 +65,26 @@ module RR
65
65
 
66
66
  describe "#rr_reset" do
67
67
  it "removes the ordered doubles" do
68
- double_1 = new_double(
69
- space.double_injection(subject_1, :foobar1),
70
- RR::DoubleDefinitions::DoubleDefinition.new(creator = RR::DoubleDefinitions::DoubleDefinitionCreator.new, subject_1)
71
- )
72
- double_2 = new_double(
73
- space.double_injection(subject_2, :foobar2),
74
- RR::DoubleDefinitions::DoubleDefinition.new(creator = RR::DoubleDefinitions::DoubleDefinitionCreator.new, subject_2)
75
- )
68
+ mock(subject_1).foobar1.ordered
69
+ mock(subject_2).foobar2.ordered
76
70
 
77
- double_1.definition.ordered
78
- double_2.definition.ordered
79
-
80
- space.ordered_doubles.should_not be_empty
71
+ Injections::DoubleInjection.instances.should_not be_empty
81
72
 
82
73
  rr_reset
83
- space.ordered_doubles.should be_empty
74
+ Injections::DoubleInjection.instances.should be_empty
84
75
  end
85
76
 
86
77
  it "resets all double_injections" do
87
- double_1 = space.double_injection(subject_1, method_name)
78
+ double_1 = Injections::DoubleInjection.create(subject_1, method_name)
88
79
  double_1_reset_calls = 0
89
- (
90
- class << double_1;
91
- self;
92
- end).class_eval do
80
+ ( class << double_1; self; end).class_eval do
93
81
  define_method(:reset) do ||
94
82
  double_1_reset_calls += 1
95
83
  end
96
84
  end
97
- double_2 = space.double_injection(subject_2, method_name)
85
+ double_2 = Injections::DoubleInjection.create(subject_2, method_name)
98
86
  double_2_reset_calls = 0
99
- (
100
- class << double_2;
101
- self;
102
- end).class_eval do
87
+ ( class << double_2; self; end).class_eval do
103
88
  define_method(:reset) do ||
104
89
  double_2_reset_calls += 1
105
90
  end
@@ -2,22 +2,22 @@ require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
2
 
3
3
  module RR
4
4
  module DoubleDefinitions
5
- describe ChildDoubleDefinitionCreator do
6
- attr_reader :parent_subject, :parent_double_definition_creator, :parent_double_definition, :child_double_definition_creator
5
+ describe ChildDoubleDefinitionCreate do
6
+ attr_reader :parent_subject, :parent_double_definition_create, :parent_double_definition, :child_double_definition_create
7
7
  it_should_behave_like "Swapped Space"
8
8
  before(:each) do
9
9
  @parent_subject = Object.new
10
- @parent_double_definition_creator = DoubleDefinitionCreator.new
11
- @parent_double_definition = DoubleDefinition.new(parent_double_definition_creator, parent_subject)
12
- @child_double_definition_creator = ChildDoubleDefinitionCreator.new(parent_double_definition)
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
13
  end
14
14
 
15
15
  describe "#root_subject" do
16
16
  it "returns the #parent_double_definition.root_subject" do
17
17
  child_subject = Object.new
18
- parent_double_definition_creator.stub(parent_subject)
19
- child_double_definition_creator.stub(child_subject)
20
- child_double_definition_creator.root_subject.should == parent_subject
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
21
  end
22
22
  end
23
23
 
@@ -32,7 +32,7 @@ module RR
32
32
  context "when passed a subject" do
33
33
  it "sets #parent_double_definition.implementation to a Proc returning the passed-in subject" do
34
34
  parent_double_definition.implementation.should be_nil
35
- child_double_definition_creator.mock(child_subject)
35
+ child_double_definition_create.mock(child_subject)
36
36
  parent_double_definition.implementation.call.should == child_subject
37
37
  end
38
38
  end
@@ -42,7 +42,7 @@ module RR
42
42
  context "when passed a subject" do
43
43
  it "sets #parent_double_definition.implementation to a Proc returning the passed-in subject" do
44
44
  parent_double_definition.implementation.should be_nil
45
- child_double_definition_creator.stub(child_subject)
45
+ child_double_definition_create.stub(child_subject)
46
46
  parent_double_definition.implementation.call.should == child_subject
47
47
  end
48
48
  end
@@ -52,7 +52,7 @@ module RR
52
52
  context "when passed a subject" do
53
53
  it "sets #parent_double_definition.implementation to a Proc returning the passed-in subject" do
54
54
  parent_double_definition.implementation.should be_nil
55
- child_double_definition_creator.dont_allow(child_subject)
55
+ child_double_definition_create.dont_allow(child_subject)
56
56
  parent_double_definition.implementation.call.should == child_subject
57
57
  end
58
58
  end
@@ -63,7 +63,7 @@ module RR
63
63
  describe "#mock!" do
64
64
  it "sets #parent_double_definition.implementation to a Proc returning the #subject" do
65
65
  parent_double_definition.implementation.should be_nil
66
- child_subject = child_double_definition_creator.mock!.__creator__.subject
66
+ child_subject = child_double_definition_create.mock!.__double_definition_create__.subject
67
67
  parent_double_definition.implementation.call.should == child_subject
68
68
  end
69
69
  end
@@ -71,7 +71,7 @@ module RR
71
71
  describe "#stub!" do
72
72
  it "sets #parent_double_definition.implementation to a Proc returning the #subject" do
73
73
  parent_double_definition.implementation.should be_nil
74
- child_subject = child_double_definition_creator.stub!.__creator__.subject
74
+ child_subject = child_double_definition_create.stub!.__double_definition_create__.subject
75
75
  parent_double_definition.implementation.call.should == child_subject
76
76
  end
77
77
  end
@@ -79,7 +79,7 @@ module RR
79
79
  describe "#dont_allow!" do
80
80
  it "sets #parent_double_definition.implementation to a Proc returning the #subject" do
81
81
  parent_double_definition.implementation.should be_nil
82
- child_subject = child_double_definition_creator.dont_allow!.__creator__.subject
82
+ child_subject = child_double_definition_create.dont_allow!.__double_definition_create__.subject
83
83
  parent_double_definition.implementation.call.should == child_subject
84
84
  end
85
85
  end
@@ -91,7 +91,7 @@ module RR
91
91
  describe "#instance_of" do
92
92
  it "raises a NoMethodError" do
93
93
  lambda do
94
- child_double_definition_creator.instance_of
94
+ child_double_definition_create.instance_of
95
95
  end.should raise_error(NoMethodError)
96
96
  end
97
97
  end
@@ -101,7 +101,7 @@ module RR
101
101
  describe "#instance_of!" do
102
102
  it "raises a NoMethodError" do
103
103
  lambda do
104
- child_double_definition_creator.instance_of!
104
+ child_double_definition_create.instance_of!
105
105
  end.should raise_error(NoMethodError)
106
106
  end
107
107
  end
@@ -0,0 +1,87 @@
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(DoubleDefinitions::DoubleDefinitionCreate)
55
+ end
56
+ end
57
+
58
+ context "when the block has an arity of 0" do
59
+ attr_reader :self_value
60
+ before do
61
+ self_value = nil
62
+ stub(subject) do ||
63
+ self_value = self
64
+ foobar(1, 2) {:one_two}
65
+ foobar(1) {:one}
66
+ foobar.with_any_args {:default}
67
+ baz() {:baz_result}
68
+ end
69
+ @self_value = self_value
70
+ end
71
+
72
+ it "creates double_injections" do
73
+ subject.foobar(1, 2).should == :one_two
74
+ subject.foobar(1).should == :one
75
+ subject.foobar(:something).should == :default
76
+ subject.baz.should == :baz_result
77
+ end
78
+
79
+ it "evaluates the block with the context of self" do
80
+ self_value.__double_definition_create__.should be_instance_of(DoubleDefinitions::DoubleDefinitionCreate)
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
@@ -2,25 +2,25 @@ require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
2
 
3
3
  module RR
4
4
  module DoubleDefinitions
5
- describe DoubleDefinitionCreator do
6
- attr_reader :creator, :subject, :strategy_method_name
5
+ describe DoubleDefinitionCreate do
6
+ attr_reader :double_definition_create, :subject, :strategy_method_name
7
7
  it_should_behave_like "Swapped Space"
8
8
  before(:each) do
9
9
  @subject = Object.new
10
- @creator = DoubleDefinitionCreator.new
10
+ @double_definition_create = DoubleDefinitionCreate.new
11
11
  end
12
12
 
13
13
  describe "#root_subject" do
14
14
  it "returns #subject" do
15
- creator.stub(subject).foobar
16
- creator.root_subject.should == subject
15
+ double_definition_create.stub(subject).foobar
16
+ double_definition_create.root_subject.should == subject
17
17
  end
18
18
  end
19
19
 
20
20
  describe "StrategySetupMethods" do
21
21
  describe "normal strategy definitions" do
22
22
  def call_strategy(*args, &block)
23
- creator.__send__(strategy_method_name, *args, &block)
23
+ double_definition_create.__send__(strategy_method_name, *args, &block)
24
24
  end
25
25
 
26
26
  describe "#mock" do
@@ -28,17 +28,15 @@ module RR
28
28
  @strategy_method_name = :mock
29
29
  end
30
30
 
31
- send("normal strategy definition")
32
-
33
31
  context "when passing no args" do
34
32
  it "returns self" do
35
- call_strategy.should === creator
33
+ call_strategy.should === double_definition_create
36
34
  end
37
35
  end
38
36
 
39
37
  context "when passed a subject and a method_name argument" do
40
38
  it "creates a mock Double for method" do
41
- double_definition = creator.mock(subject, :foobar).returns {:baz}
39
+ double_definition = double_definition_create.mock(subject, :foobar).returns {:baz}
42
40
  double_definition.times_matcher.should == RR::TimesCalledMatchers::IntegerMatcher.new(1)
43
41
  double_definition.argument_expectation.class.should == RR::Expectations::ArgumentEqualityExpectation
44
42
  double_definition.argument_expectation.expected_arguments.should == []
@@ -48,7 +46,7 @@ module RR
48
46
 
49
47
  context "when already using an ImplementationStrategy" do
50
48
  it "raises a DoubleDefinitionError" do
51
- creator.mock
49
+ double_definition_create.mock
52
50
  lambda do
53
51
  call_strategy
54
52
  end.should raise_error(RR::Errors::DoubleDefinitionError, "This Double already has a mock strategy")
@@ -61,17 +59,15 @@ module RR
61
59
  @strategy_method_name = :stub
62
60
  end
63
61
 
64
- send("normal strategy definition")
65
-
66
62
  context "when passing no args" do
67
63
  it "returns self" do
68
- call_strategy.should === creator
64
+ call_strategy.should === double_definition_create
69
65
  end
70
66
  end
71
67
 
72
68
  context "when passed subject and a method_name argument" do
73
69
  it "creates a stub Double for method when passed a method_name argument" do
74
- double_definition = creator.stub(subject, :foobar).returns {:baz}
70
+ double_definition = double_definition_create.stub(subject, :foobar).returns {:baz}
75
71
  double_definition.times_matcher.should == RR::TimesCalledMatchers::AnyTimesMatcher.new
76
72
  double_definition.argument_expectation.class.should == RR::Expectations::AnyArgumentExpectation
77
73
  subject.foobar.should == :baz
@@ -80,7 +76,7 @@ module RR
80
76
 
81
77
  context "when already using an ImplementationStrategy" do
82
78
  it "raises a DoubleDefinitionError" do
83
- creator.mock
79
+ double_definition_create.mock
84
80
  lambda do
85
81
  call_strategy
86
82
  end.should raise_error(RR::Errors::DoubleDefinitionError, "This Double already has a mock strategy")
@@ -93,24 +89,22 @@ module RR
93
89
  @strategy_method_name = :dont_allow
94
90
  end
95
91
 
96
- send("normal strategy definition")
97
-
98
92
  context "when passing no args" do
99
93
  it "returns self" do
100
- call_strategy.should === creator
94
+ call_strategy.should === double_definition_create
101
95
  end
102
96
  end
103
97
 
104
98
  it "raises error when proxied" do
105
- creator.proxy
99
+ double_definition_create.proxy
106
100
  lambda do
107
- creator.dont_allow
101
+ double_definition_create.dont_allow
108
102
  end.should raise_error(RR::Errors::DoubleDefinitionError, "Doubles cannot be proxied when using dont_allow strategy")
109
103
  end
110
104
 
111
105
  context "when passed a subject and a method_name argument_expectation" do
112
106
  it "creates a mock Double for method" do
113
- double_definition = creator.dont_allow(subject, :foobar)
107
+ double_definition = double_definition_create.dont_allow(subject, :foobar)
114
108
  double_definition.times_matcher.should == RR::TimesCalledMatchers::NeverMatcher.new
115
109
  double_definition.argument_expectation.class.should == RR::Expectations::AnyArgumentExpectation
116
110
 
@@ -123,7 +117,7 @@ module RR
123
117
 
124
118
  context "when already using an ImplementationStrategy" do
125
119
  it "raises a DoubleDefinitionError" do
126
- creator.mock
120
+ double_definition_create.mock
127
121
  lambda do
128
122
  call_strategy
129
123
  end.should raise_error(RR::Errors::DoubleDefinitionError, "This Double already has a mock strategy")
@@ -135,7 +129,7 @@ module RR
135
129
  describe "! strategy definitions" do
136
130
  attr_reader :strategy_method_name
137
131
  def call_strategy(*args, &definition_eval_block)
138
- creator.__send__(strategy_method_name, *args, &definition_eval_block)
132
+ double_definition_create.__send__(strategy_method_name, *args, &definition_eval_block)
139
133
  end
140
134
 
141
135
  describe "#mock!" do
@@ -143,12 +137,11 @@ module RR
143
137
  @strategy_method_name = :mock!
144
138
  end
145
139
 
146
- send("! strategy definition")
147
-
148
140
  context "when passed a method_name argument" do
149
141
  it "sets #verification_strategy to Mock" do
150
- creator.mock!(:foobar)
151
- creator.verification_strategy.class.should == Strategies::Verification::Mock
142
+ double_definition_create.mock!(:foobar)
143
+ double_definition_create.verification_strategy.class.should == Strategies::Verification::Mock
144
+ lambda {RR.verify}.should raise_error(::RR::Errors::TimesCalledError)
152
145
  end
153
146
  end
154
147
  end
@@ -158,12 +151,10 @@ module RR
158
151
  @strategy_method_name = :stub!
159
152
  end
160
153
 
161
- send("! strategy definition")
162
-
163
154
  context "when passed a method_name argument" do
164
155
  it "sets #verification_strategy to Stub" do
165
- creator.stub!(:foobar)
166
- creator.verification_strategy.class.should == Strategies::Verification::Stub
156
+ double_definition_create.stub!(:foobar)
157
+ double_definition_create.verification_strategy.class.should == Strategies::Verification::Stub
167
158
  end
168
159
  end
169
160
  end
@@ -173,12 +164,10 @@ module RR
173
164
  @strategy_method_name = :dont_allow!
174
165
  end
175
166
 
176
- send("! strategy definition")
177
-
178
167
  context "when passed a method_name argument" do
179
168
  it "sets #verification_strategy to DontAllow" do
180
- creator.dont_allow!(:foobar)
181
- creator.verification_strategy.class.should == Strategies::Verification::DontAllow
169
+ double_definition_create.dont_allow!(:foobar)
170
+ double_definition_create.verification_strategy.class.should == Strategies::Verification::DontAllow
182
171
  end
183
172
  end
184
173
  end
@@ -195,16 +184,16 @@ module RR
195
184
 
196
185
  context "when already using Strategies::Verification::DontAllow" do
197
186
  it "raises error" do
198
- creator.dont_allow
187
+ double_definition_create.dont_allow
199
188
  lambda do
200
- creator.proxy
189
+ double_definition_create.proxy
201
190
  end.should raise_error(RR::Errors::DoubleDefinitionError, "Doubles cannot be proxied when using dont_allow strategy")
202
191
  end
203
192
  end
204
193
 
205
194
  context "when passed a method_name argument" do
206
195
  it "creates a proxy Double for method" do
207
- double_definition = creator.stub.proxy(subject, :foobar).after_call {:baz}
196
+ double_definition = double_definition_create.stub.proxy(subject, :foobar).after_call {:baz}
208
197
  double_definition.times_matcher.should == RR::TimesCalledMatchers::AnyTimesMatcher.new
209
198
  double_definition.argument_expectation.class.should == RR::Expectations::AnyArgumentExpectation
210
199
  subject.foobar.should == :baz
@@ -216,7 +205,7 @@ module RR
216
205
  context "when not passed a class" do
217
206
  it "raises an ArgumentError" do
218
207
  lambda do
219
- creator.instance_of(Object.new)
208
+ double_definition_create.instance_of(Object.new)
220
209
  end.should raise_error(ArgumentError, "instance_of only accepts class objects")
221
210
  end
222
211
  end
@@ -224,7 +213,7 @@ module RR
224
213
  context "when passed a method_name argument" do
225
214
  it "creates a proxy Double for method" do
226
215
  klass = Class.new
227
- double_definition = creator.stub.instance_of(klass, :foobar).returns {:baz}
216
+ double_definition = double_definition_create.stub.instance_of(klass, :foobar).returns {:baz}
228
217
  double_definition.times_matcher.should == RR::TimesCalledMatchers::AnyTimesMatcher.new
229
218
  double_definition.argument_expectation.class.should == RR::Expectations::AnyArgumentExpectation
230
219
  klass.new.foobar.should == :baz
@@ -238,8 +227,8 @@ module RR
238
227
  end
239
228
 
240
229
  context "when passed no arguments" do
241
- it "returns a DoubleDefinitionCreator" do
242
- instance_of.instance_of.should be_instance_of(DoubleDefinitionCreator)
230
+ it "returns a DoubleDefinitiondouble_definition_create" do
231
+ instance_of.instance_of.should be_instance_of(DoubleDefinitionCreate)
243
232
  end
244
233
  end
245
234
 
@@ -262,7 +251,7 @@ module RR
262
251
  context "when #verification_strategy is not set" do
263
252
  it "raises a DoubleDefinitionError" do
264
253
  lambda do
265
- creator.create(:foobar, 1, 2)
254
+ double_definition_create.call(:foobar, 1, 2)
266
255
  end.should raise_error(RR::Errors::DoubleDefinitionError, "This Double has no strategy")
267
256
  end
268
257
  end
@@ -270,18 +259,19 @@ module RR
270
259
  context "when #verification_strategy is a Mock" do
271
260
  context "when #implementation_strategy is a Reimplementation" do
272
261
  before do
273
- creator.mock(subject)
262
+ double_definition_create.mock(subject)
274
263
  end
275
264
 
276
265
  it "sets expectation on the #subject that it will be sent the method_name once with the passed-in arguments" do
277
- creator.create(:foobar, 1, 2)
266
+ mock(subject).foobar(1, 2)
278
267
  subject.foobar(1, 2)
279
268
  lambda {subject.foobar(1, 2)}.should raise_error(RR::Errors::TimesCalledError)
269
+ lambda {RR.verify}.should raise_error(RR::Errors::TimesCalledError)
280
270
  end
281
271
 
282
272
  describe "#subject.method_name being called" do
283
273
  it "returns the return value of the Double#returns block" do
284
- creator.create(:foobar, 1, 2) {:baz}
274
+ double_definition_create.call(:foobar, 1, 2) {:baz}
285
275
  subject.foobar(1, 2).should == :baz
286
276
  end
287
277
  end
@@ -289,17 +279,19 @@ module RR
289
279
 
290
280
  context "when #implementation_strategy is a Proxy" do
291
281
  before do
292
- creator.mock
293
- creator.proxy(subject)
282
+ double_definition_create.mock
283
+ double_definition_create.proxy(subject)
294
284
  end
295
285
 
296
286
  it "sets expectation on the #subject that it will be sent the method_name once with the passed-in arguments" do
297
287
  def subject.foobar(*args)
298
- :baz;
288
+ :baz
299
289
  end
300
- creator.create(:foobar, 1, 2)
290
+ mock(subject).foobar(1, 2)
291
+
301
292
  subject.foobar(1, 2)
302
293
  lambda {subject.foobar(1, 2)}.should raise_error(RR::Errors::TimesCalledError)
294
+ lambda {RR.verify}.should raise_error(RR::Errors::TimesCalledError)
303
295
  end
304
296
 
305
297
  describe "#subject.method_name being called" do
@@ -310,7 +302,7 @@ module RR
310
302
  original_method_called = true
311
303
  end
312
304
  end
313
- creator.create(:foobar, 1, 2)
305
+ double_definition_create.call(:foobar, 1, 2)
314
306
  subject.foobar(1, 2)
315
307
  original_method_called.should be_true
316
308
  end
@@ -320,7 +312,7 @@ module RR
320
312
  def subject.foobar(*args)
321
313
  :baz;
322
314
  end
323
- creator.create(:foobar, 1, 2)
315
+ double_definition_create.call(:foobar, 1, 2)
324
316
  subject.foobar(1, 2).should == :baz
325
317
  end
326
318
  end
@@ -335,7 +327,7 @@ module RR
335
327
  end
336
328
 
337
329
  it "calls the block with the return value of the original method" do
338
- creator.create(:foobar, 1, 2) do |value|
330
+ double_definition_create.call(:foobar, 1, 2) do |value|
339
331
  mock(value).a_method {99}
340
332
  value
341
333
  end
@@ -344,7 +336,7 @@ module RR
344
336
  end
345
337
 
346
338
  it "returns the return value of the block" do
347
- creator.create(:foobar, 1, 2) do |value|
339
+ double_definition_create.call(:foobar, 1, 2) do |value|
348
340
  :something_else
349
341
  end
350
342
  subject.foobar(1, 2).should == :something_else
@@ -357,12 +349,12 @@ module RR
357
349
  context "when #verification_strategy is a Stub" do
358
350
  context "when #implementation_strategy is a Reimplementation" do
359
351
  before do
360
- creator.stub(subject)
352
+ double_definition_create.stub(subject)
361
353
  end
362
354
 
363
355
  context "when not passed a block" do
364
356
  it "returns nil" do
365
- creator.create(:foobar)
357
+ double_definition_create.call(:foobar)
366
358
  subject.foobar.should be_nil
367
359
  end
368
360
  end
@@ -370,7 +362,7 @@ module RR
370
362
  context "when passed a block" do
371
363
  describe "#subject.method_name being called" do
372
364
  it "returns the return value of the block" do
373
- creator.create(:foobar) {:baz}
365
+ double_definition_create.call(:foobar) {:baz}
374
366
  subject.foobar.should == :baz
375
367
  end
376
368
  end
@@ -379,7 +371,7 @@ module RR
379
371
  context "when not passed args" do
380
372
  describe "#subject.method_name being called with any arguments" do
381
373
  it "invokes the implementation of the Stub" do
382
- creator.create(:foobar) {:baz}
374
+ double_definition_create.call(:foobar) {:baz}
383
375
  subject.foobar(1, 2).should == :baz
384
376
  subject.foobar().should == :baz
385
377
  subject.foobar([]).should == :baz
@@ -390,14 +382,14 @@ module RR
390
382
  context "when passed args" do
391
383
  describe "#subject.method_name being called with the passed-in arguments" do
392
384
  it "invokes the implementation of the Stub" do
393
- creator.create(:foobar, 1, 2) {:baz}
385
+ double_definition_create.call(:foobar, 1, 2) {:baz}
394
386
  subject.foobar(1, 2).should == :baz
395
387
  end
396
388
  end
397
389
 
398
390
  describe "#subject.method_name being called with different arguments" do
399
391
  it "raises a DoubleNotFoundError" do
400
- creator.create(:foobar, 1, 2) {:baz}
392
+ double_definition_create.call(:foobar, 1, 2) {:baz}
401
393
  lambda do
402
394
  subject.foobar
403
395
  end.should raise_error(RR::Errors::DoubleNotFoundError)
@@ -411,14 +403,14 @@ module RR
411
403
  def subject.foobar(*args)
412
404
  :original_return_value
413
405
  end
414
- creator.stub
415
- creator.proxy(subject)
406
+ double_definition_create.stub
407
+ double_definition_create.proxy(subject)
416
408
  end
417
409
 
418
410
  context "when not passed a block" do
419
411
  describe "#subject.method_name being called" do
420
412
  it "invokes the original implementanion" do
421
- creator.create(:foobar)
413
+ double_definition_create.call(:foobar)
422
414
  subject.foobar.should == :original_return_value
423
415
  end
424
416
  end
@@ -428,7 +420,7 @@ module RR
428
420
  describe "#subject.method_name being called" do
429
421
  it "invokes the original implementanion and invokes the block with the return value of the original implementanion" do
430
422
  passed_in_value = nil
431
- creator.create(:foobar) do |original_return_value|
423
+ double_definition_create.call(:foobar) do |original_return_value|
432
424
  passed_in_value = original_return_value
433
425
  end
434
426
  subject.foobar
@@ -436,7 +428,7 @@ module RR
436
428
  end
437
429
 
438
430
  it "returns the return value of the block" do
439
- creator.create(:foobar) do |original_return_value|
431
+ double_definition_create.call(:foobar) do |original_return_value|
440
432
  :new_return_value
441
433
  end
442
434
  subject.foobar.should == :new_return_value
@@ -447,14 +439,14 @@ module RR
447
439
  context "when passed args" do
448
440
  describe "#subject.method_name being called with the passed-in arguments" do
449
441
  it "invokes the implementation of the Stub" do
450
- creator.create(:foobar, 1, 2) {:baz}
442
+ double_definition_create.call(:foobar, 1, 2) {:baz}
451
443
  subject.foobar(1, 2).should == :baz
452
444
  end
453
445
  end
454
446
 
455
447
  describe "#subject.method_name being called with different arguments" do
456
448
  it "raises a DoubleNotFoundError" do
457
- creator.create(:foobar, 1, 2) {:baz}
449
+ double_definition_create.call(:foobar, 1, 2) {:baz}
458
450
  lambda do
459
451
  subject.foobar
460
452
  end.should raise_error(RR::Errors::DoubleNotFoundError)
@@ -466,13 +458,13 @@ module RR
466
458
 
467
459
  context "when #verification_strategy is a DontAllow" do
468
460
  before do
469
- creator.dont_allow(subject)
461
+ double_definition_create.dont_allow(subject)
470
462
  end
471
463
 
472
464
  context "when not passed args" do
473
465
  describe "#subject.method_name being called with any arguments" do
474
466
  it "raises a TimesCalledError" do
475
- creator.create(:foobar)
467
+ double_definition_create.call(:foobar)
476
468
  lambda {subject.foobar}.should raise_error(RR::Errors::TimesCalledError)
477
469
  lambda {subject.foobar(1, 2)}.should raise_error(RR::Errors::TimesCalledError)
478
470
  end
@@ -482,14 +474,14 @@ module RR
482
474
  context "when passed args" do
483
475
  describe "#subject.method_name being called with the passed-in arguments" do
484
476
  it "raises a TimesCalledError" do
485
- creator.create(:foobar, 1, 2)
477
+ double_definition_create.call(:foobar, 1, 2)
486
478
  lambda {subject.foobar(1, 2)}.should raise_error(RR::Errors::TimesCalledError)
487
479
  end
488
480
  end
489
481
 
490
482
  describe "#subject.method_name being called with different arguments" do
491
483
  it "raises a DoubleNotFoundError" do
492
- creator.create(:foobar, 1, 2)
484
+ double_definition_create.call(:foobar, 1, 2)
493
485
  lambda {subject.foobar()}.should raise_error(RR::Errors::DoubleNotFoundError)
494
486
  end
495
487
  end