expectations 0.2.1 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -57,13 +57,25 @@ expectations can be used for state based and behavior based testing.
57
57
  end
58
58
 
59
59
  # Behavior based test using a traditional mock
60
- expect mock.to_receive(:dial).with("2125551212").times(2) do |phone|
60
+ expect mock.to.receive(:dial).with("2125551212").times(2) do |phone|
61
+ phone.dial("2125551212")
62
+ phone.dial("2125551212")
63
+ end
64
+
65
+ # Behavior based test using a stub
66
+ expect stub.to.receive(:dial).with("2125551212").times(2) do |phone|
67
+ phone.dial("2125551212")
68
+ phone.dial("2125551212")
69
+ end
70
+
71
+ # Behavior based test using a stub_everything
72
+ expect stub_everything.to.receive(:dial).with("2125551212").times(2) do |phone|
61
73
  phone.dial("2125551212")
62
74
  phone.dial("2125551212")
63
75
  end
64
76
 
65
77
  # Behavior based test on a concrete mock
66
- expect Object.to_receive(:deal) do
78
+ expect Object.to.receive(:deal) do
67
79
  Object.deal
68
80
  end
69
81
 
@@ -140,10 +152,28 @@ expectations can be used for state based and behavior based testing.
140
152
  end
141
153
  end
142
154
  # State based delegation test
143
- expect klass.new.to_delegate(:save).to(:record) do |instance|
155
+ expect klass.new.to.delegate(:save).to(:record) do |instance|
144
156
  instance.save(1)
145
157
  end
146
158
 
159
+ # this is normally defined in the file specific to the class
160
+ klass = Class.new do
161
+ attr_accessor :started
162
+ end
163
+ # State based fluent interface boolean test using to be
164
+ expect klass.new.to.be.started do |process|
165
+ process.started = true
166
+ end
167
+
168
+ # this is normally defined in the file specific to the class
169
+ klass = Class.new do
170
+ attr_accessor :finished
171
+ end
172
+ # State based fluent interface boolean test using to have
173
+ expect klass.new.to.have.finished do |process|
174
+ process.finished = true
175
+ end
176
+
147
177
  end
148
178
 
149
179
  == Contributors
@@ -1,22 +1,40 @@
1
- class Expectations::DelegateRecorder
2
- attr_reader :klass, :subject, :meth
3
- def initialize(klass, meth)
4
- @klass, @subject_mock, @meth = klass, Mocha::Mock.new, meth
5
- @subject_mock.expects(meth).returns(:the_subjects_response)
1
+ module Expectations::DelegateRecorder
2
+ attr_accessor :delegation_result
3
+
4
+ def delegate!(meth)
5
+ @subject_mock = Mocha::Mock.new
6
+ @meth = meth
7
+ @subject_mock.expects(meth).returns(:a_delegated_return_value)
8
+ recorder = self
9
+ mod = Module.new do
10
+ define_method meth do |*args|
11
+ recorder.delegation_result = super
12
+ end
13
+ end
14
+ subject.extend mod
6
15
  end
7
16
 
8
- def to(subject)
9
- @subject = subject
17
+ def to(receiver)
18
+ @receiver = receiver
10
19
  self
11
20
  end
12
21
 
13
- def mock
14
- @klass.stubs(@subject).returns(@subject_mock)
15
- @klass
22
+ def subject!
23
+ subject.stubs(@receiver).returns(@subject_mock)
24
+ subject
16
25
  end
17
26
 
18
- def verify(actual)
27
+ def verify
19
28
  @subject_mock.verify
20
- actual == :the_subjects_response
29
+ :a_delegated_return_value == delegation_result
30
+ end
31
+
32
+ def failure_message
33
+ "expected #{subject}.#{@meth} to return the value of #{subject}.#{@receiver}.#{@meth}; however, #{subject}.#{@meth} returned #{delegation_result}"
21
34
  end
35
+
36
+ def mocha_error_message(ex)
37
+ "expected #{subject} to delegate #{@meth} to #{@receiver}; however, #{subject}.#{@meth} was never called"
38
+ end
39
+
22
40
  end
@@ -2,14 +2,11 @@ class Expectations::Expectation
2
2
  include Mocha::Standalone
3
3
  attr_accessor :expected, :block, :file, :line, :actual
4
4
 
5
- def initialize(expected, &block)
5
+ def initialize(expected, file, line, &block)
6
6
  self.expected, self.block = expected, block
7
- self.file, self.line = eval "[__FILE__, __LINE__]", block.binding
7
+ self.file, self.line = file, line.to_i
8
8
  case
9
- when expected.is_a?(Expectations::DelegateRecorder) then extend(Expectations::DelegateExpectation)
10
- when expected.is_a?(Expectations::PositiveStateBasedRecorder) then extend(Expectations::RecordedStateBasedExpectation)
11
- when expected.is_a?(Expectations::NegativeStateBasedRecorder) then extend(Expectations::RecordedStateBasedExpectation)
12
- when expected.is_a?(Expectations::MockRecorder) then extend(Expectations::BehaviorBasedExpectation)
9
+ when expected.is_a?(Expectations::Recorder) then extend(Expectations::RecordedExpectation)
13
10
  else extend(Expectations::StateBasedExpectation)
14
11
  end
15
12
  end
@@ -1,40 +1,31 @@
1
- class Expectations::MockRecorder
2
- attr_accessor :target
3
- def initialize(target, method=nil)
4
- self.target = target
5
- events << MockEvent.new(:expects, [method]) unless method.nil?
6
- end
1
+ module Expectations::MockRecorder
7
2
 
8
- def to_receive(method)
9
- events << MockEvent.new(:expects, [method])
3
+ def receive!(method)
4
+ method_stack << [:expects, [method]]
10
5
  self
11
6
  end
12
7
 
13
- def events
14
- @events ||= []
8
+ def method_stack
9
+ @method_stack ||= []
15
10
  end
16
11
 
17
- def method_missing(method, *args)
18
- super if events.empty?
19
- events << MockEvent.new(method, args)
12
+ def method_missing(sym, *args)
13
+ super if method_stack.empty?
14
+ method_stack << [sym, args]
20
15
  self
21
16
  end
22
17
 
23
- def mock
24
- events.inject(target) do |result, element|
25
- result.send(element.method, *element.args)
26
- end
27
- target
18
+ def subject!
19
+ method_stack.inject(subject) { |result, element| result.send element.first, *element.last }
20
+ subject
28
21
  end
29
22
 
30
23
  def verify
31
- target.verify
24
+ subject.verify
32
25
  end
33
26
 
34
- class MockEvent
35
- attr_accessor :method, :args
36
- def initialize(method, args)
37
- self.method, self.args = method, args
38
- end
27
+ def mocha_error_message(ex)
28
+ ex.message
39
29
  end
30
+
40
31
  end
@@ -1,21 +1,13 @@
1
1
  class Object
2
- def to_receive(method)
3
- Expectations::MockRecorder.new(self, method)
4
- end
5
-
6
- def to_delegate(method)
7
- Expectations::DelegateRecorder.new(self, method)
8
- end
9
-
10
2
  def to
11
- Expectations::StateBasedRecorder.new(self).extend Expectations::PositiveStateBasedRecorder
3
+ Expectations::Recorder.new(self)
12
4
  end
13
5
 
14
6
  def not
15
7
  Not.new(self)
16
8
  end
17
9
 
18
- def __negate__
10
+ def not!
19
11
  !self
20
12
  end
21
13
 
@@ -27,7 +19,7 @@ class Object
27
19
  end
28
20
 
29
21
  def method_missing(sym, *args, &blk)
30
- @subject.send(sym,*args,&blk).__negate__
22
+ @subject.send(sym,*args,&blk).not!
31
23
  end
32
24
  end
33
25
 
@@ -1,14 +1,17 @@
1
- module Expectations::RecordedStateBasedExpectation
1
+ module Expectations::RecordedExpectation
2
2
  def execute
3
3
  begin
4
4
  mocha_setup
5
- instance_exec expected.subject, &block
6
- if expected.verify
5
+ instance_exec expected.subject!, &block if block
6
+ if expected.verify!
7
7
  self.extend(Expectations::Results::Fulfilled)
8
8
  else
9
9
  self.extend(Expectations::Results::StateBasedFailure)
10
- self.message = expected.message
10
+ self.message = expected.failure_message
11
11
  end
12
+ rescue Mocha::ExpectationError => ex
13
+ self.extend(Expectations::Results::BehaviorBasedFailure)
14
+ self.message = expected.mocha_error_message(ex)
12
15
  rescue Exception => ex
13
16
  self.extend(Expectations::Results::Error)
14
17
  self.exception = ex
@@ -0,0 +1,44 @@
1
+ class Expectations::Recorder
2
+
3
+ attr_reader :subject
4
+ def initialize(subject)
5
+ @subject = subject
6
+ end
7
+
8
+ def receive(meth)
9
+ extend Expectations::MockRecorder
10
+ receive!(meth)
11
+ self
12
+ end
13
+
14
+ def have
15
+ extend Expectations::StateBasedRecorder
16
+ message_parts << "to have"
17
+ self
18
+ end
19
+
20
+ def be
21
+ extend Expectations::StateBasedRecorder
22
+ message_parts << "to be"
23
+ self
24
+ end
25
+
26
+ def delegate(method)
27
+ extend Expectations::DelegateRecorder
28
+ delegate!(method)
29
+ self
30
+ end
31
+
32
+ def subject!
33
+ subject
34
+ end
35
+
36
+ def not!
37
+ extend Expectations::ReverseResult
38
+ end
39
+
40
+ def verify!
41
+ verify
42
+ end
43
+
44
+ end
@@ -0,0 +1,7 @@
1
+ module Expectations::ReverseResult
2
+
3
+ def verify!
4
+ not verify
5
+ end
6
+
7
+ end
@@ -1,29 +1,26 @@
1
- class Expectations::StateBasedRecorder
2
- attr_reader :subject
3
- def initialize(subject)
4
- @subject = subject
5
- @message_parts = []
1
+ module Expectations::StateBasedRecorder
2
+
3
+ def verify
4
+ method_stack.inject(subject) { |result, element| result.send element.first, *element.last }
6
5
  end
7
-
8
- def have
9
- @message_parts << "have"
10
- self
11
- end
12
-
13
- def be
14
- @message_parts << "be"
15
- self
6
+
7
+ def failure_message
8
+ "expected #{subject} #{@message_parts.join(" ")}"
16
9
  end
17
-
10
+
18
11
  def method_stack
19
12
  @method_stack ||= []
20
13
  end
21
14
 
15
+ def message_parts
16
+ @message_parts ||= self.is_a?(Expectations::ReverseResult) ? [:not] : []
17
+ end
18
+
22
19
  def method_missing(sym, *args)
23
20
  @message_parts << "#{sym}"
24
21
  args.each { |arg| @message_parts << arg.inspect }
25
22
  method_stack << [sym, args]
26
23
  self
27
24
  end
28
-
25
+
29
26
  end
@@ -1,8 +1,6 @@
1
1
  class Expectations::Suite
2
2
 
3
- def mock
4
- Expectations::MockRecorder.new(Mocha::Mock.new)
5
- end
3
+ include Mocha::Standalone
6
4
 
7
5
  def xml(string)
8
6
  Expectations::XmlString.new(string)
@@ -20,7 +18,7 @@ class Expectations::Suite
20
18
  end
21
19
 
22
20
  def expect(expected, &block)
23
- expectations << Expectations::Expectation.new(expected, &block)
21
+ expectations << Expectations::Expectation.new(expected, *caller.first.split(/:/), &block)
24
22
  end
25
23
 
26
24
  def do_not_run
@@ -32,7 +30,6 @@ class Expectations::Suite
32
30
  [expectations.inject { |result, expectation| expectation.line > line.to_i ? result : expectation }]
33
31
  end
34
32
 
35
- private
36
33
  def expectations
37
34
  @expectations ||= []
38
35
  end
data/lib/expectations.rb CHANGED
@@ -16,12 +16,11 @@ require 'benchmark'
16
16
  require 'erb'
17
17
  require 'fileutils'
18
18
  require File.expand_path(File.dirname(__FILE__) + '/expectations/object')
19
- require File.expand_path(File.dirname(__FILE__) + '/expectations/delegate_expectation')
19
+ require File.expand_path(File.dirname(__FILE__) + '/expectations/recorder')
20
20
  require File.expand_path(File.dirname(__FILE__) + '/expectations/delegate_recorder')
21
- require File.expand_path(File.dirname(__FILE__) + '/expectations/recorded_state_based_expectation')
21
+ require File.expand_path(File.dirname(__FILE__) + '/expectations/recorded_expectation')
22
22
  require File.expand_path(File.dirname(__FILE__) + '/expectations/state_based_recorder')
23
- require File.expand_path(File.dirname(__FILE__) + '/expectations/positive_state_based_recorder')
24
- require File.expand_path(File.dirname(__FILE__) + '/expectations/negative_state_based_recorder')
23
+ require File.expand_path(File.dirname(__FILE__) + '/expectations/reverse_result')
25
24
  require File.expand_path(File.dirname(__FILE__) + '/expectations/xml_string')
26
25
  require File.expand_path(File.dirname(__FILE__) + '/expectations/regexp')
27
26
  require File.expand_path(File.dirname(__FILE__) + '/expectations/range')
@@ -31,7 +30,6 @@ require File.expand_path(File.dirname(__FILE__) + '/expectations/suite')
31
30
  require File.expand_path(File.dirname(__FILE__) + '/expectations/suite_runner')
32
31
  require File.expand_path(File.dirname(__FILE__) + '/expectations/suite_results')
33
32
  require File.expand_path(File.dirname(__FILE__) + '/expectations/expectation')
34
- require File.expand_path(File.dirname(__FILE__) + '/expectations/behavior_based_expectation')
35
33
  require File.expand_path(File.dirname(__FILE__) + '/expectations/state_based_expectation')
36
34
  require File.expand_path(File.dirname(__FILE__) + '/expectations/mock_recorder')
37
35
  require File.expand_path(File.dirname(__FILE__) + '/expectations/results')
data/rakefile.rb CHANGED
@@ -46,7 +46,7 @@ specification = Gem::Specification.new do |s|
46
46
  expect NoMethodError do
47
47
  Object.invalid_method_call
48
48
  end."
49
- s.version = "0.2.1"
49
+ s.version = "0.2.3"
50
50
  s.author = 'Jay Fields'
51
51
  s.description = "A lightweight unit testing framework. Tests (expectations) will be written as follows
52
52
  expect 2 do
@@ -2,43 +2,27 @@ require File.dirname(__FILE__) + "/../test_helper"
2
2
 
3
3
  Expectations do
4
4
  expect Expectations::Results::StateBasedFailure do
5
- Expectations::Expectation.new(1) { 2 }.execute
5
+ Expectations::Expectation.new(1, nil, nil) { 2 }.execute
6
6
  end
7
7
 
8
8
  expect Expectations::Results::Fulfilled do
9
- Expectations::Expectation.new(1) { 1 }.execute
9
+ Expectations::Expectation.new(1, nil, nil) { 1 }.execute
10
10
  end
11
11
 
12
12
  expect Expectations::Results::Error do
13
- Expectations::Expectation.new(1) { raise }.execute
13
+ Expectations::Expectation.new(1, nil, nil) { raise }.execute
14
14
  end
15
15
 
16
16
  expect "undefined method `no_method' for Object:Class" do
17
- Expectations::Expectation.new(ArgumentError) { Object.no_method }.execute.exception.to_s
17
+ Expectations::Expectation.new(ArgumentError, nil, nil) { Object.no_method }.execute.exception.to_s
18
18
  end
19
19
 
20
20
  expect Expectations::Results::Fulfilled do
21
- Expectations::Expectation.new(NoMethodError) { Object.no_method }.execute
21
+ Expectations::Expectation.new(NoMethodError, nil, nil) { Object.no_method }.execute
22
22
  end
23
23
 
24
24
  expect nil do
25
- Expectations::Expectation.new(String) { Object.no_method }.execute.actual
25
+ Expectations::Expectation.new(String, nil, nil) { Object.no_method }.execute.actual
26
26
  end
27
27
 
28
- expect __LINE__ + 1 do
29
- Expectations::Expectation.new(1) { 2 }.execute.line
30
- end
31
-
32
- expect __LINE__ + 1 do
33
- Expectations::Expectation.new(1) { raise }.execute.line
34
- end
35
-
36
- expect __FILE__ do
37
- Expectations::Expectation.new(1) { 2 }.execute.file
38
- end
39
-
40
- expect __FILE__ do
41
- Expectations::Expectation.new(1) { raise }.execute.file
42
- end
43
-
44
28
  end
@@ -2,11 +2,11 @@ require File.dirname(__FILE__) + "/../test_helper"
2
2
 
3
3
  Expectations do
4
4
 
5
- expect Expectations::SuiteRunner.to_receive(:suite_eval) do |suite|
5
+ expect Expectations::SuiteRunner.to.receive(:suite_eval) do |suite|
6
6
  Expectations { }
7
7
  end
8
8
 
9
- expect Expectations::SuiteRunner.to_receive(:do_not_run) do |suite|
9
+ expect Expectations::SuiteRunner.to.receive(:do_not_run) do |suite|
10
10
  Expectations { Object.no_method_error_should_raise } rescue nil
11
11
  end
12
12
 
@@ -1,12 +1,12 @@
1
1
  require File.dirname(__FILE__) + "/../test_helper"
2
2
 
3
3
  Expectations do
4
- expect mock.to_receive(:instance_eval) do |suite|
4
+ expect mock.to.receive(:instance_eval) do |suite|
5
5
  Expectations::SuiteRunner.stubs(:instance).returns stub(:suite => suite)
6
6
  Expectations::SuiteRunner.suite_eval {}
7
7
  end
8
8
 
9
- expect mock.to_receive(:do_not_run) do |suite|
9
+ expect mock.to.receive(:do_not_run) do |suite|
10
10
  Expectations::SuiteRunner.stubs(:instance).returns stub(:suite => suite)
11
11
  Expectations::SuiteRunner.do_not_run
12
12
  end
@@ -20,12 +20,8 @@ Expectations do
20
20
  suite.execute(Silent).succeeded?
21
21
  end
22
22
 
23
- expect Expectations::MockRecorder do
24
- Expectations::Suite.new.mock
25
- end
26
-
27
23
  expect Mocha::Mock do
28
- Expectations::Suite.new.mock.target
24
+ Expectations::Suite.new.mock
29
25
  end
30
26
 
31
27
  expect 3 do
@@ -50,4 +46,28 @@ Expectations do
50
46
  suite.expectations_for(__LINE__ - 1).first.expected
51
47
  end
52
48
 
49
+ expect __LINE__ + 2 do
50
+ suite = Expectations::Suite.new
51
+ suite.expect(1) { 2 }
52
+ suite.expectations.first.line
53
+ end
54
+
55
+ expect __LINE__ + 2 do
56
+ suite = Expectations::Suite.new
57
+ suite.expect(1) { raise }
58
+ suite.expectations.first.line
59
+ end
60
+
61
+ expect __FILE__ do
62
+ suite = Expectations::Suite.new
63
+ suite.expect(1) { 2 }
64
+ suite.expectations.first.file
65
+ end
66
+
67
+ expect __FILE__ do
68
+ suite = Expectations::Suite.new
69
+ suite.expect(1) { raise }
70
+ suite.expectations.first.file
71
+ end
72
+
53
73
  end
@@ -15,7 +15,7 @@ Expectations do
15
15
 
16
16
  expect Expectations::Results::BehaviorBasedFailure do
17
17
  suite = Expectations::Suite.new
18
- suite.expect(mock.to_receive(:dial).with("2125551212").times(2)) do |phone|
18
+ suite.expect Mocha::Mock.new.to.receive(:dial).with("2125551212").times(2) do |phone|
19
19
  phone.dial("2125551212")
20
20
  phone.dial("2125551212")
21
21
  phone.dial("2125551212")
@@ -25,13 +25,15 @@ Expectations do
25
25
 
26
26
  expect Expectations::Results::BehaviorBasedFailure do
27
27
  suite = Expectations::Suite.new
28
- suite.expect(mock.to_receive(:dial).with("2125551212").times(2)) { |phone| phone.dial("2125551212") }
28
+ suite.expect Mocha::Mock.new.to.receive(:dial).with("2125551212").times(2) do |phone|
29
+ phone.dial("2125551212")
30
+ end
29
31
  suite.execute(Silent).expectations.first
30
32
  end
31
33
 
32
34
  expect Expectations::Results::BehaviorBasedFailure do
33
35
  suite = Expectations::Suite.new
34
- suite.expect(Object.to_receive(:deal)) { }
36
+ suite.expect(Object.to.receive(:deal)) { }
35
37
  suite.execute(Silent).expectations.first
36
38
  end
37
39
 
@@ -13,13 +13,25 @@ Expectations do
13
13
  end
14
14
 
15
15
  # Behavior based test using a traditional mock
16
- expect mock.to_receive(:dial).with("2125551212").times(2) do |phone|
16
+ expect mock.to.receive(:dial).with("2125551212").times(2) do |phone|
17
+ phone.dial("2125551212")
18
+ phone.dial("2125551212")
19
+ end
20
+
21
+ # Behavior based test using a stub
22
+ expect stub.to.receive(:dial).with("2125551212").times(2) do |phone|
23
+ phone.dial("2125551212")
24
+ phone.dial("2125551212")
25
+ end
26
+
27
+ # Behavior based test using a stub_everything
28
+ expect stub_everything.to.receive(:dial).with("2125551212").times(2) do |phone|
17
29
  phone.dial("2125551212")
18
30
  phone.dial("2125551212")
19
31
  end
20
32
 
21
33
  # Behavior based test on a concrete mock
22
- expect Object.to_receive(:deal) do
34
+ expect Object.to.receive(:deal) do
23
35
  Object.deal
24
36
  end
25
37
 
@@ -96,8 +108,26 @@ Expectations do
96
108
  end
97
109
  end
98
110
  # State based delegation test
99
- expect klass.new.to_delegate(:save).to(:record) do |instance|
111
+ expect klass.new.to.delegate(:save).to(:record) do |instance|
100
112
  instance.save(1)
101
113
  end
102
114
 
115
+ # this is normally defined in the file specific to the class
116
+ klass = Class.new do
117
+ attr_accessor :started
118
+ end
119
+ # State based fluent interface boolean test using to be
120
+ expect klass.new.to.be.started do |process|
121
+ process.started = true
122
+ end
123
+
124
+ # this is normally defined in the file specific to the class
125
+ klass = Class.new do
126
+ attr_accessor :finished
127
+ end
128
+ # State based fluent interface boolean test using to have
129
+ expect klass.new.to.have.finished do |process|
130
+ process.finished = true
131
+ end
132
+
103
133
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expectations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jay Fields
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-03-03 00:00:00 -08:00
12
+ date: 2008-03-07 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -30,19 +30,17 @@ extensions: []
30
30
  extra_rdoc_files:
31
31
  - README
32
32
  files:
33
- - lib/expectations/behavior_based_expectation.rb
34
- - lib/expectations/delegate_expectation.rb
35
33
  - lib/expectations/delegate_recorder.rb
36
34
  - lib/expectations/expectation.rb
37
35
  - lib/expectations/mock_recorder.rb
38
36
  - lib/expectations/module.rb
39
- - lib/expectations/negative_state_based_recorder.rb
40
37
  - lib/expectations/object.rb
41
- - lib/expectations/positive_state_based_recorder.rb
42
38
  - lib/expectations/range.rb
43
- - lib/expectations/recorded_state_based_expectation.rb
39
+ - lib/expectations/recorded_expectation.rb
40
+ - lib/expectations/recorder.rb
44
41
  - lib/expectations/regexp.rb
45
42
  - lib/expectations/results.rb
43
+ - lib/expectations/reverse_result.rb
46
44
  - lib/expectations/state_based_expectation.rb
47
45
  - lib/expectations/state_based_recorder.rb
48
46
  - lib/expectations/string.rb
@@ -1,20 +0,0 @@
1
- module Expectations::BehaviorBasedExpectation
2
- def execute
3
- begin
4
- mocha_setup
5
- instance_exec expected.mock, &block
6
- expected.verify
7
- self.extend(Expectations::Results::Fulfilled)
8
- rescue Mocha::ExpectationError => ex
9
- self.extend(Expectations::Results::BehaviorBasedFailure)
10
- self.message = ex.message
11
- rescue Exception => ex
12
- self.extend(Expectations::Results::Error)
13
- self.exception = ex
14
- ensure
15
- mocha_teardown
16
- end
17
- self
18
- end
19
-
20
- end
@@ -1,24 +0,0 @@
1
- module Expectations::DelegateExpectation
2
- def execute
3
- begin
4
- mocha_setup
5
- actual = instance_exec expected.mock, &block
6
- if expected.verify(actual)
7
- self.extend(Expectations::Results::Fulfilled)
8
- else
9
- self.extend(Expectations::Results::StateBasedFailure)
10
- self.message = "Delegation may have occurred; however, the return value could not be verified. Did you specify something after the delegation method?"
11
- end
12
- rescue Mocha::ExpectationError => ex
13
- self.extend(Expectations::Results::BehaviorBasedFailure)
14
- self.message = "Expected #{expected.klass} to delegate #{expected.meth} to #{expected.subject}; however, #{expected.subject}.#{expected.meth} was never called"
15
- rescue Exception => ex
16
- self.extend(Expectations::Results::Error)
17
- self.exception = ex
18
- ensure
19
- mocha_teardown
20
- end
21
- self
22
- end
23
-
24
- end
@@ -1,11 +0,0 @@
1
- module Expectations::NegativeStateBasedRecorder
2
-
3
- def verify
4
- not method_stack.inject(subject) { |result, element| result.send element.first, *element.last }
5
- end
6
-
7
- def message
8
- "expected #{subject} not to #{@message_parts.join(" ")}"
9
- end
10
-
11
- end
@@ -1,15 +0,0 @@
1
- module Expectations::PositiveStateBasedRecorder
2
-
3
- def verify
4
- method_stack.inject(subject) { |result, element| result.send element.first, *element.last }
5
- end
6
-
7
- def __negate__
8
- extend Expectations::NegativeStateBasedRecorder
9
- end
10
-
11
- def message
12
- "expected #{subject} to #{@message_parts.join(" ")}"
13
- end
14
-
15
- end