verified_double 0.7.0 → 0.8.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: 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