transpec 3.0.0 → 3.0.1

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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -0
  3. data/CHANGELOG.md +4 -0
  4. data/lib/transpec/version.rb +1 -1
  5. data/transpec.gemspec +4 -3
  6. metadata +3 -97
  7. data/spec/.rubocop.yml +0 -23
  8. data/spec/integration/configuration_modification_spec.rb +0 -186
  9. data/spec/integration/conversion_spec.rb +0 -145
  10. data/spec/spec_helper.rb +0 -52
  11. data/spec/support/cache_helper.rb +0 -62
  12. data/spec/support/file_helper.rb +0 -25
  13. data/spec/support/shared_context.rb +0 -84
  14. data/spec/transpec/cli_spec.rb +0 -341
  15. data/spec/transpec/commit_message_spec.rb +0 -81
  16. data/spec/transpec/config_spec.rb +0 -99
  17. data/spec/transpec/converter_spec.rb +0 -1374
  18. data/spec/transpec/directory_cloner_spec.rb +0 -74
  19. data/spec/transpec/dynamic_analyzer/rewriter_spec.rb +0 -143
  20. data/spec/transpec/dynamic_analyzer_spec.rb +0 -329
  21. data/spec/transpec/git_spec.rb +0 -151
  22. data/spec/transpec/option_parser_spec.rb +0 -275
  23. data/spec/transpec/processed_source_spec.rb +0 -93
  24. data/spec/transpec/project_spec.rb +0 -194
  25. data/spec/transpec/record_spec.rb +0 -128
  26. data/spec/transpec/report_spec.rb +0 -126
  27. data/spec/transpec/rspec_version_spec.rb +0 -129
  28. data/spec/transpec/spec_file_finder_spec.rb +0 -118
  29. data/spec/transpec/spec_suite_spec.rb +0 -108
  30. data/spec/transpec/static_context_inspector_spec.rb +0 -713
  31. data/spec/transpec/syntax/allow_spec.rb +0 -122
  32. data/spec/transpec/syntax/be_boolean_spec.rb +0 -176
  33. data/spec/transpec/syntax/be_close_spec.rb +0 -51
  34. data/spec/transpec/syntax/current_example_spec.rb +0 -319
  35. data/spec/transpec/syntax/double_spec.rb +0 -175
  36. data/spec/transpec/syntax/example_group_spec.rb +0 -716
  37. data/spec/transpec/syntax/example_spec.rb +0 -301
  38. data/spec/transpec/syntax/expect_spec.rb +0 -313
  39. data/spec/transpec/syntax/have_spec.rb +0 -1276
  40. data/spec/transpec/syntax/hook_spec.rb +0 -215
  41. data/spec/transpec/syntax/its_spec.rb +0 -448
  42. data/spec/transpec/syntax/matcher_definition_spec.rb +0 -59
  43. data/spec/transpec/syntax/method_stub_spec.rb +0 -1301
  44. data/spec/transpec/syntax/oneliner_should_spec.rb +0 -628
  45. data/spec/transpec/syntax/operator_spec.rb +0 -871
  46. data/spec/transpec/syntax/pending_spec.rb +0 -415
  47. data/spec/transpec/syntax/raise_error_spec.rb +0 -354
  48. data/spec/transpec/syntax/receive_spec.rb +0 -499
  49. data/spec/transpec/syntax/rspec_configure_spec.rb +0 -870
  50. data/spec/transpec/syntax/should_receive_spec.rb +0 -1108
  51. data/spec/transpec/syntax/should_spec.rb +0 -497
  52. data/spec/transpec/util_spec.rb +0 -115
  53. data/spec/transpec_spec.rb +0 -22
@@ -1,1108 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'spec_helper'
4
- require 'transpec/syntax/should_receive'
5
-
6
- module Transpec
7
- class Syntax
8
- describe ShouldReceive do
9
- include_context 'parsed objects'
10
- include_context 'syntax object', ShouldReceive, :should_receive_object
11
-
12
- let(:record) { should_receive_object.report.records.first }
13
-
14
- describe '#expectize!' do
15
- context 'with expression `obj.should_receive(:message)`' do
16
- let(:source) do
17
- <<-END
18
- describe 'example' do
19
- it 'receives #foo' do
20
- subject.should_receive(:foo)
21
- end
22
- end
23
- END
24
- end
25
-
26
- let(:expected_source) do
27
- <<-END
28
- describe 'example' do
29
- it 'receives #foo' do
30
- expect(subject).to receive(:foo)
31
- end
32
- end
33
- END
34
- end
35
-
36
- it 'converts to `expect(obj).to receive(:message)` form' do
37
- should_receive_object.expectize!
38
- rewritten_source.should == expected_source
39
- end
40
-
41
- it 'adds record `obj.should_receive(:message)` -> `expect(obj).to receive(:message)`' do
42
- should_receive_object.expectize!
43
- record.old_syntax.should == 'obj.should_receive(:message)'
44
- record.new_syntax.should == 'expect(obj).to receive(:message)'
45
- end
46
-
47
- context 'when the statement continues over multi lines' do
48
- let(:source) do
49
- <<-END
50
- describe 'example' do
51
- it 'receives #foo and returns 1' do
52
- subject.should_receive(
53
- :foo
54
- ).
55
- and_return(
56
- 1
57
- )
58
- end
59
- end
60
- END
61
- end
62
-
63
- let(:expected_source) do
64
- <<-END
65
- describe 'example' do
66
- it 'receives #foo and returns 1' do
67
- expect(subject).to receive(
68
- :foo
69
- ).
70
- and_return(
71
- 1
72
- )
73
- end
74
- end
75
- END
76
- end
77
-
78
- it 'keeps the style as far as possible' do
79
- should_receive_object.expectize!
80
- rewritten_source.should == expected_source
81
- end
82
- end
83
-
84
- context 'and #expect and #receive are not available in the context' do
85
- context 'and the context is determinable statically' do
86
- let(:source) do
87
- <<-END
88
- describe 'example' do
89
- class TestRunner
90
- def run
91
- something = 'something'
92
- something.should_receive(:foo)
93
- something.foo
94
- end
95
- end
96
-
97
- it 'receives #foo' do
98
- TestRunner.new.run
99
- end
100
- end
101
- END
102
- end
103
-
104
- context 'with runtime information' do
105
- include_context 'dynamic analysis objects'
106
-
107
- it 'raises ContextError' do
108
- -> { should_receive_object.expectize! }.should raise_error(ContextError)
109
- end
110
- end
111
-
112
- context 'without runtime information' do
113
- it 'raises ContextError' do
114
- -> { should_receive_object.expectize! }.should raise_error(ContextError)
115
- end
116
- end
117
- end
118
-
119
- context 'and the context is not determinable statically' do
120
- let(:source) do
121
- <<-END
122
- def my_eval(&block)
123
- Object.new.instance_eval(&block)
124
- end
125
-
126
- describe 'example' do
127
- it 'receives #foo' do
128
- my_eval do
129
- something = 'something'
130
- something.should_receive(:foo)
131
- something.foo
132
- end
133
- end
134
- end
135
- END
136
- end
137
-
138
- context 'with runtime information' do
139
- include_context 'dynamic analysis objects'
140
-
141
- it 'raises ContextError' do
142
- -> { should_receive_object.expectize! }.should raise_error(ContextError)
143
- end
144
- end
145
-
146
- context 'without runtime information' do
147
- it 'does not raise ContextError' do
148
- -> { should_receive_object.expectize! }.should_not raise_error
149
- end
150
- end
151
- end
152
- end
153
- end
154
-
155
- context 'with expression `obj.should_not_receive(:message)`' do
156
- let(:source) do
157
- <<-END
158
- describe 'example' do
159
- it 'does not receive #foo' do
160
- subject.should_not_receive(:foo)
161
- end
162
- end
163
- END
164
- end
165
-
166
- let(:expected_source) do
167
- <<-END
168
- describe 'example' do
169
- it 'does not receive #foo' do
170
- expect(subject).not_to receive(:foo)
171
- end
172
- end
173
- END
174
- end
175
-
176
- it 'converts to `expect(obj).not_to receive(:message)` form' do
177
- should_receive_object.expectize!
178
- rewritten_source.should == expected_source
179
- end
180
-
181
- it 'adds record ' \
182
- '`obj.should_not_receive(:message)` -> `expect(obj).not_to receive(:message)`' do
183
- should_receive_object.expectize!
184
- record.old_syntax.should == 'obj.should_not_receive(:message)'
185
- record.new_syntax.should == 'expect(obj).not_to receive(:message)'
186
- end
187
-
188
- context 'and "to_not" is passed as negative form' do
189
- let(:expected_source) do
190
- <<-END
191
- describe 'example' do
192
- it 'does not receive #foo' do
193
- expect(subject).to_not receive(:foo)
194
- end
195
- end
196
- END
197
- end
198
-
199
- it 'converts to `expect(obj).to_not receive(:message)` form' do
200
- should_receive_object.expectize!('to_not')
201
- rewritten_source.should == expected_source
202
- end
203
-
204
- it 'adds record ' \
205
- '`obj.should_not_receive(:message)` -> `expect(obj).to_not receive(:message)`' do
206
- should_receive_object.expectize!('to_not')
207
- record.old_syntax.should == 'obj.should_not_receive(:message)'
208
- record.new_syntax.should == 'expect(obj).to_not receive(:message)'
209
- end
210
- end
211
- end
212
-
213
- # Currently MessageExpectation#with supports the following syntax:
214
- #
215
- # subject.should_receive(:foo).with do |arg|
216
- # arg == 1
217
- # end
218
- #
219
- # This syntax allows to expect arbitrary arguments without expect or should.
220
- # This is available only when #with got no normal arguments but a block,
221
- # and the block will not be used as a substitute implementation.
222
- #
223
- # https://github.com/rspec/rspec-mocks/blob/e6d1980/lib/rspec/mocks/message_expectation.rb#L307
224
- # https://github.com/rspec/rspec-mocks/blob/e6d1980/lib/rspec/mocks/argument_list_matcher.rb#L43
225
- #
226
- # Then, if you convert the example into expect syntax straightforward:
227
- #
228
- # expect(subject).to receive(:foo).with do |arg|
229
- # arg == 1
230
- # end
231
- #
232
- # The do..end block is taken by the #to method, because {..} blocks have higher precedence
233
- # over do..end blocks. This behavior breaks the spec.
234
- #
235
- # To keep the same meaning of syntax, the block needs to be {..} form literal:
236
- #
237
- # expect(subject).to receive(:foo).with { |arg|
238
- # arg == 1
239
- # }
240
- #
241
- context 'with expression `obj.should_receive(:message).with do .. end`' do
242
- let(:source) do
243
- <<-END
244
- describe 'example' do
245
- it 'receives #foo with 1' do
246
- subject.should_receive(:foo).with do |arg|
247
- arg == 1
248
- end
249
- subject.foo(1)
250
- end
251
- end
252
- END
253
- end
254
-
255
- let(:expected_source) do
256
- <<-END
257
- describe 'example' do
258
- it 'receives #foo with 1' do
259
- expect(subject).to receive(:foo).with { |arg|
260
- arg == 1
261
- }
262
- subject.foo(1)
263
- end
264
- end
265
- END
266
- end
267
-
268
- it 'converts to `expect(obj).to receive(:message) { .. }` form' do
269
- should_receive_object.expectize!
270
- rewritten_source.should == expected_source
271
- end
272
- end
273
-
274
- # If #with take normal arguments, the block won't be used as an argument matcher.
275
- context 'with expression `obj.should_receive(:message).with(arg) do .. end`' do
276
- let(:source) do
277
- <<-END
278
- describe 'example' do
279
- it 'receives #foo with 1' do
280
- subject.should_receive(:foo).with(1) do |arg|
281
- do_some_substitute_implementation
282
- end
283
- subject.foo(1)
284
- end
285
- end
286
- END
287
- end
288
-
289
- let(:expected_source) do
290
- <<-END
291
- describe 'example' do
292
- it 'receives #foo with 1' do
293
- expect(subject).to receive(:foo).with(1) do |arg|
294
- do_some_substitute_implementation
295
- end
296
- subject.foo(1)
297
- end
298
- end
299
- END
300
- end
301
-
302
- it 'converts to `expect(obj).to receive(:message).with(arg) do .. end` form' do
303
- should_receive_object.expectize!
304
- rewritten_source.should == expected_source
305
- end
306
- end
307
-
308
- # In this case, the do..end block is taken by the #should_receive method.
309
- # This means the receiver of #once method is return value of #should_receive,
310
- # that is actually an instance of RSpec::Mocks::MessageExpectation.
311
- #
312
- # subject.should_receive(:foo) do |arg|
313
- # arg == 1
314
- # end.once
315
- #
316
- # However with `expect(obj).to receive`, the do..end block is taken by the #to method.
317
- # This means the receiver of #once method is return value of #to, that is actually
318
- # return value of RSpec::Mocks::Matchers::Receive#setup_method_substitute
319
- # and it's not the instance of RSpec::Mocks::MessageExpectation.
320
- #
321
- # https://github.com/rspec/rspec-mocks/blob/9cdef17/lib/rspec/mocks/targets.rb#L19
322
- # https://github.com/rspec/rspec-mocks/blob/9cdef17/lib/rspec/mocks/matchers/receive.rb#L74
323
- #
324
- # Then, the following syntax will be error:
325
- #
326
- # expect(subject).to receive(:foo) do |arg|
327
- # arg == 1
328
- # end.once
329
- #
330
- # So the block needs to be {..} form literal also in this case.
331
- #
332
- # expect(subject).to receive(:foo) { |arg|
333
- # arg == 1
334
- # }.once
335
- #
336
- context 'with expression `obj.should_receive(:message) do .. end.once`' do
337
- let(:source) do
338
- <<-END
339
- describe 'example' do
340
- it 'receives #foo with 1' do
341
- subject.should_receive(:foo) do |arg|
342
- arg == 1
343
- end.once
344
- subject.foo(1)
345
- end
346
- end
347
- END
348
- end
349
-
350
- let(:expected_source) do
351
- <<-END
352
- describe 'example' do
353
- it 'receives #foo with 1' do
354
- expect(subject).to receive(:foo) { |arg|
355
- arg == 1
356
- }.once
357
- subject.foo(1)
358
- end
359
- end
360
- END
361
- end
362
-
363
- it 'converts to `expect(obj).to receive(:message) { .. }.once` form' do
364
- should_receive_object.expectize!
365
- rewritten_source.should == expected_source
366
- end
367
- end
368
-
369
- # This case, do..end block works without problem.
370
- context 'with expression `obj.should_receive(:message) do .. end`' do
371
- let(:source) do
372
- <<-END
373
- describe 'example' do
374
- it 'receives #foo with 1' do
375
- subject.should_receive(:foo) do |arg|
376
- expect(arg).to eq(1)
377
- end
378
- subject.foo(1)
379
- end
380
- end
381
- END
382
- end
383
-
384
- let(:expected_source) do
385
- <<-END
386
- describe 'example' do
387
- it 'receives #foo with 1' do
388
- expect(subject).to receive(:foo) do |arg|
389
- expect(arg).to eq(1)
390
- end
391
- subject.foo(1)
392
- end
393
- end
394
- END
395
- end
396
-
397
- it 'converts to `expect(obj).to receive(:message) do .. end` form' do
398
- should_receive_object.expectize!
399
- rewritten_source.should == expected_source
400
- end
401
- end
402
-
403
- context 'with expression `Klass.any_instance.should_receive(:message)`' do
404
- let(:source) do
405
- <<-END
406
- describe 'example' do
407
- it 'receives #foo' do
408
- Klass.any_instance.should_receive(:foo)
409
- end
410
- end
411
- END
412
- end
413
-
414
- let(:expected_source) do
415
- <<-END
416
- describe 'example' do
417
- it 'receives #foo' do
418
- expect_any_instance_of(Klass).to receive(:foo)
419
- end
420
- end
421
- END
422
- end
423
-
424
- it 'converts to `expect_any_instance_of(Klass).to receive(:message)` form' do
425
- should_receive_object.expectize!
426
- rewritten_source.should == expected_source
427
- end
428
-
429
- it 'adds record `Klass.any_instance.should_receive(:message)` ' \
430
- '-> `expect_any_instance_of(Klass).to receive(:message)`' do
431
- should_receive_object.expectize!
432
- record.old_syntax.should == 'Klass.any_instance.should_receive(:message)'
433
- record.new_syntax.should == 'expect_any_instance_of(Klass).to receive(:message)'
434
- end
435
-
436
- context 'when the statement continues over multi lines' do
437
- let(:source) do
438
- <<-END
439
- describe 'example' do
440
- it 'receives #foo and returns 1' do
441
- Klass
442
- .any_instance
443
- .should_receive(
444
- :foo
445
- ).
446
- and_return(
447
- 1
448
- )
449
- end
450
- end
451
- END
452
- end
453
-
454
- let(:expected_source) do
455
- <<-END
456
- describe 'example' do
457
- it 'receives #foo and returns 1' do
458
- expect_any_instance_of(Klass)
459
- .to receive(
460
- :foo
461
- ).
462
- and_return(
463
- 1
464
- )
465
- end
466
- end
467
- END
468
- end
469
-
470
- it 'keeps the style as far as possible' do
471
- should_receive_object.expectize!
472
- rewritten_source.should == expected_source
473
- end
474
- end
475
- end
476
-
477
- context 'with expression `described_class.any_instance.should_receive(:message)`' do
478
- let(:source) do
479
- <<-END
480
- describe 'example' do
481
- it 'receives #foo' do
482
- described_class.any_instance.should_receive(:foo)
483
- end
484
- end
485
- END
486
- end
487
-
488
- let(:expected_source) do
489
- <<-END
490
- describe 'example' do
491
- it 'receives #foo' do
492
- expect_any_instance_of(described_class).to receive(:foo)
493
- end
494
- end
495
- END
496
- end
497
-
498
- it 'converts to `expect_any_instance_of(described_class).to receive(:message)` form' do
499
- should_receive_object.expectize!
500
- rewritten_source.should == expected_source
501
- end
502
-
503
- it 'adds record `Klass.any_instance.should_receive(:message)` ' \
504
- '-> `expect_any_instance_of(Klass).to receive(:message)`' do
505
- should_receive_object.expectize!
506
- record.old_syntax.should == 'Klass.any_instance.should_receive(:message)'
507
- record.new_syntax.should == 'expect_any_instance_of(Klass).to receive(:message)'
508
- end
509
- end
510
-
511
- context 'with expression `variable.any_instance.should_receive(:message)`' do
512
- let(:source) do
513
- <<-END
514
- describe 'example' do
515
- it 'receives #foo' do
516
- variable = String
517
- variable.any_instance.should_receive(:foo)
518
- 'string'.foo
519
- end
520
- end
521
- END
522
- end
523
-
524
- let(:expected_source) do
525
- <<-END
526
- describe 'example' do
527
- it 'receives #foo' do
528
- variable = String
529
- expect_any_instance_of(variable).to receive(:foo)
530
- 'string'.foo
531
- end
532
- end
533
- END
534
- end
535
-
536
- it 'converts to `expect_any_instance_of(variable).to receive(:message)` form' do
537
- should_receive_object.expectize!
538
- rewritten_source.should == expected_source
539
- end
540
-
541
- it 'adds record `Klass.any_instance.should_receive(:message)` ' \
542
- '-> `expect_any_instance_of(Klass).to receive(:message)`' do
543
- should_receive_object.expectize!
544
- record.old_syntax.should == 'Klass.any_instance.should_receive(:message)'
545
- record.new_syntax.should == 'expect_any_instance_of(Klass).to receive(:message)'
546
- end
547
- end
548
-
549
- context 'with expression `variable.should_receive(:message)` ' \
550
- 'and the variable is an AnyInstance::Recorder' do
551
- context 'with runtime information' do
552
- include_context 'dynamic analysis objects'
553
-
554
- let(:source) do
555
- <<-END
556
- describe 'example' do
557
- it 'receives #foo' do
558
- variable = String.any_instance
559
- variable.should_receive(:foo)
560
- 'string'.foo
561
- end
562
- end
563
- END
564
- end
565
-
566
- let(:expected_source) do
567
- <<-END
568
- describe 'example' do
569
- it 'receives #foo' do
570
- variable = String.any_instance
571
- expect_any_instance_of(String).to receive(:foo)
572
- 'string'.foo
573
- end
574
- end
575
- END
576
- end
577
-
578
- it 'converts to `expect_any_instance_of(Klass).to receive(:message)` form' do
579
- should_receive_object.expectize!
580
- rewritten_source.should == expected_source
581
- end
582
-
583
- it 'adds record `Klass.any_instance.should_receive(:message)` ' \
584
- '-> `expect_any_instance_of(Klass).to receive(:message)`' do
585
- should_receive_object.expectize!
586
- record.old_syntax.should == 'Klass.any_instance.should_receive(:message)'
587
- record.new_syntax.should == 'expect_any_instance_of(Klass).to receive(:message)'
588
- end
589
- end
590
- end
591
- end
592
-
593
- describe '#useless_expectation?' do
594
- subject { should_receive_object.useless_expectation? }
595
-
596
- context 'with expression `obj.should_receive(:message).any_number_of_times`' do
597
- let(:source) do
598
- <<-END
599
- describe 'example' do
600
- it 'responds to #foo' do
601
- subject.should_receive(:foo).any_number_of_times
602
- end
603
- end
604
- END
605
- end
606
-
607
- it { should be_true }
608
- end
609
-
610
- context 'with expression `obj.should_receive(:message).with(arg).any_number_of_times`' do
611
- let(:source) do
612
- <<-END
613
- describe 'example' do
614
- it 'responds to #foo with 1' do
615
- subject.should_receive(:foo).with(1).any_number_of_times
616
- end
617
- end
618
- END
619
- end
620
-
621
- it { should be_true }
622
- end
623
-
624
- context 'with expression `obj.should_receive(:message).at_least(0)`' do
625
- let(:source) do
626
- <<-END
627
- describe 'example' do
628
- it 'responds to #foo' do
629
- subject.should_receive(:foo).at_least(0)
630
- end
631
- end
632
- END
633
- end
634
-
635
- it { should be_true }
636
- end
637
-
638
- context 'with expression `obj.should_receive(:message).at_least(1)`' do
639
- let(:source) do
640
- <<-END
641
- describe 'example' do
642
- it 'receives #foo at least once' do
643
- subject.should_receive(:foo).with(1).at_least(1)
644
- end
645
- end
646
- END
647
- end
648
-
649
- it { should be_false }
650
- end
651
-
652
- context 'with expression `obj.should_receive(:message)`' do
653
- let(:source) do
654
- <<-END
655
- describe 'example' do
656
- it 'receives to #foo' do
657
- subject.should_receive(:foo)
658
- end
659
- end
660
- END
661
- end
662
-
663
- it { should be_false }
664
- end
665
- end
666
-
667
- describe '#allowize_useless_expectation!' do
668
- context 'with expression `obj.should_receive(:message).any_number_of_times`' do
669
- let(:source) do
670
- <<-END
671
- describe 'example' do
672
- it 'responds to #foo' do
673
- subject.should_receive(:foo).any_number_of_times
674
- end
675
- end
676
- END
677
- end
678
-
679
- let(:expected_source) do
680
- <<-END
681
- describe 'example' do
682
- it 'responds to #foo' do
683
- allow(subject).to receive(:foo)
684
- end
685
- end
686
- END
687
- end
688
-
689
- it 'converts to `allow(obj).to receive(:message)` form' do
690
- should_receive_object.allowize_useless_expectation!
691
- rewritten_source.should == expected_source
692
- end
693
-
694
- it 'adds record ' \
695
- '`obj.should_receive(:message).any_number_of_times` -> `allow(obj).to receive(:message)`' do
696
- should_receive_object.allowize_useless_expectation!
697
- record.old_syntax.should == 'obj.should_receive(:message).any_number_of_times'
698
- record.new_syntax.should == 'allow(obj).to receive(:message)'
699
- end
700
-
701
- context 'and #allow and #receive are not available in the context' do
702
- context 'and the context is determinable statically' do
703
- let(:source) do
704
- <<-END
705
- describe 'example' do
706
- class TestRunner
707
- def run
708
- 'something'.should_receive(:foo).any_number_of_times
709
- end
710
- end
711
-
712
- it 'responds to #foo' do
713
- TestRunner.new.run
714
- end
715
- end
716
- END
717
- end
718
-
719
- context 'with runtime information' do
720
- include_context 'dynamic analysis objects'
721
-
722
- it 'raises ContextError' do
723
- -> { should_receive_object.allowize_useless_expectation! }
724
- .should raise_error(ContextError)
725
- end
726
- end
727
-
728
- context 'without runtime information' do
729
- it 'raises ContextError' do
730
- -> { should_receive_object.allowize_useless_expectation! }
731
- .should raise_error(ContextError)
732
- end
733
- end
734
- end
735
-
736
- context 'and the context is not determinable statically' do
737
- let(:source) do
738
- <<-END
739
- def my_eval(&block)
740
- Object.new.instance_eval(&block)
741
- end
742
-
743
- describe 'example' do
744
- it 'responds to #foo' do
745
- my_eval { 'something'.should_receive(:foo).any_number_of_times }
746
- end
747
- end
748
- END
749
- end
750
-
751
- context 'with runtime information' do
752
- include_context 'dynamic analysis objects'
753
-
754
- it 'raises ContextError' do
755
- -> { should_receive_object.allowize_useless_expectation! }
756
- .should raise_error(ContextError)
757
- end
758
- end
759
-
760
- context 'without runtime information' do
761
- it 'does not raise ContextError' do
762
- -> { should_receive_object.allowize_useless_expectation! }
763
- .should_not raise_error
764
- end
765
- end
766
- end
767
- end
768
- end
769
-
770
- context 'with expression `Klass.any_instance.should_receive(:message).any_number_of_times`' do
771
- let(:source) do
772
- <<-END
773
- describe 'example' do
774
- it 'responds to #foo' do
775
- Klass.any_instance.should_receive(:foo).any_number_of_times
776
- end
777
- end
778
- END
779
- end
780
-
781
- let(:expected_source) do
782
- <<-END
783
- describe 'example' do
784
- it 'responds to #foo' do
785
- allow_any_instance_of(Klass).to receive(:foo)
786
- end
787
- end
788
- END
789
- end
790
-
791
- it 'converts to `allow_any_instance_of(Klass).to receive(:message)` form' do
792
- should_receive_object.allowize_useless_expectation!
793
- rewritten_source.should == expected_source
794
- end
795
-
796
- it 'adds record `Klass.any_instance.should_receive(:message).any_number_of_times` ' \
797
- '-> `allow_any_instance_of(Klass).to receive(:message)`' do
798
- should_receive_object.allowize_useless_expectation!
799
- record.old_syntax.should == 'Klass.any_instance.should_receive(:message).any_number_of_times'
800
- record.new_syntax.should == 'allow_any_instance_of(Klass).to receive(:message)'
801
- end
802
- end
803
-
804
- context 'with expression `described_class.any_instance.should_receive(:message).any_number_of_times`' do
805
- let(:source) do
806
- <<-END
807
- describe 'example' do
808
- it 'responds to #foo' do
809
- described_class.any_instance.should_receive(:foo).any_number_of_times
810
- end
811
- end
812
- END
813
- end
814
-
815
- let(:expected_source) do
816
- <<-END
817
- describe 'example' do
818
- it 'responds to #foo' do
819
- allow_any_instance_of(described_class).to receive(:foo)
820
- end
821
- end
822
- END
823
- end
824
-
825
- it 'converts to `allow_any_instance_of(described_class).to receive(:message)` form' do
826
- should_receive_object.allowize_useless_expectation!
827
- rewritten_source.should == expected_source
828
- end
829
-
830
- it 'adds record `Klass.any_instance.should_receive(:message).any_number_of_times` ' \
831
- '-> `allow_any_instance_of(Klass).to receive(:message)`' do
832
- should_receive_object.allowize_useless_expectation!
833
- record.old_syntax.should == 'Klass.any_instance.should_receive(:message).any_number_of_times'
834
- record.new_syntax.should == 'allow_any_instance_of(Klass).to receive(:message)'
835
- end
836
- end
837
-
838
- context 'with expression `obj.should_receive(:message).at_least(0)`' do
839
- let(:source) do
840
- <<-END
841
- describe 'example' do
842
- it 'responds to #foo' do
843
- subject.should_receive(:foo).at_least(0)
844
- end
845
- end
846
- END
847
- end
848
-
849
- let(:expected_source) do
850
- <<-END
851
- describe 'example' do
852
- it 'responds to #foo' do
853
- allow(subject).to receive(:foo)
854
- end
855
- end
856
- END
857
- end
858
-
859
- it 'converts to `allow(obj).to receive(:message)` form' do
860
- should_receive_object.allowize_useless_expectation!
861
- rewritten_source.should == expected_source
862
- end
863
-
864
- it 'adds record ' \
865
- '`obj.should_receive(:message).at_least(0)` -> `allow(obj).to receive(:message)`' do
866
- should_receive_object.allowize_useless_expectation!
867
- record.old_syntax.should == 'obj.should_receive(:message).at_least(0)'
868
- record.new_syntax.should == 'allow(obj).to receive(:message)'
869
- end
870
- end
871
-
872
- context 'with expression `Klass.any_instance.should_receive(:message).at_least(0)`' do
873
- let(:source) do
874
- <<-END
875
- describe 'example' do
876
- it 'responds to #foo' do
877
- Klass.any_instance.should_receive(:foo).at_least(0)
878
- end
879
- end
880
- END
881
- end
882
-
883
- let(:expected_source) do
884
- <<-END
885
- describe 'example' do
886
- it 'responds to #foo' do
887
- allow_any_instance_of(Klass).to receive(:foo)
888
- end
889
- end
890
- END
891
- end
892
-
893
- it 'converts to `allow_any_instance_of(Klass).to receive(:message)` form' do
894
- should_receive_object.allowize_useless_expectation!
895
- rewritten_source.should == expected_source
896
- end
897
-
898
- it 'adds record `Klass.any_instance.should_receive(:message).at_least(0)` ' \
899
- '-> `allow_any_instance_of(Klass).to receive(:message)`' do
900
- should_receive_object.allowize_useless_expectation!
901
- record.old_syntax.should == 'Klass.any_instance.should_receive(:message).at_least(0)'
902
- record.new_syntax.should == 'allow_any_instance_of(Klass).to receive(:message)'
903
- end
904
- end
905
-
906
- context 'with expression `obj.should_receive(:message)`' do
907
- let(:source) do
908
- <<-END
909
- describe 'example' do
910
- it 'receives to #foo' do
911
- subject.should_receive(:foo)
912
- end
913
- end
914
- END
915
- end
916
-
917
- it 'does nothing' do
918
- should_receive_object.allowize_useless_expectation!
919
- rewritten_source.should == source
920
- end
921
- end
922
- end
923
-
924
- describe '#stubize_useless_expectation!' do
925
- before do
926
- should_receive_object.stubize_useless_expectation!
927
- end
928
-
929
- context 'with expression `obj.should_receive(:message).any_number_of_times`' do
930
- let(:source) do
931
- <<-END
932
- describe 'example' do
933
- it 'responds to #foo' do
934
- subject.should_receive(:foo).any_number_of_times
935
- end
936
- end
937
- END
938
- end
939
-
940
- let(:expected_source) do
941
- <<-END
942
- describe 'example' do
943
- it 'responds to #foo' do
944
- subject.stub(:foo)
945
- end
946
- end
947
- END
948
- end
949
-
950
- it 'converts to `obj.stub(:message)` form' do
951
- rewritten_source.should == expected_source
952
- end
953
-
954
- it 'adds record ' \
955
- '`obj.should_receive(:message).any_number_of_times` -> `obj.stub(:message)`' do
956
- record.old_syntax.should == 'obj.should_receive(:message).any_number_of_times'
957
- record.new_syntax.should == 'obj.stub(:message)'
958
- end
959
- end
960
-
961
- context 'with expression `obj.should_receive(:message)`' do
962
- let(:source) do
963
- <<-END
964
- describe 'example' do
965
- it 'receives to #foo' do
966
- subject.should_receive(:foo)
967
- end
968
- end
969
- END
970
- end
971
-
972
- it 'does nothing' do
973
- rewritten_source.should == source
974
- end
975
- end
976
- end
977
-
978
- describe '#remove_useless_and_return!' do
979
- before do
980
- should_receive_object.remove_useless_and_return!
981
- end
982
-
983
- context 'with expression `obj.should_receive(:message).and_return { value }`' do
984
- let(:source) do
985
- <<-END
986
- describe 'example' do
987
- it 'receives #foo and returns 1' do
988
- subject.should_receive(:foo).and_return { 1 }
989
- end
990
- end
991
- END
992
- end
993
-
994
- let(:expected_source) do
995
- <<-END
996
- describe 'example' do
997
- it 'receives #foo and returns 1' do
998
- subject.should_receive(:foo) { 1 }
999
- end
1000
- end
1001
- END
1002
- end
1003
-
1004
- it 'converts to `obj.should_receive(:message) { value }` form' do
1005
- rewritten_source.should == expected_source
1006
- end
1007
-
1008
- it 'adds record ' \
1009
- '`obj.should_receive(:message).and_return { value }` -> `obj.should_receive(:message) { value }`' do
1010
- record.old_syntax.should == 'obj.should_receive(:message).and_return { value }'
1011
- record.new_syntax.should == 'obj.should_receive(:message) { value }'
1012
- end
1013
- end
1014
- end
1015
-
1016
- describe '#add_receiver_arg_to_any_instance_implementation_block!' do
1017
- before do
1018
- should_receive_object.add_receiver_arg_to_any_instance_implementation_block!
1019
- end
1020
-
1021
- context 'with expression `Klass.any_instance.should_receive(:message) do |arg| .. end`' do
1022
- let(:source) do
1023
- <<-END
1024
- describe 'example' do
1025
- it 'receives #foo' do
1026
- Klass.any_instance.should_receive(:foo) do |arg|
1027
- end
1028
- end
1029
- end
1030
- END
1031
- end
1032
-
1033
- let(:expected_source) do
1034
- <<-END
1035
- describe 'example' do
1036
- it 'receives #foo' do
1037
- Klass.any_instance.should_receive(:foo) do |instance, arg|
1038
- end
1039
- end
1040
- end
1041
- END
1042
- end
1043
-
1044
- it 'converts to `Klass.any_instance.should_receive(:message) do |instance, arg| .. end` form' do
1045
- rewritten_source.should == expected_source
1046
- end
1047
-
1048
- it 'adds record `Klass.any_instance.should_receive(:message) { |arg| }` ' \
1049
- '-> `Klass.any_instance.should_receive(:message) { |instance, arg| }`' do
1050
- record.old_syntax.should == 'Klass.any_instance.should_receive(:message) { |arg| }'
1051
- record.new_syntax.should == 'Klass.any_instance.should_receive(:message) { |instance, arg| }'
1052
- end
1053
- end
1054
-
1055
- context 'with expression `Klass.any_instance.should_receive(:message) do .. end`' do
1056
- let(:source) do
1057
- <<-END
1058
- describe 'example' do
1059
- it 'receives #foo' do
1060
- Klass.any_instance.should_receive(:foo) do
1061
- end
1062
- end
1063
- end
1064
- END
1065
- end
1066
-
1067
- it 'does nothing' do
1068
- rewritten_source.should == source
1069
- end
1070
- end
1071
-
1072
- context 'with expression `Klass.any_instance.should_receive(:message) do |instance| .. end`' do
1073
- let(:source) do
1074
- <<-END
1075
- describe 'example' do
1076
- it 'receives #foo' do
1077
- Klass.any_instance.should_receive(:foo) do |instance|
1078
- end
1079
- end
1080
- end
1081
- END
1082
- end
1083
-
1084
- it 'does nothing' do
1085
- rewritten_source.should == source
1086
- end
1087
- end
1088
-
1089
- context 'with expression `obj.should_receive(:message) do |arg| .. end`' do
1090
- let(:source) do
1091
- <<-END
1092
- describe 'example' do
1093
- it 'receives #foo' do
1094
- subject.should_receive(:foo) do |arg|
1095
- end
1096
- end
1097
- end
1098
- END
1099
- end
1100
-
1101
- it 'does nothing' do
1102
- rewritten_source.should == source
1103
- end
1104
- end
1105
- end
1106
- end
1107
- end
1108
- end