verified_double 0.5.2 → 0.5.3

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 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
-