verified_double 0.6.1 → 0.7.0

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: d5aa54bfcb029e5501e4ec6598a02c1a77ec28da
4
- data.tar.gz: 590332886ad996a7589834ad01c4fef2f4f8dc3f
3
+ metadata.gz: 3b7ae16d1fbe0432c903b73550c4da1c0abad46f
4
+ data.tar.gz: 95596257e58d1597f9ad4294fab12552d12b07f9
5
5
  SHA512:
6
- metadata.gz: b4804ffcdef59cfba843d866002ee5635b6c0f0611faaeb3c3b7d75a5f3a7fbca80a5240c8d81cc423237be809f6f49d80a3fb508c55ddb2b42a88d0fefce42f
7
- data.tar.gz: f4abb8144c06a71798f792ea403d3959c5ae1f82fd8dee1bbd14e6b1e35aa31a146349c877b85ffb7a3d0afcea884272032307c5b2b3ec8e327b9eda40bfd7d1
6
+ metadata.gz: d7a957cdba5ce4f2339f3c56e15320625d5b4a1610ffbfba4a3377378013130d978067c11887c0c8c99ad8fbbfef9c9780f315e9a0930fb0fbdc2769bb5eb84b
7
+ data.tar.gz: 401ff433e309a8691d8fc8ec1382807d8bbebd1a286460ed79667066952500a8ee345d9a711908cb9bc7094c249aea1d2897971a0e08861ccbbf39d291421882
@@ -1,3 +1,10 @@
1
+ 0.7.0 - 2014-01-22
2
+ ------------------
3
+
4
+ * Fix: `VerifiedDouble.wrap(klass)` doesn't get cleared after the test where it
5
+ is called. As a result, expectations of `klass` in other tests gets recorded by
6
+ VerifiedDouble.
7
+
1
8
  0.6.1 - 2013-12-30
2
9
  ------------------
3
10
 
@@ -1,3 +1,10 @@
1
+ 0.7.0 - 2014-01-22
2
+ ------------------
3
+
4
+ * Fix: `VerifiedDouble.wrap(klass)` doesn't get cleared after the test where it
5
+ is called. As a result, expectations of `klass` in other tests gets recorded by
6
+ VerifiedDouble.
7
+
1
8
  0.6.1 - 2013-12-30
2
9
  ------------------
3
10
 
@@ -160,3 +160,59 @@ Feature: 65. Partial mocks
160
160
 
161
161
  1. ObjectUnderTest.some_method(SomeInput)=>SomeOutput
162
162
  """
163
+
164
+ Scenario: Class partial mocks should not affect the class in other tests
165
+ Given the following classes:
166
+ """
167
+ class ObjectUnderTest
168
+ def self.do_something(input)
169
+ some_method(input)
170
+ another_method(input)
171
+ end
172
+
173
+ def self.another_method(input)
174
+ SomeOutput.new
175
+ end
176
+
177
+ def self.some_method(input)
178
+ SomeOutput.new
179
+ end
180
+ end
181
+
182
+ class SomeInput
183
+ end
184
+
185
+ class SomeOutput
186
+ end
187
+ """
188
+
189
+ And a test that uses both rspec-mock and VerifiedDouble to partially mock a class:
190
+ """
191
+ require 'spec_helper'
192
+ describe ObjectUnderTest do
193
+ let(:input) { SomeInput.new }
194
+ let(:output) { SomeOutput.new }
195
+
196
+ it "tests something with VerifiedDouble partial mock" do
197
+ expect(VerifiedDouble.wrap(ObjectUnderTest))
198
+ .to receive(:some_method).with(input).and_return(output)
199
+
200
+ ObjectUnderTest.do_something(input)
201
+ end
202
+
203
+ it "tests something with rspec-mock" do
204
+ expect(ObjectUnderTest)
205
+ .to receive(:another_method).with(input).and_return(output)
206
+
207
+ ObjectUnderTest.do_something(input)
208
+ end
209
+ end
210
+ """
211
+
212
+ When I run the test suite
213
+ Then I should be informed that only the VerifiedDouble.wrap mock is unverified:
214
+ """
215
+ The following mocks are not verified:
216
+
217
+ 1. ObjectUnderTest.some_method(SomeInput)=>SomeOutput
218
+ """
@@ -14,6 +14,12 @@ Given /^a test that uses VerifiedDouble to mock the object under test:$/ do |str
14
14
  write_file 'spec/main_spec.rb', string
15
15
  end
16
16
 
17
+ Given "a test that uses both rspec-mock and VerifiedDouble to partially mock a " +
18
+ "class:" do |string|
19
+
20
+ write_file 'spec/main_spec.rb', string
21
+ end
22
+
17
23
  Given /^a test that uses VerifiedDouble to stub an object:$/ do |string|
18
24
  write_file 'spec/main_spec.rb', string
19
25
  end
@@ -34,7 +40,11 @@ Given /^the test suite has a contract test for the stub:$/ do |string|
34
40
  write_file 'spec/contract_test_for_main_spec.rb', string
35
41
  end
36
42
 
37
- Given(/^the test suite is configured to use VerifiedDouble:$/) do |string|
43
+ Given /^the test suite has another test mocking the class with rspec\-mock:$/ do |string|
44
+ write_file 'spec/another_spec.rb', string
45
+ end
46
+
47
+ Given /^the test suite is configured to use VerifiedDouble:$/ do |string|
38
48
  write_file 'spec/spec_helper.rb', string
39
49
  end
40
50
 
@@ -60,6 +70,13 @@ Then /^I should be informed that the stub is unverified:$/ do |string|
60
70
  assert_success('pass')
61
71
  end
62
72
 
73
+ Then "I should be informed that only the VerifiedDouble\.wrap mock is " +
74
+ "unverified:" do |string|
75
+
76
+ assert_partial_output(string, all_output)
77
+ assert_success('pass')
78
+ end
79
+
63
80
  Then /^I should not see any output saying the mock is unverified$/ do
64
81
  assert_no_partial_output("The following mocks are not verified", all_output)
65
82
  assert_success('pass')
@@ -30,6 +30,10 @@ module VerifiedDouble
30
30
  end
31
31
  end
32
32
 
33
+ def self.doubles_in_current_test
34
+ @doubles_in_current_test ||= []
35
+ end
36
+
33
37
  def self.expect_any_instance_of(klass)
34
38
  super(klass).tap do |d|
35
39
  VerifiedDouble.registry.current_double = VerifiedDouble.record(d)
@@ -62,6 +66,7 @@ module VerifiedDouble
62
66
  end
63
67
 
64
68
  def self.record(a_double)
69
+ VerifiedDouble.doubles_in_current_test << a_double
65
70
  a_double.extend(VerifiedDouble::CanRecordInteractions)
66
71
  a_double
67
72
  end
@@ -5,18 +5,20 @@ module VerifiedDouble
5
5
  super(*return_values)
6
6
  end
7
7
 
8
- def can_record_interactions?
9
- true
10
- end
11
-
12
8
  def should_receive(*args)
13
9
  VerifiedDouble.registry.add_method_signature(self, args[0])
14
- super(*args).tap {|result| result.extend(VerifiedDouble::CanRecordInteractions) }
10
+ super(*args).tap do |result|
11
+ VerifiedDouble.doubles_in_current_test << result
12
+ result.extend(VerifiedDouble::CanRecordInteractions)
13
+ end
15
14
  end
16
15
 
17
16
  def stub(*args)
18
17
  VerifiedDouble.registry.add_method_signature(self, args[0])
19
- super(*args).tap {|result| result.extend(VerifiedDouble::CanRecordInteractions) }
18
+ super(*args).tap do |result|
19
+ VerifiedDouble.doubles_in_current_test << result
20
+ result.extend(VerifiedDouble::CanRecordInteractions)
21
+ end
20
22
  end
21
23
 
22
24
  def with(*args)
@@ -4,7 +4,11 @@ RSpec.configure do |config|
4
4
  config.before do
5
5
  self.extend VerifiedDouble::RSpecMocksSyntaxOverrides
6
6
  end
7
-
7
+
8
+ config.after do
9
+ VerifiedDouble.doubles_in_current_test.clear
10
+ end
11
+
8
12
  config.after :suite do
9
13
  VerifiedDouble.report_unverified_signatures(self)
10
14
  end
@@ -1,7 +1,7 @@
1
1
  module VerifiedDouble
2
2
  module RSpecMocksSyntaxOverrides
3
3
  def allow(*args)
4
- if args[0].respond_to?(:can_record_interactions?)
4
+ if VerifiedDouble.doubles_in_current_test.include?(args[0])
5
5
  VerifiedDouble.registry.current_double = args[0]
6
6
  else
7
7
  VerifiedDouble.registry.current_double = nil
@@ -10,7 +10,7 @@ module VerifiedDouble
10
10
  end
11
11
 
12
12
  def expect(*args)
13
- if args[0].respond_to?(:can_record_interactions?)
13
+ if VerifiedDouble.doubles_in_current_test.include?(args[0])
14
14
  VerifiedDouble.registry.current_double = args[0]
15
15
  else
16
16
  VerifiedDouble.registry.current_double = nil
@@ -21,7 +21,10 @@ module VerifiedDouble
21
21
  def receive(*args)
22
22
  if VerifiedDouble.registry.current_double
23
23
  VerifiedDouble.registry.add_method_signature_with_current_double(args[0])
24
- super(*args).tap {|result| result.extend(VerifiedDouble::CanRecordInteractions) }
24
+ super(*args).tap do |result|
25
+ VerifiedDouble.doubles_in_current_test << result
26
+ result.extend(VerifiedDouble::CanRecordInteractions)
27
+ end
25
28
  else
26
29
  super(*args)
27
30
  end
@@ -1,3 +1,3 @@
1
1
  module VerifiedDouble
2
- VERSION = "0.6.1"
2
+ VERSION = "0.7.0"
3
3
  end
@@ -4,6 +4,7 @@ describe VerifiedDouble::CanRecordInteractions do
4
4
  let(:a_double){ double('Object') }
5
5
 
6
6
  before do
7
+ VerifiedDouble.doubles_in_current_test << a_double
7
8
  a_double.extend(VerifiedDouble::CanRecordInteractions)
8
9
  end
9
10
 
@@ -13,7 +14,7 @@ describe VerifiedDouble::CanRecordInteractions do
13
14
  expect(VerifiedDouble.registry.last.method).to eq('mocked_fake_to_s')
14
15
  a_double.mocked_fake_to_s
15
16
  end
16
- end
17
+ end
17
18
 
18
19
  describe "#stub(method)" do
19
20
  it "appends a new method signature with the method to the registry", verifies_contract: 'Object#stubbed_fake_to_s()' do
@@ -44,4 +45,4 @@ describe VerifiedDouble::CanRecordInteractions do
44
45
  a_double.fake_to_s(:arg_1, :arg_2)
45
46
  end
46
47
  end
47
- end
48
+ end
@@ -22,6 +22,7 @@ describe VerifiedDouble::MethodSignaturesReport do
22
22
  stub_const('VerifiedDouble', Class.new, transfer_nested_constants: true) }
23
23
 
24
24
  it "sets distinct signatures from the registry" do
25
+ verified_double_module.stub(:doubles_in_current_test).and_return([])
25
26
  verified_double_module
26
27
  .should_receive(:registry)
27
28
  .at_least(:once)
@@ -177,11 +178,13 @@ describe VerifiedDouble::MethodSignaturesReport do
177
178
  double(:registry, 'current_double' => nil, 'current_double=' => nil) }
178
179
 
179
180
  it "works" do
181
+ verified_double_module.stub(:doubles_in_current_test).and_return([])
182
+
180
183
  verified_double_module
181
184
  .should_receive(:registry)
182
185
  .at_least(:once)
183
186
  .and_return(registry)
184
-
187
+
185
188
  expect(verified_double_module)
186
189
  .to receive(:verified_signatures_from_matchers)
187
190
  .and_return([method_signature])
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: verified_double
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - George Mendoza
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-30 00:00:00.000000000 Z
11
+ date: 2014-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport