rr 0.3.8 → 0.3.9

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,6 @@
1
+ * 0.3.9
2
+ - Alias probe to proxy
3
+
1
4
  * 0.3.8
2
5
  - Implemented [#13009] Better error mesage from TimesCalledMatcher
3
6
 
data/README CHANGED
@@ -40,7 +40,7 @@ This technique is also useful for verifying that you are mocking exists and
40
40
  functions proberly, thereby testing you interface.
41
41
  For example, using ActiveRecord:
42
42
 
43
- probe(User).find('5') do |user|
43
+ mock.probe(User).find('5') do |user|
44
44
  mock.probe(user).projects do |projects|
45
45
  projects[0..3]
46
46
  end
data/Rakefile CHANGED
@@ -25,7 +25,7 @@ def run_suite
25
25
  end
26
26
 
27
27
  PKG_NAME = "rr"
28
- PKG_VERSION = "0.3.8"
28
+ PKG_VERSION = "0.3.9"
29
29
  PKG_FILES = FileList[
30
30
  '[A-Z]*',
31
31
  '*.rb',
@@ -62,7 +62,7 @@ describe "RR mock:" do
62
62
  end
63
63
  end
64
64
 
65
- describe "RR probe:" do
65
+ describe "RR probe or proxy:" do
66
66
  it_should_behave_like "RR"
67
67
 
68
68
  it "probes via inline call" do
@@ -72,7 +72,7 @@ describe "RR probe:" do
72
72
  proc {@obj.to_s}.should raise_error
73
73
  end
74
74
 
75
- it "allows ordering" do
75
+ it "probe allows ordering" do
76
76
  def @obj.to_s(arg)
77
77
  "Original to_s with arg #{arg}"
78
78
  end
@@ -85,6 +85,19 @@ describe "RR probe:" do
85
85
  proc {@obj.to_s(:bar)}.should raise_error(RR::Errors::TimesCalledError)
86
86
  end
87
87
 
88
+ it "proxy allows ordering" do
89
+ def @obj.to_s(arg)
90
+ "Original to_s with arg #{arg}"
91
+ end
92
+ mock.proxy(@obj).to_s(:foo).ordered
93
+ mock.proxy(@obj).to_s(:bar).twice.ordered
94
+
95
+ @obj.to_s(:foo).should == "Original to_s with arg foo"
96
+ @obj.to_s(:bar).should == "Original to_s with arg bar"
97
+ @obj.to_s(:bar).should == "Original to_s with arg bar"
98
+ proc {@obj.to_s(:bar)}.should raise_error(RR::Errors::TimesCalledError)
99
+ end
100
+
88
101
  it "probes via block" do
89
102
  def @obj.foobar_1(*args)
90
103
  :original_value_1
@@ -104,6 +117,26 @@ describe "RR probe:" do
104
117
  @obj.foobar_2.should == :original_value_2
105
118
  proc {@obj.foobar_2(:blah)}.should raise_error
106
119
  end
120
+
121
+ it "proxies via block" do
122
+ def @obj.foobar_1(*args)
123
+ :original_value_1
124
+ end
125
+
126
+ def @obj.foobar_2
127
+ :original_value_2
128
+ end
129
+
130
+ mock.proxy @obj do |c|
131
+ c.foobar_1(1)
132
+ c.foobar_2
133
+ end
134
+ @obj.foobar_1(1).should == :original_value_1
135
+ proc {@obj.foobar_1(:blah)}.should raise_error
136
+
137
+ @obj.foobar_2.should == :original_value_2
138
+ proc {@obj.foobar_2(:blah)}.should raise_error
139
+ end
107
140
  end
108
141
 
109
142
  describe "RR stub:" do
@@ -49,3 +49,17 @@ describe RR, "#stub and #probe" do
49
49
  @subject.foobar.should == :baz
50
50
  end
51
51
  end
52
+
53
+ describe RR, "#stub and #proxy" do
54
+ before do
55
+ @subject = Object.new
56
+ def @subject.foobar
57
+ :baz
58
+ end
59
+ end
60
+
61
+ it "creates a probe Double Scenario" do
62
+ stub.proxy(@subject).foobar
63
+ @subject.foobar.should == :baz
64
+ end
65
+ end
@@ -205,7 +205,7 @@ describe ScenarioCreator, "#do_not_call" do
205
205
  end
206
206
  end
207
207
 
208
- describe ScenarioCreator, "#probe and #stub" do
208
+ describe ScenarioCreator, "(#probe or #proxy) and #stub" do
209
209
  it_should_behave_like "RR::ScenarioCreator"
210
210
 
211
211
  before do
@@ -233,6 +233,13 @@ describe ScenarioCreator, "#probe and #stub" do
233
233
  @subject.foobar(1, 2).should == :baz
234
234
  end
235
235
 
236
+ it "sets up the RR proxy call chain" do
237
+ scenario = @creator.stub.proxy(@subject).foobar(1, 2) {:baz}
238
+ scenario.times_matcher.should == TimesCalledMatchers::AnyTimesMatcher.new
239
+ scenario.argument_expectation.class.should == RR::Expectations::ArgumentEqualityExpectation
240
+ @subject.foobar(1, 2).should == :baz
241
+ end
242
+
236
243
  it "creates a probe Scenario for method when passed a second argument" do
237
244
  scenario = @creator.stub.probe(@subject, :foobar)
238
245
  scenario.with(1, 2) {:baz}
@@ -240,6 +247,14 @@ describe ScenarioCreator, "#probe and #stub" do
240
247
  scenario.argument_expectation.class.should == RR::Expectations::ArgumentEqualityExpectation
241
248
  @subject.foobar(1, 2).should == :baz
242
249
  end
250
+
251
+ it "creates a proxy Scenario for method when passed a second argument" do
252
+ scenario = @creator.stub.proxy(@subject, :foobar)
253
+ scenario.with(1, 2) {:baz}
254
+ scenario.times_matcher.should == TimesCalledMatchers::AnyTimesMatcher.new
255
+ scenario.argument_expectation.class.should == RR::Expectations::ArgumentEqualityExpectation
256
+ @subject.foobar(1, 2).should == :baz
257
+ end
243
258
  end
244
259
 
245
260
  describe ScenarioCreator, "#instance_of" do
@@ -167,6 +167,7 @@ module RR
167
167
  return self if subject.__id__ === NO_SUBJECT_ARG.__id__
168
168
  RR::Space.scenario_method_proxy(self, subject, method_name, &definition)
169
169
  end
170
+ alias_method :proxy, :probe
170
171
 
171
172
  # Calling instance_of will cause all instances of the passed in Class
172
173
  # to have the Scenario defined.
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.3
3
3
  specification_version: 1
4
4
  name: rr
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.3.8
7
- date: 2007-08-12 00:00:00 -07:00
6
+ version: 0.3.9
7
+ date: 2007-08-14 00:00:00 -07:00
8
8
  summary: RR (Double Ruby) is a double framework that features a rich selection of double techniques and a terse syntax. http://xunitpatterns.com/Test%20Double.html
9
9
  require_paths:
10
10
  - lib