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.
@@ -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'