tiramisu 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/lib/tiramisu/assert.rb +8 -3
- data/lib/tiramisu/core_ext.rb +2 -1
- data/lib/tiramisu/expectations/raise.rb +32 -0
- data/lib/tiramisu/expectations/return.rb +32 -0
- data/lib/tiramisu/expectations/throw.rb +24 -0
- data/lib/tiramisu/expectations/with.rb +36 -0
- data/lib/tiramisu/expectations.rb +82 -0
- data/lib/tiramisu/run.rb +32 -15
- data/lib/tiramisu/unit.rb +10 -15
- data/lib/tiramisu/util.rb +3 -3
- data/lib/tiramisu.rb +2 -1
- data/test/receive_and_raise_test.rb +8 -16
- data/test/receive_and_return_test.rb +7 -35
- data/test/receive_and_throw_test.rb +6 -6
- data/test/receive_test.rb +4 -8
- data/test/receive_with_test.rb +8 -13
- data/test/skip_test.rb +2 -7
- data/tiramisu.gemspec +2 -3
- metadata +22 -10
- data/README.md.html +0 -348
- data/lib/tiramisu/mock/expectation/raise.rb +0 -34
- data/lib/tiramisu/mock/expectation/return.rb +0 -34
- data/lib/tiramisu/mock/expectation/throw.rb +0 -26
- data/lib/tiramisu/mock/expectation/with.rb +0 -38
- data/lib/tiramisu/mock/expectation.rb +0 -44
- data/lib/tiramisu/mock.rb +0 -48
@@ -1,34 +0,0 @@
|
|
1
|
-
module Tiramisu
|
2
|
-
class Mock
|
3
|
-
class Expectation
|
4
|
-
|
5
|
-
# ensure received message raises as expected
|
6
|
-
#
|
7
|
-
# @note if block given it will have precedence over arguments
|
8
|
-
#
|
9
|
-
# @example
|
10
|
-
# x = mock(X.new)
|
11
|
-
# expect(x).to_receive(:y).and_raise(NoMethodError)
|
12
|
-
# # call `x.y` for test to pass
|
13
|
-
#
|
14
|
-
def and_raise type = nil, message = nil, &block
|
15
|
-
@raise = block || [type, message]
|
16
|
-
end
|
17
|
-
|
18
|
-
def assert_message_raised_as_expected
|
19
|
-
return unless @raise
|
20
|
-
if @raise.is_a?(Proc)
|
21
|
-
received_messages.find {|log| @raise.call(log[:raised])} || Tiramisu.fail([
|
22
|
-
'Looks like :%s message never raised as expected' % expected_message,
|
23
|
-
'See validation block'
|
24
|
-
], @caller)
|
25
|
-
else
|
26
|
-
received_messages.each do |log|
|
27
|
-
next unless f = Tiramisu.assert_raised_as_expected(log, *@raise)
|
28
|
-
Tiramisu.fail(f, log[:caller])
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
module Tiramisu
|
2
|
-
class Mock
|
3
|
-
class Expectation
|
4
|
-
|
5
|
-
# ensure received message returns expected value
|
6
|
-
#
|
7
|
-
# @note if block given it will have precedence over arguments
|
8
|
-
#
|
9
|
-
# @example
|
10
|
-
# n = mock(1)
|
11
|
-
# expect(n).to_receive(:+).with(1).and_return(2)
|
12
|
-
#
|
13
|
-
def and_return value = nil, &block
|
14
|
-
@return = block || value
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
def assert_message_returned_correct_value
|
19
|
-
return unless @return
|
20
|
-
if @return.is_a?(Proc)
|
21
|
-
received_messages.find {|log| @return.call(log[:returned])} || Tiramisu.fail([
|
22
|
-
'Looks like :%s message never returned expected value' % expected_message,
|
23
|
-
'See validation block'
|
24
|
-
], @caller)
|
25
|
-
else
|
26
|
-
received_messages.find {|log| log[:returned] == @return} || Tiramisu.fail([
|
27
|
-
'Looks like :%s message never returned expected value:' % expected_message,
|
28
|
-
Array(@return).map {|x| Tiramisu.pp(x)}.join(', ')
|
29
|
-
], @caller)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module Tiramisu
|
2
|
-
class Mock
|
3
|
-
class Expectation
|
4
|
-
|
5
|
-
# ensure received message throws as expected
|
6
|
-
#
|
7
|
-
# @note if block given it will have precedence over arguments
|
8
|
-
#
|
9
|
-
# @example
|
10
|
-
# x = mock(X.new)
|
11
|
-
# expect(x).to_receive(:y).and_throw(:z)
|
12
|
-
#
|
13
|
-
def and_throw symbol = nil, &block
|
14
|
-
@throw = [symbol, block]
|
15
|
-
end
|
16
|
-
|
17
|
-
def assert_message_thrown_as_expected
|
18
|
-
return unless @throw
|
19
|
-
received_messages.each do |log|
|
20
|
-
next unless f = Tiramisu.assert_thrown_as_expected(log, *@throw)
|
21
|
-
Tiramisu.fail(f, log[:caller])
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module Tiramisu
|
2
|
-
class Mock
|
3
|
-
class Expectation
|
4
|
-
|
5
|
-
# ensure expected message received with correct arguments
|
6
|
-
#
|
7
|
-
# @note if block given it will have precedence over arguments
|
8
|
-
#
|
9
|
-
# @example
|
10
|
-
# test :some_test do
|
11
|
-
# some_object = mock(SomeObject.new)
|
12
|
-
# expect(some_object).to_receive(:some_method).with(:some, :args)
|
13
|
-
# # call `some_object.some_method(:some, :args)` for test to pass
|
14
|
-
# end
|
15
|
-
#
|
16
|
-
def with *args, &block
|
17
|
-
@with = block || args
|
18
|
-
self
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
def assert_message_received_with_correct_arguments
|
23
|
-
return unless @with
|
24
|
-
if @with.is_a?(Proc)
|
25
|
-
received_messages.find {|log| @with.call(log[:arguments])} || Tiramisu.fail([
|
26
|
-
'Looks like :%s message never was called with expected arguments' % expected_message,
|
27
|
-
'See validation block'
|
28
|
-
], @caller)
|
29
|
-
else
|
30
|
-
received_messages.find {|log| log[:arguments] == @with} || Tiramisu.fail([
|
31
|
-
'Looks like :%s message never was called with expected arguments:' % expected_message,
|
32
|
-
Array(@with).map {|x| Tiramisu.pp(x)}.join(', ')
|
33
|
-
], @caller)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
module Tiramisu
|
2
|
-
class Mock
|
3
|
-
class Expectation
|
4
|
-
|
5
|
-
attr_reader :expected_message, :received_messages
|
6
|
-
|
7
|
-
def initialize expected_message, assert, caller
|
8
|
-
@expected_message = expected_message.to_sym
|
9
|
-
@assert = assert
|
10
|
-
@caller = caller
|
11
|
-
end
|
12
|
-
|
13
|
-
def validate received_messages
|
14
|
-
@received_messages = received_messages[expected_message] || []
|
15
|
-
return refute_message_received unless @assert
|
16
|
-
assert_message_received
|
17
|
-
assert_message_received_with_correct_arguments
|
18
|
-
assert_message_returned_correct_value
|
19
|
-
assert_message_raised_as_expected
|
20
|
-
assert_message_thrown_as_expected
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
def assert_message_received
|
25
|
-
Tiramisu.fail('Expected %s to receive %s message' % [
|
26
|
-
Tiramisu.pp(@object),
|
27
|
-
Tiramisu.pp(expected_message)
|
28
|
-
], @caller) if received_messages.empty?
|
29
|
-
end
|
30
|
-
|
31
|
-
def refute_message_received
|
32
|
-
Tiramisu.fail('Not Expected %s to receive %s message' % [
|
33
|
-
Tiramisu.pp(@object),
|
34
|
-
Tiramisu.pp(expected_message)
|
35
|
-
], @caller) if received_messages.any?
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
require 'tiramisu/mock/expectation/with'
|
42
|
-
require 'tiramisu/mock/expectation/return'
|
43
|
-
require 'tiramisu/mock/expectation/raise'
|
44
|
-
require 'tiramisu/mock/expectation/throw'
|
data/lib/tiramisu/mock.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
module Tiramisu
|
2
|
-
class Mock
|
3
|
-
|
4
|
-
def initialize object
|
5
|
-
@object = object
|
6
|
-
end
|
7
|
-
|
8
|
-
instance_methods.each do |m|
|
9
|
-
define_method m do |*a, &b|
|
10
|
-
__tiramisu__register_and_send__(m, a, b)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def method_missing m, *a, &b
|
15
|
-
__tiramisu__register_and_send__(m, a, b)
|
16
|
-
end
|
17
|
-
|
18
|
-
def __tiramisu__expectations__
|
19
|
-
@__tiramisu__expectations__ ||= []
|
20
|
-
end
|
21
|
-
|
22
|
-
def __tiramisu__messages__
|
23
|
-
@__tiramisu__messages__ ||= {}
|
24
|
-
end
|
25
|
-
|
26
|
-
def __tiramisu__validate_messages__
|
27
|
-
__tiramisu__messages__.freeze
|
28
|
-
__tiramisu__expectations__.each do |expectation|
|
29
|
-
expectation.validate(__tiramisu__messages__)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
def __tiramisu__register_and_send__ m, a, b
|
35
|
-
log = {arguments: a, block: b, caller: Tiramisu.relative_location(caller[1])}
|
36
|
-
(__tiramisu__messages__[m] ||= []).push(log)
|
37
|
-
begin
|
38
|
-
log[:returned] = @object.__send__(m, *a, &b)
|
39
|
-
rescue UncaughtThrowError => e
|
40
|
-
log[:thrown] = Tiramisu.extract_thrown_symbol(e)
|
41
|
-
rescue Exception => e
|
42
|
-
log[:raised] = e
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
require 'tiramisu/mock/expectation'
|