mocoso 0.1.2 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/lib/mocoso.rb +21 -14
- data/mocoso.gemspec +1 -1
- data/test/scary_mocks_and_nice_stubs.rb +9 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7de0f508008ca0672ee0c9b477cd56abcf6426dd
|
4
|
+
data.tar.gz: 095191e5dd87d93e55776ff46694ba6424d9211d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 592564f4db16626077f2958b8dc52ba7d5289d8d0b7529239a0ddd8e27feb815c40ef623bc7c12e37009fc619b8717235109e88321fef82acedb9c71e1beef2b
|
7
|
+
data.tar.gz: 32f6f94b0cd3cb383aceb4cd30b538ff532b6ed2a21e8cf4dd71d6ba702835c203bdd24abe589b7566013cf08f40212e9e8297d2dc77ebe4132175387d27ef89
|
data/README.md
CHANGED
@@ -4,6 +4,8 @@ Mocoso
|
|
4
4
|
Yet Another Simple Stub & Mock library. This is stolen from tools such as
|
5
5
|
[Minitest::Mock][minitest], [Override][override] and [Mocha][mocha].
|
6
6
|
|
7
|
+
**Made in Peru.**
|
8
|
+
|
7
9
|
Motivation
|
8
10
|
----------
|
9
11
|
|
@@ -37,7 +39,7 @@ A quick example (uses [Cutest][cutest]):
|
|
37
39
|
test 'mocking a class method' do
|
38
40
|
user = User.new
|
39
41
|
|
40
|
-
expect User, :find, with: [1],
|
42
|
+
expect User, :find, with: [1], returns: user do
|
41
43
|
assert_equal user, User.find(1)
|
42
44
|
end
|
43
45
|
end
|
data/lib/mocoso.rb
CHANGED
@@ -23,7 +23,7 @@
|
|
23
23
|
# test 'mocking a class method' do
|
24
24
|
# user = User.new
|
25
25
|
#
|
26
|
-
# expect User, :find, with: [1],
|
26
|
+
# expect User, :find, with: [1], returns: user do
|
27
27
|
# assert_equal user, User.find(1)
|
28
28
|
# end
|
29
29
|
# end
|
@@ -70,7 +70,7 @@ module Mocoso
|
|
70
70
|
#
|
71
71
|
# You can pass a callable object (responds to +call+) as a value:
|
72
72
|
#
|
73
|
-
# Mocoso.stub subject, foo
|
73
|
+
# Mocoso.stub subject, :foo, -> { "foo" } do
|
74
74
|
# subject.foo # => "foo"
|
75
75
|
# end
|
76
76
|
#
|
@@ -92,10 +92,8 @@ module Mocoso
|
|
92
92
|
#
|
93
93
|
def stub object, method, result, &block
|
94
94
|
metaclass = object.singleton_class
|
95
|
-
|
96
|
-
invoked
|
97
|
-
|
98
|
-
metaclass.send :alias_method, stubbed_method, method
|
95
|
+
original = object.method method
|
96
|
+
invoked = false
|
99
97
|
|
100
98
|
metaclass.send :define_method, method do |*args|
|
101
99
|
invoked = true
|
@@ -106,8 +104,7 @@ module Mocoso
|
|
106
104
|
yield
|
107
105
|
ensure
|
108
106
|
metaclass.send :undef_method, method
|
109
|
-
metaclass.send :
|
110
|
-
metaclass.send :undef_method, stubbed_method
|
107
|
+
metaclass.send :define_method, method, original
|
111
108
|
raise "Expected method #{method} not invoked" if !invoked
|
112
109
|
end
|
113
110
|
end
|
@@ -123,7 +120,7 @@ module Mocoso
|
|
123
120
|
#
|
124
121
|
# user = User[1]
|
125
122
|
#
|
126
|
-
# Mocoso.expect user, :update, with: [{ name: 'new name' }], returns: true
|
123
|
+
# Mocoso.expect user, :update, with: [{ name: 'new name' }], returns: true do
|
127
124
|
# subject.update unexpected: nil
|
128
125
|
# # => Mocoso::ExpectationError: Expected [{:name=>"new name"}], got [{:unexpected=>nil}]
|
129
126
|
#
|
@@ -132,12 +129,22 @@ module Mocoso
|
|
132
129
|
# end
|
133
130
|
#
|
134
131
|
def expect object, method, options, &block
|
135
|
-
|
132
|
+
stub object, method, Expectation.new(options), &block
|
133
|
+
end
|
134
|
+
|
135
|
+
# Intended for private use, but you can overwrite the +call+ method
|
136
|
+
# if you want to support more expectation options.
|
137
|
+
class Expectation # :nodoc:
|
138
|
+
attr :options
|
139
|
+
|
140
|
+
def initialize options
|
141
|
+
@options = options
|
142
|
+
end
|
143
|
+
|
144
|
+
def call *params
|
136
145
|
with = options.fetch(:with) { [] }
|
137
146
|
raise ExpectationError, "Expected #{with}, got #{params}" if params != with
|
138
|
-
options.fetch
|
139
|
-
|
140
|
-
|
141
|
-
stub object, method, expectation, &block
|
147
|
+
options.fetch :returns
|
148
|
+
end
|
142
149
|
end
|
143
150
|
end
|
data/mocoso.gemspec
CHANGED
@@ -87,3 +87,12 @@ test 'raises error if stubbed method is never invoked' do |subject|
|
|
87
87
|
end
|
88
88
|
}
|
89
89
|
end
|
90
|
+
|
91
|
+
test 'stub within a stub' do |subject|
|
92
|
+
stub subject, :foo, 'outer' do
|
93
|
+
stub subject, :foo, 'inner' do
|
94
|
+
assert_equal 'inner', subject.foo
|
95
|
+
end
|
96
|
+
assert_equal 'outer', subject.foo
|
97
|
+
end
|
98
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mocoso
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Francesco Rodríguez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cutest
|