verified_double 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8d1eb25be783652e30676de88ae7f8015cff10b6
4
- data.tar.gz: b85e9d5184092922884ea5fe2da0d88006b4ff26
3
+ metadata.gz: 97ca8fc74d9ad9dddff6b285850a673f46e092f1
4
+ data.tar.gz: 638a65c4724ac5023ba85c717cda05c93bf9fde9
5
5
  SHA512:
6
- metadata.gz: 6cb478d8d914bf335840d899141f476da301a2fa827bc6e633198bd66284bfb32203125a056f021bd77aec0b5ce017ec12f21642b508e2c7c2694f6316b87166
7
- data.tar.gz: 4154b09a4cea4f65b23116ed916d5191c82f8c4a466ba07314b170d629c775e2cf8b6f2fa33d68affdbbea4cdf03f969d348f28f2fc7d6981f36c807bea41712
6
+ metadata.gz: e813041bbf2731d2b2b4f7aae3bb547c1e57cf85181da4422f563e0ad725b3b90841a9fae2d32ae1bc9597f3767077de97202b658e70880596d315c0af5d51db
7
+ data.tar.gz: 3180a6b9822c22912b9117cc993be47ebbfe8770c5bef2e3304a706005f141741b731396598e74528a3f03a4da0243a97d9a593c76a192fcacd35607f462b6bb
data/CHANGELOG.markdown CHANGED
@@ -1,3 +1,8 @@
1
+ 0.5.3 - 2013-12-26
2
+ ------------------
3
+
4
+ * Implement any_instance mocks with new RSpec syntax.
5
+
1
6
  0.5.2 - 2013-12-26
2
7
  ------------------
3
8
 
data/README.md CHANGED
@@ -153,12 +153,12 @@ end
153
153
  Aside for instance and class doubles, VerifiedDouble also supports `any_instance` mocks:
154
154
 
155
155
  ```
156
- VerifiedDouble.any_instance_of(Collaborator)
157
- .should_receive(:some_method).with(input).and_return(output)
158
- ```
156
+ VerifiedDouble.expect_any_instance_of(Collaborator)
157
+ .to receive(:some_method).with(input).and_return(output)
159
158
 
160
- You'll need to use should_receive for `any_instance` mocks. I still have to figure
161
- out how to make it work with RSpec's `expect_any_instance_of` syntax :p
159
+ VerifiedDouble.allow_any_instance_of(Collaborator)
160
+ .to receive(:some_method).with(input).and_return(output)
161
+ ```
162
162
 
163
163
  ## Complete documentation
164
164
 
@@ -1,3 +1,8 @@
1
+ 0.5.3 - 2013-12-26
2
+ ------------------
3
+
4
+ * Implement any_instance mocks with new RSpec syntax.
5
+
1
6
  0.5.2 - 2013-12-26
2
7
  ------------------
3
8
 
@@ -45,8 +45,8 @@ Feature: 60. Any instance
45
45
  let(:output) { SomeOutput.new }
46
46
 
47
47
  it "tests something" do
48
- VerifiedDouble.any_instance_of(Collaborator)
49
- .should_receive(:some_method).with(input).and_return(output)
48
+ VerifiedDouble.expect_any_instance_of(Collaborator)
49
+ .to receive(:some_method).with(input).and_return(output)
50
50
 
51
51
  ObjectUnderTest.new.do_something(Collaborator.new, input)
52
52
  end
@@ -77,8 +77,8 @@ Feature: 60. Any instance
77
77
  let(:output) { SomeOutput.new }
78
78
 
79
79
  it "tests something" do
80
- VerifiedDouble.any_instance_of(Collaborator)
81
- .should_receive(:some_method).with(input).and_return(output)
80
+ VerifiedDouble.expect_any_instance_of(Collaborator)
81
+ .to receive(:some_method).with(input).and_return(output)
82
82
 
83
83
  ObjectUnderTest.new.do_something(Collaborator.new, input)
84
84
  end
@@ -93,3 +93,62 @@ Feature: 60. Any instance
93
93
 
94
94
  1. Collaborator#some_method(SomeInput)=>SomeOutput
95
95
  """
96
+
97
+ Scenario: Verify any instance of a class
98
+
99
+ Given a test that uses VerifiedDouble to stub any instance of the class:
100
+ """
101
+ require 'spec_helper'
102
+ describe ObjectUnderTest do
103
+ let(:input) { SomeInput.new }
104
+ let(:output) { SomeOutput.new }
105
+
106
+ it "tests something" do
107
+ VerifiedDouble.allow_any_instance_of(Collaborator)
108
+ .to receive(:some_method).with(input).and_return(output)
109
+
110
+ ObjectUnderTest.new.do_something(Collaborator.new, input)
111
+ end
112
+ end
113
+ """
114
+
115
+ And the test suite has a contract test for the mock:
116
+ """
117
+ require 'spec_helper'
118
+
119
+ describe 'Collaborator' do
120
+ it "tests something",
121
+ verifies_contract: 'Collaborator#some_method(SomeInput)=>SomeOutput' do
122
+ # do nothing
123
+ end
124
+ end
125
+ """
126
+
127
+ When I run the test suite
128
+ Then I should not see any output saying the stub is unverified
129
+
130
+ Scenario: Unverified any_instance stub
131
+ Given a test that uses VerifiedDouble to stub any instance of the class:
132
+ """
133
+ require 'spec_helper'
134
+ describe ObjectUnderTest do
135
+ let(:input) { SomeInput.new }
136
+ let(:output) { SomeOutput.new }
137
+
138
+ it "tests something" do
139
+ VerifiedDouble.allow_any_instance_of(Collaborator)
140
+ .to receive(:some_method).with(input).and_return(output)
141
+
142
+ ObjectUnderTest.new.do_something(Collaborator.new, input)
143
+ end
144
+ end
145
+ """
146
+
147
+ And the test suite does not have a contract test for the stub
148
+ When I run the test suite
149
+ Then I should be informed that the stub is unverified:
150
+ """
151
+ The following mocks are not verified:
152
+
153
+ 1. Collaborator#some_method(SomeInput)=>SomeOutput
154
+ """
data/features/readme.md CHANGED
@@ -153,12 +153,12 @@ end
153
153
  Aside for instance and class doubles, VerifiedDouble also supports `any_instance` mocks:
154
154
 
155
155
  ```
156
- VerifiedDouble.any_instance_of(Collaborator)
157
- .should_receive(:some_method).with(input).and_return(output)
158
- ```
156
+ VerifiedDouble.expect_any_instance_of(Collaborator)
157
+ .to receive(:some_method).with(input).and_return(output)
159
158
 
160
- You'll need to use should_receive for `any_instance` mocks. I still have to figure
161
- out how to make it work with RSpec's `expect_any_instance_of` syntax :p
159
+ VerifiedDouble.allow_any_instance_of(Collaborator)
160
+ .to receive(:some_method).with(input).and_return(output)
161
+ ```
162
162
 
163
163
  ## Complete documentation
164
164
 
@@ -14,6 +14,10 @@ Given /^a test that uses VerifiedDouble to stub an object:$/ do |string|
14
14
  write_file 'spec/main_spec.rb', string
15
15
  end
16
16
 
17
+ Given(/^a test that uses VerifiedDouble to stub any instance of the class:$/) do |string|
18
+ write_file 'spec/main_spec.rb', string
19
+ end
20
+
17
21
  Given /^a test that uses VerifiedDouble to mock a class:$/ do |string|
18
22
  write_file 'spec/main_spec.rb', string
19
23
  end
@@ -34,6 +38,10 @@ Given /^the test suite does not have a contract test for the mock$/ do
34
38
  # do nothing
35
39
  end
36
40
 
41
+ Given /^the test suite does not have a contract test for the stub$/ do
42
+ # do nothing
43
+ end
44
+
37
45
  When /^I run the test suite$/ do
38
46
  run_simple(unescape("rspec"), false)
39
47
  end
@@ -43,6 +51,11 @@ Then /^I should be informed that the mock is unverified:$/ do |string|
43
51
  assert_success('pass')
44
52
  end
45
53
 
54
+ Then /^I should be informed that the stub is unverified:$/ do |string|
55
+ assert_partial_output(string, all_output)
56
+ assert_success('pass')
57
+ end
58
+
46
59
  Then /^I should not see any output saying the mock is unverified$/ do
47
60
  assert_no_partial_output("The following mocks are not verified", all_output)
48
61
  assert_success('pass')
@@ -11,14 +11,7 @@ module VerifiedDouble
11
11
 
12
12
  def expect(*args)
13
13
  if args[0].respond_to?(:can_record_interactions?)
14
- if args[0].respond_to?(:verified_any_instance_double?)
15
- raise "VerifiedDouble.any_instance_of doesn't support yet Rspec's " \
16
- "expect/allow syntax. Please use should_receive."
17
- else
18
- VerifiedDouble.registry.current_double = args[0]
19
- end
20
-
21
-
14
+ VerifiedDouble.registry.current_double = args[0]
22
15
  else
23
16
  VerifiedDouble.registry.current_double = nil
24
17
  end
@@ -20,14 +20,14 @@ module VerifiedDouble
20
20
  elsif instance_double?
21
21
  internal.instance_variable_get('@name').to_s
22
22
  elsif any_instance_double?
23
- internal.instance_variable_get('@klass').to_s
23
+ internal.instance_variable_get('@target').to_s
24
24
  else
25
- raise
25
+ raise 'Unable to handle internal #{internal.inspect}'
26
26
  end
27
27
  end
28
28
 
29
29
  def any_instance_double?
30
- !! internal.instance_variable_get('@klass')
30
+ !! internal.instance_variable_get('@target')
31
31
  end
32
32
 
33
33
  def class_double?
@@ -1,3 +1,3 @@
1
1
  module VerifiedDouble
2
- VERSION = "0.5.2"
2
+ VERSION = "0.5.3"
3
3
  end
@@ -5,7 +5,6 @@ require 'verified_double/boolean'
5
5
  require 'verified_double/can_record_interactions'
6
6
  require 'verified_double/example_metadata'
7
7
  require 'verified_double/is_a_class_double'
8
- require 'verified_double/is_an_any_instance_double'
9
8
  require 'verified_double/is_an_instance_double'
10
9
  require 'verified_double/matchers'
11
10
  require 'verified_double/method_signature'
@@ -25,10 +24,16 @@ require 'verified_double/stack_frame'
25
24
  module VerifiedDouble
26
25
  extend RSpec::Mocks::ExampleMethods
27
26
 
28
- def self.any_instance_of(klass)
29
- d = klass.any_instance
30
- d.extend(VerifiedDouble::IsAnAnyInstanceDouble)
31
- VerifiedDouble.record(d)
27
+ def self.allow_any_instance_of(klass)
28
+ super(klass).tap do |d|
29
+ VerifiedDouble.registry.current_double = VerifiedDouble.record(d)
30
+ end
31
+ end
32
+
33
+ def self.expect_any_instance_of(klass)
34
+ super(klass).tap do |d|
35
+ VerifiedDouble.registry.current_double = VerifiedDouble.record(d)
36
+ end
32
37
  end
33
38
 
34
39
  def self.of_class(class_value, options = {})
@@ -15,15 +15,6 @@ describe VerifiedDouble::RSpecMocksSyntaxOverrides do
15
15
  end
16
16
  end
17
17
 
18
- context "where the double arg is an RSpec::Mocks::AnyInstance::Recorder" do
19
- let(:a_double) { VerifiedDouble.of_instance('Object') }
20
-
21
- it "should tell the user to use should_receive instead" do
22
- expect(lambda { expect(VerifiedDouble.any_instance_of(Object)) })
23
- .to raise_error
24
- end
25
- end
26
-
27
18
  context "where the double arg does not record VerifiedDouble interactions" do
28
19
  let(:a_double) { double('Object') }
29
20
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: verified_double
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - George Mendoza
@@ -168,7 +168,6 @@ files:
168
168
  - lib/verified_double/can_record_interactions.rb
169
169
  - lib/verified_double/example_metadata.rb
170
170
  - lib/verified_double/is_a_class_double.rb
171
- - lib/verified_double/is_an_any_instance_double.rb
172
171
  - lib/verified_double/is_an_instance_double.rb
173
172
  - lib/verified_double/matchers.rb
174
173
  - lib/verified_double/method_signature.rb
@@ -1,12 +0,0 @@
1
- require 'verified_double/is_an_instance_double'
2
-
3
- module VerifiedDouble
4
- module IsAnAnyInstanceDouble
5
- include IsAnInstanceDouble
6
-
7
- def verified_any_instance_double?
8
- true
9
- end
10
- end
11
- end
12
-