verified_double 0.4.2 → 0.4.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.
- data/CHANGELOG.markdown +12 -7
- data/README.md +1 -1
- data/features/CHANGELOG.markdown +12 -7
- data/features/readme.md +1 -1
- data/features/verified_mocks.feature +60 -0
- data/lib/verified_double.rb +2 -2
- data/lib/verified_double/simple_double.rb +1 -1
- data/lib/verified_double/version.rb +1 -1
- data/spec/verified_double/simple_double_spec.rb +8 -0
- data/spec/verified_double_spec.rb +10 -1
- metadata +2 -2
data/CHANGELOG.markdown
CHANGED
@@ -1,28 +1,33 @@
|
|
1
|
+
0.4.3 - 2013-10-22
|
2
|
+
------------------
|
3
|
+
|
4
|
+
* [#26] Allow class to be passed to `of_instance` and `of_class`.
|
5
|
+
|
1
6
|
0.4.2 - 2013-09-28
|
2
7
|
------------------
|
3
8
|
|
4
|
-
[#25] Fix: cannot mock is_a? on a VerifiedDouble instance double.
|
9
|
+
* [#25] Fix: cannot mock is_a? on a VerifiedDouble instance double.
|
5
10
|
|
6
11
|
0.4.1 - 2013-08-17
|
7
12
|
------------------
|
8
13
|
|
9
|
-
[#20] Fix: Cannot get stack frame of method signature recorded within a shared example.
|
14
|
+
* [#20] Fix: Cannot get stack frame of method signature recorded within a shared example.
|
10
15
|
|
11
|
-
[#21] Fix: Class double return value cannot be verified.
|
16
|
+
* [#21] Fix: Class double return value cannot be verified.
|
12
17
|
|
13
18
|
0.4.0 - 2013-07-28
|
14
19
|
------------------
|
15
20
|
|
16
|
-
[#7] Pass: I should be able to use the RSpec's new expect syntax with
|
21
|
+
* [#7] Pass: I should be able to use the RSpec's new expect syntax with
|
17
22
|
VerifiedDouble.
|
18
23
|
|
19
|
-
[#7] Require verified_double/rspec_configuration in order to integrate
|
24
|
+
* [#7] Require verified_double/rspec_configuration in order to integrate
|
20
25
|
verified_double with rspec.
|
21
26
|
|
22
|
-
[#18] Fix Scenario: stubbed doubles using hash syntax are no longer being
|
27
|
+
* [#18] Fix Scenario: stubbed doubles using hash syntax are no longer being
|
23
28
|
recorded after 0.3.0.
|
24
29
|
|
25
|
-
[#19] Ensure: if `VerifiedDouble.of_instance(class_name, method_stubs={})` is
|
30
|
+
* [#19] Ensure: if `VerifiedDouble.of_instance(class_name, method_stubs={})` is
|
26
31
|
used a argument or return value value of an expectation, then it should
|
27
32
|
not interfere with the method signature recording of the expectation.
|
28
33
|
|
data/README.md
CHANGED
@@ -56,4 +56,4 @@ Caveats
|
|
56
56
|
Special thanks
|
57
57
|
--------------
|
58
58
|
|
59
|
-
To [Thomas Sinclair](https://twitter.com/anathematic) of [Inner Core Designs](http://icdesign.com.au) for sponsoring this gem
|
59
|
+
To [Thomas Sinclair](https://twitter.com/anathematic) of [Inner Core Designs](http://icdesign.com.au) for initially sponsoring this gem.
|
data/features/CHANGELOG.markdown
CHANGED
@@ -1,28 +1,33 @@
|
|
1
|
+
0.4.3 - 2013-10-22
|
2
|
+
------------------
|
3
|
+
|
4
|
+
* [#26] Allow class to be passed to `of_instance` and `of_class`.
|
5
|
+
|
1
6
|
0.4.2 - 2013-09-28
|
2
7
|
------------------
|
3
8
|
|
4
|
-
[#25] Fix: cannot mock is_a? on a VerifiedDouble instance double.
|
9
|
+
* [#25] Fix: cannot mock is_a? on a VerifiedDouble instance double.
|
5
10
|
|
6
11
|
0.4.1 - 2013-08-17
|
7
12
|
------------------
|
8
13
|
|
9
|
-
[#20] Fix: Cannot get stack frame of method signature recorded within a shared example.
|
14
|
+
* [#20] Fix: Cannot get stack frame of method signature recorded within a shared example.
|
10
15
|
|
11
|
-
[#21] Fix: Class double return value cannot be verified.
|
16
|
+
* [#21] Fix: Class double return value cannot be verified.
|
12
17
|
|
13
18
|
0.4.0 - 2013-07-28
|
14
19
|
------------------
|
15
20
|
|
16
|
-
[#7] Pass: I should be able to use the RSpec's new expect syntax with
|
21
|
+
* [#7] Pass: I should be able to use the RSpec's new expect syntax with
|
17
22
|
VerifiedDouble.
|
18
23
|
|
19
|
-
[#7] Require verified_double/rspec_configuration in order to integrate
|
24
|
+
* [#7] Require verified_double/rspec_configuration in order to integrate
|
20
25
|
verified_double with rspec.
|
21
26
|
|
22
|
-
[#18] Fix Scenario: stubbed doubles using hash syntax are no longer being
|
27
|
+
* [#18] Fix Scenario: stubbed doubles using hash syntax are no longer being
|
23
28
|
recorded after 0.3.0.
|
24
29
|
|
25
|
-
[#19] Ensure: if `VerifiedDouble.of_instance(class_name, method_stubs={})` is
|
30
|
+
* [#19] Ensure: if `VerifiedDouble.of_instance(class_name, method_stubs={})` is
|
26
31
|
used a argument or return value value of an expectation, then it should
|
27
32
|
not interfere with the method signature recording of the expectation.
|
28
33
|
|
data/features/readme.md
CHANGED
@@ -56,4 +56,4 @@ Caveats
|
|
56
56
|
Special thanks
|
57
57
|
--------------
|
58
58
|
|
59
|
-
To [Thomas Sinclair](https://twitter.com/anathematic) of [Inner Core Designs](http://icdesign.com.au) for sponsoring this gem
|
59
|
+
To [Thomas Sinclair](https://twitter.com/anathematic) of [Inner Core Designs](http://icdesign.com.au) for initially sponsoring this gem.
|
@@ -67,6 +67,36 @@ Feature: 01. Verified mocks
|
|
67
67
|
When I run the test suite
|
68
68
|
Then I should not see any output saying the mock is unverified
|
69
69
|
|
70
|
+
Scenario: Instantiating an instance double with a class argument
|
71
|
+
Given a test that uses VerifiedDouble to mock an object:
|
72
|
+
"""
|
73
|
+
require 'spec_helper'
|
74
|
+
describe ObjectUnderTest do
|
75
|
+
let(:input) { SomeInput.new }
|
76
|
+
let(:output) { SomeOutput.new }
|
77
|
+
let(:instance_double) { VerifiedDouble.of_instance(Collaborator) }
|
78
|
+
|
79
|
+
it "tests something" do
|
80
|
+
expect(instance_double).to receive(:some_method).with(input).and_return(output)
|
81
|
+
ObjectUnderTest.new.do_something(instance_double, input)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
"""
|
85
|
+
|
86
|
+
And the test suite has a contract test for the mock:
|
87
|
+
"""
|
88
|
+
require 'spec_helper'
|
89
|
+
|
90
|
+
describe 'Collaborator' do
|
91
|
+
it "tests something", verifies_contract: 'Collaborator#some_method(SomeInput)=>SomeOutput' do
|
92
|
+
# do nothing
|
93
|
+
end
|
94
|
+
end
|
95
|
+
"""
|
96
|
+
|
97
|
+
When I run the test suite
|
98
|
+
Then I should not see any output saying the mock is unverified
|
99
|
+
|
70
100
|
Scenario: Unverified instance doubles
|
71
101
|
Given a test that uses VerifiedDouble to mock an object:
|
72
102
|
"""
|
@@ -122,6 +152,36 @@ Feature: 01. Verified mocks
|
|
122
152
|
When I run the test suite
|
123
153
|
Then I should not see any output saying the mock is unverified
|
124
154
|
|
155
|
+
Scenario: Instantiating a class double with a class argument
|
156
|
+
Given a test that uses VerifiedDouble to mock a class:
|
157
|
+
"""
|
158
|
+
require 'spec_helper'
|
159
|
+
describe ObjectUnderTest do
|
160
|
+
let(:input) { SomeInput.new }
|
161
|
+
let(:output) { SomeOutput.new }
|
162
|
+
let(:class_double) { VerifiedDouble.of_class(Collaborator) }
|
163
|
+
|
164
|
+
it "tests something" do
|
165
|
+
expect(class_double).to receive(:some_method).with(input).and_return(output)
|
166
|
+
ObjectUnderTest.do_something(input)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
"""
|
170
|
+
|
171
|
+
And the test suite has a contract test for the mock:
|
172
|
+
"""
|
173
|
+
require 'spec_helper'
|
174
|
+
|
175
|
+
describe 'Collaborator' do
|
176
|
+
it "tests something", verifies_contract: 'Collaborator.some_method(SomeInput)=>SomeOutput' do
|
177
|
+
# do nothing
|
178
|
+
end
|
179
|
+
end
|
180
|
+
"""
|
181
|
+
|
182
|
+
When I run the test suite
|
183
|
+
Then I should not see any output saying the mock is unverified
|
184
|
+
|
125
185
|
Scenario: Unverified class doubles
|
126
186
|
Given a test that uses VerifiedDouble to mock an object:
|
127
187
|
"""
|
data/lib/verified_double.rb
CHANGED
@@ -23,9 +23,9 @@ require 'verified_double/stack_frame'
|
|
23
23
|
module VerifiedDouble
|
24
24
|
extend RSpec::Mocks::ExampleMethods
|
25
25
|
|
26
|
-
def self.of_class(
|
26
|
+
def self.of_class(class_value, options = {})
|
27
27
|
options[:transfer_nested_constants] = true if options[:transfer_nested_constants].nil?
|
28
|
-
d = stub_const(
|
28
|
+
d = stub_const(class_value.to_s, Class.new, options)
|
29
29
|
d.extend(VerifiedDouble::IsAClassDouble)
|
30
30
|
VerifiedDouble.record(d)
|
31
31
|
end
|
@@ -24,6 +24,14 @@ describe VerifiedDouble::SimpleDouble do
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
context "where the internal double is a double with a class value" do
|
28
|
+
let(:some_instance_double) { VerifiedDouble.of_instance(Dummy) }
|
29
|
+
|
30
|
+
it "is the name of the class represented by the double" do
|
31
|
+
expect(simple_instance_double.class_name).to eq('Dummy')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
27
35
|
context "where the internal double is a stub const" do
|
28
36
|
it "is the name of the class represented by the class double" do
|
29
37
|
expect(simple_class_double.class_name).to eq(class_name)
|
@@ -60,7 +60,7 @@ describe VerifiedDouble do
|
|
60
60
|
let(:parent){ VerifiedDouble.of_instance('Object') }
|
61
61
|
let(:parent_method){ :parent_method }
|
62
62
|
let(:parent_output){ :parent_output }
|
63
|
-
|
63
|
+
|
64
64
|
it "should not interfere with the method signature recording of the expectation", verifies_contract: 'Object#parent_method(Object)=>Symbol' do
|
65
65
|
expect(parent).to receive(parent_method).with(subject).and_return(parent_output)
|
66
66
|
|
@@ -92,6 +92,15 @@ describe VerifiedDouble do
|
|
92
92
|
subject = described_class.of_class(class_name)
|
93
93
|
expect(subject).to eq(class_name.constantize)
|
94
94
|
end
|
95
|
+
|
96
|
+
context "where the argument is a class" do
|
97
|
+
let(:argument) { Object }
|
98
|
+
|
99
|
+
it "returns the double" do
|
100
|
+
subject = described_class.of_class(argument)
|
101
|
+
expect(subject.name).to eq(argument.name)
|
102
|
+
end
|
103
|
+
end
|
95
104
|
end
|
96
105
|
|
97
106
|
describe ".report_unverified_signatures" do
|
metadata
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
name: verified_double
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.4.
|
5
|
+
version: 0.4.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- George Mendoza
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-10-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
type: :runtime
|