tiramisu 0.0.1 → 0.0.2
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.
- 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'
|