tiramisu 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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'