stubble 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/Rakefile +4 -15
  2. data/lib/stubble.rb +38 -4
  3. data/test/stubble_test.rb +31 -0
  4. metadata +4 -4
data/Rakefile CHANGED
@@ -2,6 +2,9 @@ require 'rake'
2
2
  require 'rake/testtask'
3
3
  require 'rake/rdoctask'
4
4
 
5
+ require "rubygems"
6
+ require "rake/gempackagetask"
7
+
5
8
  desc 'Default: run unit tests.'
6
9
  task :default => :test
7
10
 
@@ -22,20 +25,6 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
22
25
  rdoc.rdoc_files.include('lib/**/*.rb')
23
26
  end
24
27
 
25
- require "rubygems"
26
- require "rake/gempackagetask"
27
- require "rake/rdoctask"
28
-
29
- require "rake/testtask"
30
- Rake::TestTask.new do |t|
31
- t.libs << "test"
32
- t.test_files = FileList["test/**/*_test.rb"]
33
- t.verbose = true
34
- end
35
-
36
-
37
- task :default => ["test"]
38
-
39
28
  # This builds the actual gem. For details of what all these options
40
29
  # mean, and other ones you can add, check the documentation here:
41
30
  #
@@ -45,7 +34,7 @@ spec = Gem::Specification.new do |s|
45
34
 
46
35
  # Change these as appropriate
47
36
  s.name = "stubble"
48
- s.version = "0.1.0"
37
+ s.version = "0.1.1"
49
38
  s.summary = "(experimental) simple stubbing"
50
39
  s.author = "Matthew Rudy Jacobs"
51
40
  s.email = "MatthewRudyJacobs@gmail.com"
data/lib/stubble.rb CHANGED
@@ -32,8 +32,14 @@ module Stubble
32
32
  @tracking.delete(method_name)
33
33
  end
34
34
 
35
- def stub!(method_name, values)
36
- @stubs[method_name] = values
35
+ def raise!(method_name, exception)
36
+ @stubs[method_name] ||= []
37
+ @stubs[method_name] << RaiseStub.new(exception)
38
+ end
39
+
40
+ def stub!(method_name, value)
41
+ @stubs[method_name] ||= []
42
+ @stubs[method_name] << ReturnStub.new(value)
37
43
  end
38
44
 
39
45
  def unstub!(method_name)
@@ -57,6 +63,26 @@ module Stubble
57
63
  end
58
64
  module_function :add_stubble!
59
65
 
66
+ class ReturnStub
67
+ def initialize(value)
68
+ @value = value
69
+ end
70
+
71
+ def perform
72
+ return @value
73
+ end
74
+ end
75
+
76
+ class RaiseStub
77
+ def initialize(exception)
78
+ @exception = exception
79
+ end
80
+
81
+ def perform
82
+ raise @exception
83
+ end
84
+ end
85
+
60
86
  module StubMethods
61
87
 
62
88
  def track!(method_name)
@@ -65,7 +91,7 @@ module Stubble
65
91
  class_eval <<-RUBY
66
92
  def #{method_name}_with_stubble(*args, &block)
67
93
  if stubbed_return = self._stubble.called!(#{method_name.inspect}, args, block)
68
- stubbed_return
94
+ stubbed_return.perform
69
95
  else
70
96
  #{method_name}_without_stubble(*args, &block)
71
97
  end
@@ -81,7 +107,15 @@ module Stubble
81
107
 
82
108
  def stub!(method_name, values)
83
109
  track!(method_name)
84
- self._stubble.stub!(method_name, values)
110
+ values.each do |value|
111
+ self._stubble.stub!(method_name, value)
112
+ end
113
+ end
114
+
115
+ def raise!(method_name, exception)
116
+ track!(method_name)
117
+
118
+ self._stubble.raise!(method_name, exception)
85
119
  end
86
120
 
87
121
  def unstub!(method_name)
data/test/stubble_test.rb CHANGED
@@ -122,6 +122,37 @@ class StubbleTest < Test::Unit::TestCase
122
122
  assert_equal 2, this.some_method
123
123
  end
124
124
 
125
+ test "stub! - can be done progressively" do
126
+ this = StubThis.new
127
+ assert_equal 1, this.some_method
128
+
129
+ Stubble.add_stubble!(this)
130
+ this.stub!(:some_method, [:a])
131
+ this.stub!(:some_method, [:b, :c])
132
+
133
+ assert_equal :a, this.some_method
134
+ assert_equal :b, this.some_method
135
+ assert_equal :c, this.some_method
136
+
137
+ assert_equal 2, this.some_method
138
+ end
139
+
140
+ class SomeMagicError < RuntimeError ; end
141
+
142
+ test "raise!" do
143
+ this = StubThis.new
144
+ assert_equal 1, this.some_method
145
+
146
+ Stubble.add_stubble!(this)
147
+ this.raise!(:some_method, SomeMagicError)
148
+
149
+ assert_raise(SomeMagicError) do
150
+ this.some_method
151
+ end
152
+
153
+ assert_equal 2, this.some_method
154
+ end
155
+
125
156
  test "unstub! - cancels a stub" do
126
157
  this = StubThis.new
127
158
  assert_equal 1, this.some_method
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stubble
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Matthew Rudy Jacobs
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-17 00:00:00 +08:00
18
+ date: 2011-02-01 00:00:00 +08:00
19
19
  default_executable:
20
20
  dependencies: []
21
21