orangutan 0.0.2 → 0.0.3
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.
- data/VERSION.yml +1 -1
- data/lib/orangutan/chantek.rb +4 -3
- data/lib/orangutan/expectation.rb +8 -2
- data/lib/orangutan/stub_base.rb +3 -3
- data/orangutan.gemspec +2 -3
- data/spec/spec_chantek.rb +26 -3
- data/spec/spec_chantek_recurse.rb +7 -0
- data/spec/spec_expectation.rb +11 -3
- metadata +2 -3
- data/lib/orangutan/clean_slate.rb +0 -32
data/VERSION.yml
CHANGED
data/lib/orangutan/chantek.rb
CHANGED
|
@@ -4,7 +4,7 @@ require 'orangutan/call'
|
|
|
4
4
|
|
|
5
5
|
module Orangutan
|
|
6
6
|
class Chantek
|
|
7
|
-
attr_reader :calls
|
|
7
|
+
attr_reader :calls, :stubs
|
|
8
8
|
|
|
9
9
|
def initialize
|
|
10
10
|
@calls = []
|
|
@@ -21,8 +21,8 @@ module Orangutan
|
|
|
21
21
|
snake = m_info.name.scan(/[A-Z][a-z0-9]*/).map {|a|a.downcase}.join('_').to_sym
|
|
22
22
|
define_method snake do |*args|
|
|
23
23
|
yield_container, return_container = __react__(snake, args)
|
|
24
|
-
yield yield_container.value if yield_container && block_given?
|
|
25
|
-
__return__(method, return_container)
|
|
24
|
+
yield *yield_container.value if yield_container && block_given?
|
|
25
|
+
return __return__(method, return_container)
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
end
|
|
@@ -45,6 +45,7 @@ module Orangutan
|
|
|
45
45
|
return expectation if expectation.matches?(method, *args)
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
|
+
nil
|
|
48
49
|
end
|
|
49
50
|
end
|
|
50
51
|
end
|
|
@@ -5,6 +5,12 @@ module Orangutan
|
|
|
5
5
|
class Expectation
|
|
6
6
|
attr_reader :return_container, :yield_container, :raiser
|
|
7
7
|
|
|
8
|
+
def initialize
|
|
9
|
+
@return_container = nil
|
|
10
|
+
@yield_container = nil
|
|
11
|
+
@raiser = nil
|
|
12
|
+
end
|
|
13
|
+
|
|
8
14
|
def receives method
|
|
9
15
|
@method = method
|
|
10
16
|
self
|
|
@@ -15,12 +21,12 @@ module Orangutan
|
|
|
15
21
|
self
|
|
16
22
|
end
|
|
17
23
|
|
|
18
|
-
def return value
|
|
24
|
+
def return *value
|
|
19
25
|
@return_container = Container.new value
|
|
20
26
|
self
|
|
21
27
|
end
|
|
22
28
|
|
|
23
|
-
def yield value
|
|
29
|
+
def yield *value
|
|
24
30
|
@yield_container = Container.new value
|
|
25
31
|
self
|
|
26
32
|
end
|
data/lib/orangutan/stub_base.rb
CHANGED
|
@@ -8,13 +8,13 @@ module Orangutan
|
|
|
8
8
|
|
|
9
9
|
def method_missing method, *args
|
|
10
10
|
yield_container, return_container = __react__(method, args)
|
|
11
|
-
yield yield_container.value if yield_container && block_given?
|
|
11
|
+
yield *yield_container.value if yield_container && block_given?
|
|
12
12
|
__return__(method, return_container)
|
|
13
13
|
end
|
|
14
14
|
private
|
|
15
15
|
def __return__ method, return_container
|
|
16
|
-
return return_container.value if return_container
|
|
17
|
-
return @parent.stub(:"#{@name}/#{method}") if @recursive
|
|
16
|
+
return *return_container.value if return_container
|
|
17
|
+
return @parent.stub(:"#{@name}/#{method}", :recursive => true) if @recursive
|
|
18
18
|
nil
|
|
19
19
|
end
|
|
20
20
|
|
data/orangutan.gemspec
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = %q{orangutan}
|
|
5
|
-
s.version = "0.0.
|
|
5
|
+
s.version = "0.0.3"
|
|
6
6
|
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
8
8
|
s.authors = ["Mark Ryall"]
|
|
9
|
-
s.date = %q{2009-05-
|
|
9
|
+
s.date = %q{2009-05-11}
|
|
10
10
|
s.description = %q{A mocking library that supports creation of ironruby mock objects (in addition to pure ruby ones)}
|
|
11
11
|
s.email = %q{mark@ryall.name}
|
|
12
12
|
s.extra_rdoc_files = [
|
|
@@ -19,7 +19,6 @@ Gem::Specification.new do |s|
|
|
|
19
19
|
"lib/orangutan.rb",
|
|
20
20
|
"lib/orangutan/call.rb",
|
|
21
21
|
"lib/orangutan/chantek.rb",
|
|
22
|
-
"lib/orangutan/clean_slate.rb",
|
|
23
22
|
"lib/orangutan/container.rb",
|
|
24
23
|
"lib/orangutan/expectation.rb",
|
|
25
24
|
"lib/orangutan/raiser.rb",
|
data/spec/spec_chantek.rb
CHANGED
|
@@ -21,17 +21,40 @@ describe Orangutan::Chantek, 'creating ruby stubs' do
|
|
|
21
21
|
@o.when(:foo).receives(:bar).return('baz')
|
|
22
22
|
@foo.bar.should == 'baz'
|
|
23
23
|
end
|
|
24
|
+
|
|
25
|
+
it 'should allow multiple method return values to be stubbed' do
|
|
26
|
+
@o.when(:foo).receives(:bar).return('baz', 'bat')
|
|
27
|
+
@foo.bar.should == ['baz', 'bat']
|
|
28
|
+
end
|
|
24
29
|
|
|
25
30
|
it 'should allow method return values to be stubbed for method invocations with specific arguments' do
|
|
26
31
|
@o.when(:foo).receives(:bar).with(7).return('baz')
|
|
27
32
|
@foo.bar(7).should == 'baz'
|
|
28
33
|
end
|
|
34
|
+
|
|
35
|
+
it 'should not match method invocations with incorrect specific arguments' do
|
|
36
|
+
@o.when(:foo).receives(:bar).with(7).return('baz')
|
|
37
|
+
@foo.bar(8).should == nil
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it 'should allow method return values to be stubbed for method invocations with multiple specific arguments' do
|
|
41
|
+
@o.when(:foo).receives(:bar).with(7,8).return('baz')
|
|
42
|
+
@foo.bar(7,8).should == 'baz'
|
|
43
|
+
end
|
|
29
44
|
|
|
30
45
|
it 'should allow stubbed methods to yield' do
|
|
31
46
|
@o.when(:foo).receives(:bar).with(7).yield('baz')
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
47
|
+
@foo.bar(7) do |v|
|
|
48
|
+
v.should == 'baz'
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it 'should allow stubbed methods to yield multiple values' do
|
|
53
|
+
@o.when(:foo).receives(:bar).with(7).yield('baz', 'bar')
|
|
54
|
+
@foo.bar(7) do |a,b|
|
|
55
|
+
a.should == 'baz'
|
|
56
|
+
b.should == 'bar'
|
|
57
|
+
end
|
|
35
58
|
end
|
|
36
59
|
|
|
37
60
|
it 'should allow stubbed methods to yield nils' do
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'orangutan'
|
|
2
|
+
|
|
1
3
|
module Orangutan
|
|
2
4
|
describe Chantek, 'creating recursive ruby stubs' do
|
|
3
5
|
before do
|
|
@@ -20,5 +22,10 @@ module Orangutan
|
|
|
20
22
|
@o.calls[0].should == Call.new(:foo, :bar,[])
|
|
21
23
|
@o.calls[1].should == Call.new(:"foo/bar", :baz,[])
|
|
22
24
|
end
|
|
25
|
+
|
|
26
|
+
it "should create recursive stubs" do
|
|
27
|
+
@foo.a.b.c
|
|
28
|
+
@o.stubs.keys.should == [:foo, :"foo/a", :"foo/a/b", :"foo/a/b/c"]
|
|
29
|
+
end
|
|
23
30
|
end
|
|
24
31
|
end
|
data/spec/spec_expectation.rb
CHANGED
|
@@ -26,8 +26,12 @@ module Orangutan
|
|
|
26
26
|
@e.yield_container.should == nil
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
it 'should store
|
|
30
|
-
@e.yield(1).yield_container.should == Container.new(1)
|
|
29
|
+
it 'should store yield value' do
|
|
30
|
+
@e.yield(1).yield_container.should == Container.new([1])
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it 'should store multiple yield values' do
|
|
34
|
+
@e.yield(1,2).yield_container.should == Container.new([1,2])
|
|
31
35
|
end
|
|
32
36
|
|
|
33
37
|
it 'should not return by default' do
|
|
@@ -35,7 +39,11 @@ module Orangutan
|
|
|
35
39
|
end
|
|
36
40
|
|
|
37
41
|
it 'should store return value' do
|
|
38
|
-
@e.return(1).return_container.should == Container.new(1)
|
|
42
|
+
@e.return(1).return_container.should == Container.new([1])
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it 'should store multiple return values' do
|
|
46
|
+
@e.return(1,2).return_container.should == Container.new([1,2])
|
|
39
47
|
end
|
|
40
48
|
|
|
41
49
|
it 'should not raise by default' do
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: orangutan
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mark Ryall
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2009-05-
|
|
12
|
+
date: 2009-05-11 00:00:00 +10:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies: []
|
|
15
15
|
|
|
@@ -28,7 +28,6 @@ files:
|
|
|
28
28
|
- lib/orangutan.rb
|
|
29
29
|
- lib/orangutan/call.rb
|
|
30
30
|
- lib/orangutan/chantek.rb
|
|
31
|
-
- lib/orangutan/clean_slate.rb
|
|
32
31
|
- lib/orangutan/container.rb
|
|
33
32
|
- lib/orangutan/expectation.rb
|
|
34
33
|
- lib/orangutan/raiser.rb
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
module Orangutan
|
|
2
|
-
class CleanSlate
|
|
3
|
-
instance_methods.each { |m| undef_method m unless m =~ /^__/ }
|
|
4
|
-
|
|
5
|
-
def initialize name, parent, recursive
|
|
6
|
-
@name, @parent, @recursive = name, parent, recursive
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def method_missing method, *args
|
|
10
|
-
yield_container, return_container = __react__(method, args)
|
|
11
|
-
yield yield_container.value if yield_container && block_given?
|
|
12
|
-
__return__(method, return_container)
|
|
13
|
-
end
|
|
14
|
-
private
|
|
15
|
-
def __return__ method, return_container
|
|
16
|
-
return return_container.value if return_container
|
|
17
|
-
return @parent.stub(:"@name/method") if @recursive
|
|
18
|
-
nil
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def __react__ method, args
|
|
22
|
-
yield_container, return_value = nil, nil
|
|
23
|
-
@parent.calls << Orangutan::Call.new(@name, method, args)
|
|
24
|
-
first_match = @parent.first_match(@name, method, args)
|
|
25
|
-
if first_match
|
|
26
|
-
first_match.raiser.execute if first_match.raiser
|
|
27
|
-
yield_container, return_value = first_match.yield_container, first_match.return_value
|
|
28
|
-
end
|
|
29
|
-
return yield_container, return_value
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|