developwithpassion_fakes 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/Guardfile ADDED
@@ -0,0 +1,5 @@
1
+ guard 'rspec' do
2
+ watch(%r{^spec/.+_spec\.rb$})
3
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
4
+ watch('spec/spec_helper.rb') { "spec" }
5
+ end
@@ -21,5 +21,7 @@ Gem::Specification.new do |s|
21
21
  # specify any dependencies here; for example:
22
22
  s.add_development_dependency "rspec"
23
23
  s.add_development_dependency "rake"
24
+ s.add_development_dependency "guard"
25
+ s.add_development_dependency "guard-rspec"
24
26
  # s.add_runtime_dependency "rest-client"
25
27
  end
@@ -7,16 +7,18 @@ module DevelopWithPassion
7
7
  @return_value = item
8
8
  end
9
9
 
10
- def capture_args(*args)
10
+ def capture_args(args)
11
11
  @times_called += 1
12
- @called_args = *args
12
+ @called_args = args
13
13
  end
14
14
 
15
- def matches?(*args)
15
+ def matches?(args)
16
+ puts @args.class
17
+ puts args[0].class
16
18
  return @args == args
17
19
  end
18
20
 
19
- def was_called_with?(*args)
21
+ def was_called_with?(args)
20
22
  return @called_args == args
21
23
  end
22
24
  end
@@ -3,8 +3,8 @@ module DevelopWithPassion
3
3
  class ArgSet
4
4
  include ArgBehaviour
5
5
 
6
- def initialize(*args)
7
- @args = *args
6
+ def initialize(args)
7
+ @args = args
8
8
  @times_called = 0
9
9
  end
10
10
  end
@@ -6,13 +6,13 @@ module DevelopWithPassion
6
6
  end
7
7
 
8
8
  def method_missing(name,*args,&block)
9
- return @method_invocations.has_key?(name.to_sym) ? @method_invocations[name.to_sym].invoke(*args) : handle_unexpected_method_invocation(name,*args,block)
9
+ return @method_invocations.has_key?(name.to_sym) ? @method_invocations[name.to_sym].invoke(args) : handle_unexpected_method_invocation(name,args,block)
10
10
  end
11
11
 
12
- def handle_unexpected_method_invocation(name,*args,block)
12
+ def handle_unexpected_method_invocation(name,args,block)
13
13
  method = stub(name.to_sym)
14
14
  method.ignore_arg
15
- return method.invoke(*args)
15
+ return method.invoke(args)
16
16
  end
17
17
 
18
18
  def stub(symbol)
@@ -9,16 +9,16 @@ module DevelopWithPassion
9
9
  @arg_sets = []
10
10
  end
11
11
 
12
- def matches?(*args)
12
+ def matches?(args)
13
13
  return true
14
14
  end
15
15
 
16
- def capture_args(*args)
16
+ def capture_args(args)
17
17
  @times_called += 1
18
18
  @arg_sets << args
19
19
  end
20
20
 
21
- def was_called_with?(*args)
21
+ def was_called_with?(args)
22
22
  return @arg_sets.select{|set| set == args}.count > 0
23
23
  end
24
24
  end
@@ -6,7 +6,7 @@ module DevelopWithPassion
6
6
  end
7
7
 
8
8
  def with(*args)
9
- return add_new_set(ArgSet.new(*args))
9
+ return add_new_set(ArgSet.new(args))
10
10
  end
11
11
 
12
12
  def add_new_set(set)
@@ -23,14 +23,14 @@ module DevelopWithPassion
23
23
  end
24
24
 
25
25
 
26
- def invoke(*args)
27
- set = @arg_sets.find{|item| item.matches?(*args)} || ignore_arg
28
- set.capture_args(*args)
26
+ def invoke(args)
27
+ set = @arg_sets.find{|item| item.matches?(args)} || ignore_arg
28
+ set.capture_args(args)
29
29
  return set.return_value
30
30
  end
31
31
 
32
32
  def called_with(*args)
33
- return @arg_sets.find{|item| item.was_called_with?(*args)}
33
+ return @arg_sets.find{|item| item.was_called_with?(args)}
34
34
  end
35
35
 
36
36
  def times?(value)
@@ -1,5 +1,5 @@
1
1
  module DevelopWithPassion
2
2
  module Fakes
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -31,13 +31,13 @@ module DevelopWithPassion
31
31
  sut.times_called.should == 1
32
32
  end
33
33
  it "should store the arguments it was called with" do
34
- sut.called_args.should == [2]
34
+ sut.called_args.should == 2
35
35
  end
36
36
  end
37
37
 
38
38
  context "when matching a set of arguments" do
39
39
  before (:each) do
40
- sut.args = [2]
40
+ sut.args = 2
41
41
  end
42
42
  it "should match if its own set of arguments are the same" do
43
43
  sut.matches?(2).should be_true
@@ -45,9 +45,18 @@ module DevelopWithPassion
45
45
  end
46
46
  end
47
47
 
48
+ context "when matching a set of arguments that is passed in as a dictionary" do
49
+ before (:each) do
50
+ sut.args = {:id => 0,:name => "JP"}
51
+ end
52
+ it "should match if its hash is the same" do
53
+ sut.matches?(:id => 0,:name => "JP").should be_true
54
+ end
55
+ end
56
+
48
57
  context "when determining whether it was called with a set of arguments" do
49
58
  before (:each) do
50
- sut.called_args = [2]
59
+ sut.called_args = 2
51
60
  end
52
61
 
53
62
  it "should match if the arguments are the same as the arguments it was invoked with" do
@@ -104,7 +104,7 @@ module DevelopWithPassion
104
104
  @result = sut.hello(args)
105
105
  end
106
106
  it "should trigger the invocation with the arguments" do
107
- invocation.args.should == args
107
+ invocation.args.should == [args]
108
108
  end
109
109
  it "should return the result of triggering the invocation" do
110
110
  @result.should == invocation.return_value
@@ -126,14 +126,89 @@ module DevelopWithPassion
126
126
  end
127
127
 
128
128
  it "should invoke the invocation with the arguments" do
129
- invocation.args.should == args
129
+ invocation.args.should == [args]
130
130
  end
131
131
 
132
132
  it "should return the result of triggering the new invocation" do
133
133
  @result.should == invocation.return_value
134
134
  end
135
135
  end
136
+ end
137
+
138
+ context "scenarios" do
139
+ context "setting up return values" do
140
+ it "should be able to intercept on methods that take a singular value" do
141
+ fake = Fake.new
142
+ fake.stub(:hello).with("World").and_return("Hello World")
143
+ fake.hello("World").should == "Hello World"
144
+ end
145
+
146
+ it "should be able to intercept on methods that take a hash" do
147
+ fake = Fake.new
148
+ fake.stub(:hello).with(:id => "JP",:age => 33).and_return("Hello World")
149
+ fake.hello(:id => "JP",:age => 33).should == "Hello World"
150
+ end
151
+
152
+ it "should be able to intercept on methods that take a value and a hash" do
153
+ fake = Fake.new
154
+ fake.stub(:hello).with(1,:id => "JP",:age => 33).and_return("Hello World")
155
+
156
+ fake.hello(1,:id => "JP",:age => 33).should == "Hello World"
157
+ fake.hello(2,:id => "JP",:age => 33).should be_nil
158
+ end
159
+
160
+ it "should be able to intercept on methods that take an array" do
161
+ fake = Fake.new
162
+ fake.stub(:hello).with([1,2,3,4]).and_return("Hello World")
163
+
164
+ fake.hello([1,2,3,4]).should == "Hello World"
165
+ end
136
166
 
167
+ it "should be able to intercept on methods that take an value, and an array" do
168
+ fake = Fake.new
169
+ fake.stub(:hello).with(1,[1,2,3,4]).and_return("Hello World")
170
+
171
+ fake.hello(1,[1,2,3,4]).should == "Hello World"
172
+ end
173
+ end
174
+ context "verifying calls were made" do
175
+ it "should be able to intercept on methods that take a singular value" do
176
+ fake = Fake.new
177
+ fake.hello("World")
178
+ fake.received(:hello).called_with("World").should be_true
179
+ end
180
+
181
+ it "should be able to intercept on methods that take a hash" do
182
+ fake = Fake.new
183
+ fake.hello(:id => "JP",:age => 33)
184
+ fake.received(:hello).called_with(:id => "JP",:age => 33).should_not be_nil
185
+ fake.received(:hello).called_with(:id => "JS",:age => 33).should be_nil
186
+ end
187
+
188
+ it "should be able to intercept on methods that take a value and a hash" do
189
+ fake = Fake.new
190
+
191
+ fake.hello(1,:id => "JP",:age => 33)
192
+ fake.received(:hello).called_with(1,:id => "JP",:age => 33).should_not be_nil
193
+ fake.received(:hello).called_with(1,:id => "JS",:age => 33).should be_nil
194
+ end
195
+
196
+ it "should be able to intercept on methods that take an array" do
197
+ fake = Fake.new
198
+
199
+ fake.hello([1,2,3,4])
200
+ fake.received(:hello).called_with([1,2,3,4]).should_not be_nil
201
+ fake.received(:hello).called_with([1,2,3,5]).should be_nil
202
+ end
203
+
204
+ it "should be able to intercept on methods that take an value, and an array" do
205
+ fake = Fake.new
206
+ fake.hello(1,[1,2,3,4])
207
+
208
+ fake.received(:hello).called_with(1,[1,2,3,4]).should_not be_nil
209
+ fake.received(:hello).called_with(1,[1,2,3,5]).should be_nil
210
+ end
211
+ end
137
212
  end
138
213
  end
139
214
  end
@@ -13,8 +13,8 @@ module DevelopWithPassion
13
13
 
14
14
  context "when matching an argument set" do
15
15
  it "should match any argument set" do
16
- sut.matches?(1,2,3,4).should be_true
17
- sut.matches?(3,"hello",4,5).should be_true
16
+ sut.matches?([1,2,3,4]).should be_true
17
+ sut.matches?([3,"hello",4,5]).should be_true
18
18
  end
19
19
  end
20
20
 
@@ -11,7 +11,7 @@ module DevelopWithPassion
11
11
  let(:sut){MethodStub.new(arg_sets)}
12
12
 
13
13
  before (:each) do
14
- ArgSet.stub(:new).with(args).and_return(argument_set)
14
+ ArgSet.stub(:new).with([args]).and_return(argument_set)
15
15
  end
16
16
  before (:each) do
17
17
  @result = sut.with(args)
@@ -102,13 +102,13 @@ module DevelopWithPassion
102
102
  @args = *args
103
103
  end
104
104
  end
105
- let(:arguments){[1]}
105
+ let(:arguments){1}
106
106
 
107
107
  context "and one of its argument sets was called with the set of arguments" do
108
108
  let(:arg_set){DummyArgSet.new}
109
109
  before (:each) do
110
110
  arg_sets.push(arg_set)
111
- arg_set.stub(:was_called_with?).with(arguments).and_return(true)
111
+ arg_set.stub(:was_called_with?).with([arguments]).and_return(true)
112
112
  end
113
113
  before (:each) do
114
114
  @result = sut.called_with(arguments)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: developwithpassion_fakes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-03-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70288150755080 !ruby/object:Gem::Requirement
16
+ requirement: &70290466330660 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70288150755080
24
+ version_requirements: *70290466330660
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70288150754460 !ruby/object:Gem::Requirement
27
+ requirement: &70290466330200 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,29 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70288150754460
35
+ version_requirements: *70290466330200
36
+ - !ruby/object:Gem::Dependency
37
+ name: guard
38
+ requirement: &70290466329760 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70290466329760
47
+ - !ruby/object:Gem::Dependency
48
+ name: guard-rspec
49
+ requirement: &70290466329320 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70290466329320
36
58
  description: Faking library that allows inspection of received calls after they have
37
59
  been made. Also supports tracking calls with multiple argument sets.
38
60
  email:
@@ -44,6 +66,7 @@ files:
44
66
  - .gitignore
45
67
  - .rvmrc
46
68
  - Gemfile
69
+ - Guardfile
47
70
  - README.md
48
71
  - Rakefile
49
72
  - developwithpassion_fakes.gemspec
@@ -81,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
104
  version: '0'
82
105
  requirements: []
83
106
  rubyforge_project: developwithpassion_fakes
84
- rubygems_version: 1.8.15
107
+ rubygems_version: 1.8.17
85
108
  signing_key:
86
109
  specification_version: 3
87
110
  summary: Simple faking library