verified_double 0.7.0 → 0.8.0

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: 3b7ae16d1fbe0432c903b73550c4da1c0abad46f
4
- data.tar.gz: 95596257e58d1597f9ad4294fab12552d12b07f9
3
+ metadata.gz: f8e1baaa1b9eda731d0b34f43fccd89258e0103f
4
+ data.tar.gz: 55add943b1d237e527a18956d51f804577947bb1
5
5
  SHA512:
6
- metadata.gz: d7a957cdba5ce4f2339f3c56e15320625d5b4a1610ffbfba4a3377378013130d978067c11887c0c8c99ad8fbbfef9c9780f315e9a0930fb0fbdc2769bb5eb84b
7
- data.tar.gz: 401ff433e309a8691d8fc8ec1382807d8bbebd1a286460ed79667066952500a8ee345d9a711908cb9bc7094c249aea1d2897971a0e08861ccbbf39d291421882
6
+ metadata.gz: 79d26b5f3debd6e9700c4ba4ac901c905e8f444a008ac1bd552c797b8f6fbdbdea044d8a8b28dce766c6b79327eb42f1cfcab69951ebba4f7bb0e18ad7798871
7
+ data.tar.gz: 4c3a954df4a90e1e66089b0b447ef04361d305bf200632f82e7b7aa044f3549482d5c792044c81c69acf2c7c4e65e760f1e6ef99e2ff496ad92c3b9b0cf7fa98
@@ -1,3 +1,8 @@
1
+ 0.8.0 - 2014-01-30
2
+ ------------------
3
+
4
+ * Fix: any_instance_of calls should not be recorded by VerifiedDouble.
5
+
1
6
  0.7.0 - 2014-01-22
2
7
  ------------------
3
8
 
@@ -1,3 +1,8 @@
1
+ 0.8.0 - 2014-01-30
2
+ ------------------
3
+
4
+ * Fix: any_instance_of calls should not be recorded by VerifiedDouble.
5
+
1
6
  0.7.0 - 2014-01-22
2
7
  ------------------
3
8
 
@@ -216,3 +216,63 @@ Feature: 65. Partial mocks
216
216
 
217
217
  1. ObjectUnderTest.some_method(SomeInput)=>SomeOutput
218
218
  """
219
+
220
+ And I should not be informed that the rspec mock is unverified:
221
+ """
222
+ ObjectUnderTest#another_method(SomeInput)=>SomeOutput
223
+ """
224
+
225
+ Scenario: Class partial mocks should not any_instance_of mocks in other tests
226
+ Given the following classes:
227
+ """
228
+ class ObjectUnderTest
229
+ def self.do_something
230
+ some_class_method
231
+ new.some_instance_method
232
+ end
233
+
234
+ def self.some_instance_method
235
+ SomeOutput.new
236
+ end
237
+
238
+ def self.some_class_method
239
+ SomeOutput.new
240
+ end
241
+ end
242
+
243
+ class SomeOutput
244
+ end
245
+ """
246
+
247
+ And a test that uses both any_instance_of and VerifiedDouble to mock a class:
248
+ """
249
+ require 'spec_helper'
250
+ describe ObjectUnderTest do
251
+ let(:output) { SomeOutput.new }
252
+
253
+ let(:object_under_test_class) { VerifiedDouble.wrap(ObjectUnderTest) }
254
+
255
+ it "tests something with VerifiedDouble partial mock and allow_any_instance_of" do
256
+ expect(object_under_test_class)
257
+ .to receive(:some_class_method).and_return(output)
258
+
259
+ allow_any_instance_of(ObjectUnderTest)
260
+ .to receive(:some_instance_method).and_return(output)
261
+
262
+ ObjectUnderTest.do_something
263
+ end
264
+ end
265
+ """
266
+
267
+ When I run the test suite
268
+ Then I should be informed that only the VerifiedDouble.wrap mock is unverified:
269
+ """
270
+ The following mocks are not verified:
271
+
272
+ 1. ObjectUnderTest.some_class_method()=>SomeOutput
273
+ """
274
+
275
+ And I should not be informed that the any_instance_of mock is unverified:
276
+ """
277
+ ObjectUnderTest.some_instance_method()=>SomeOutput
278
+ """
@@ -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 any_instance_of and VerifiedDouble to 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 both rspec-mock and VerifiedDouble to partially mock a " +
18
24
  "class:" do |string|
19
25
 
@@ -77,6 +83,16 @@ Then "I should be informed that only the VerifiedDouble\.wrap mock is " +
77
83
  assert_success('pass')
78
84
  end
79
85
 
86
+ Then "I should not be informed that the any_instance_of mock is unverified:" do |string|
87
+ assert_no_partial_output(string, all_output)
88
+ assert_success('pass')
89
+ end
90
+
91
+ Then "I should not be informed that the rspec mock is unverified:" do |string|
92
+ assert_no_partial_output(string, all_output)
93
+ assert_success('pass')
94
+ end
95
+
80
96
  Then /^I should not see any output saying the mock is unverified$/ do
81
97
  assert_no_partial_output("The following mocks are not verified", all_output)
82
98
  assert_success('pass')
@@ -8,7 +8,6 @@ module VerifiedDouble
8
8
  def should_receive(*args)
9
9
  VerifiedDouble.registry.add_method_signature(self, args[0])
10
10
  super(*args).tap do |result|
11
- VerifiedDouble.doubles_in_current_test << result
12
11
  result.extend(VerifiedDouble::CanRecordInteractions)
13
12
  end
14
13
  end
@@ -16,7 +15,6 @@ module VerifiedDouble
16
15
  def stub(*args)
17
16
  VerifiedDouble.registry.add_method_signature(self, args[0])
18
17
  super(*args).tap do |result|
19
- VerifiedDouble.doubles_in_current_test << result
20
18
  result.extend(VerifiedDouble::CanRecordInteractions)
21
19
  end
22
20
  end
@@ -10,5 +10,13 @@ module VerifiedDouble
10
10
  def add_method_signature_with_current_double(method)
11
11
  add_method_signature(current_double, method)
12
12
  end
13
+
14
+ def update_current_double(a_double)
15
+ if VerifiedDouble.doubles_in_current_test.include?(a_double)
16
+ VerifiedDouble.registry.current_double = a_double
17
+ else
18
+ VerifiedDouble.registry.current_double = nil
19
+ end
20
+ end
13
21
  end
14
- end
22
+ end
@@ -6,6 +6,7 @@ RSpec.configure do |config|
6
6
  end
7
7
 
8
8
  config.after do
9
+ VerifiedDouble.registry.current_double = nil
9
10
  VerifiedDouble.doubles_in_current_test.clear
10
11
  end
11
12
 
@@ -1,20 +1,22 @@
1
1
  module VerifiedDouble
2
2
  module RSpecMocksSyntaxOverrides
3
3
  def allow(*args)
4
- if VerifiedDouble.doubles_in_current_test.include?(args[0])
5
- VerifiedDouble.registry.current_double = args[0]
6
- else
7
- VerifiedDouble.registry.current_double = nil
8
- end
4
+ VerifiedDouble.registry.update_current_double args[0]
5
+ super(*args)
6
+ end
7
+
8
+ def allow_any_instance_of(*args)
9
+ VerifiedDouble.registry.update_current_double nil
9
10
  super(*args)
10
11
  end
11
12
 
12
13
  def expect(*args)
13
- if VerifiedDouble.doubles_in_current_test.include?(args[0])
14
- VerifiedDouble.registry.current_double = args[0]
15
- else
16
- VerifiedDouble.registry.current_double = nil
17
- end
14
+ VerifiedDouble.registry.update_current_double args[0]
15
+ super(*args)
16
+ end
17
+
18
+ def expect_any_instance_of(*args)
19
+ VerifiedDouble.registry.update_current_double nil
18
20
  super(*args)
19
21
  end
20
22
 
@@ -22,7 +24,6 @@ module VerifiedDouble
22
24
  if VerifiedDouble.registry.current_double
23
25
  VerifiedDouble.registry.add_method_signature_with_current_double(args[0])
24
26
  super(*args).tap do |result|
25
- VerifiedDouble.doubles_in_current_test << result
26
27
  result.extend(VerifiedDouble::CanRecordInteractions)
27
28
  end
28
29
  else
@@ -1,3 +1,3 @@
1
1
  module VerifiedDouble
2
- VERSION = "0.7.0"
2
+ VERSION = "0.8.0"
3
3
  end
@@ -14,13 +14,25 @@ describe VerifiedDouble::CanRecordInteractions do
14
14
  expect(VerifiedDouble.registry.last.method).to eq('mocked_fake_to_s')
15
15
  a_double.mocked_fake_to_s
16
16
  end
17
+
18
+ it 'does not add the result to the current test doubles' do
19
+ a_double.should_receive(:mocked_fake_to_s)
20
+ expect(VerifiedDouble.doubles_in_current_test).to eq([a_double])
21
+ a_double.mocked_fake_to_s
22
+ end
17
23
  end
18
24
 
19
25
  describe "#stub(method)" do
20
26
  it "appends a new method signature with the method to the registry", verifies_contract: 'Object#stubbed_fake_to_s()' do
21
- allow(a_double).to receive(:stubbed_fake_to_s)
27
+ a_double.stub(:stubbed_fake_to_s)
22
28
  expect(VerifiedDouble.registry.last.method).to eq('stubbed_fake_to_s')
23
29
  end
30
+
31
+ it 'does not add the result to the current test doubles' do
32
+ a_double.stub(:mocked_fake_to_s)
33
+ expect(VerifiedDouble.doubles_in_current_test).to eq([a_double])
34
+ a_double.mocked_fake_to_s
35
+ end
24
36
  end
25
37
 
26
38
  describe "#with(*args)" do
@@ -15,8 +15,13 @@ describe VerifiedDouble::MethodSignaturesReport do
15
15
  let(:method_signature_2) {
16
16
  VerifiedDouble::MethodSignature.new(class_name: 'Object', method_operator: '#', method: 'inspect') }
17
17
 
18
- let(:registry){
19
- double(:registry, 'current_double' => nil, 'current_double=' => nil) }
18
+ let(:registry) do
19
+ double(:registry,
20
+ 'current_double' => nil,
21
+ 'current_double=' => nil,
22
+ 'update_current_double' => nil
23
+ )
24
+ end
20
25
 
21
26
  let(:verified_double_module){
22
27
  stub_const('VerifiedDouble', Class.new, transfer_nested_constants: true) }
@@ -174,8 +179,13 @@ describe VerifiedDouble::MethodSignaturesReport do
174
179
 
175
180
  let(:method_signature) { VerifiedDouble::MethodSignature.new }
176
181
 
177
- let(:registry){
178
- double(:registry, 'current_double' => nil, 'current_double=' => nil) }
182
+ let(:registry) do
183
+ double(:registry,
184
+ 'current_double' => nil,
185
+ 'current_double=' => nil,
186
+ 'update_current_double' => nil
187
+ )
188
+ end
179
189
 
180
190
  it "works" do
181
191
  verified_double_module.stub(:doubles_in_current_test).and_return([])
@@ -62,6 +62,13 @@ describe VerifiedDouble::RSpecMocksSyntaxOverrides do
62
62
 
63
63
  a_double.fake_to_s
64
64
  end
65
+
66
+ it 'should not add the result to the current test doubles' do
67
+ expect(a_double).to receive(some_method).and_return(some_result)
68
+ expect(VerifiedDouble.doubles_in_current_test).to eq([a_double])
69
+
70
+ a_double.fake_to_s
71
+ end
65
72
  end
66
73
 
67
74
  context "where the current double is not recording VerifiedDouble interactions" do
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.7.0
4
+ version: 0.8.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: 2014-01-22 00:00:00.000000000 Z
11
+ date: 2014-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport