vcr 3.0.3 → 6.2.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.
Files changed (146) hide show
  1. checksums.yaml +5 -5
  2. data/lib/vcr/cassette/erb_renderer.rb +4 -2
  3. data/lib/vcr/cassette/http_interaction_list.rb +14 -9
  4. data/lib/vcr/cassette/migrator.rb +5 -6
  5. data/lib/vcr/cassette/persisters/file_system.rb +9 -1
  6. data/lib/vcr/cassette/serializers/compressed.rb +2 -2
  7. data/lib/vcr/cassette/serializers/json.rb +14 -8
  8. data/lib/vcr/cassette/serializers/psych.rb +10 -2
  9. data/lib/vcr/cassette/serializers/syck.rb +7 -1
  10. data/lib/vcr/cassette/serializers/yaml.rb +14 -2
  11. data/lib/vcr/cassette/serializers.rb +10 -0
  12. data/lib/vcr/cassette.rb +63 -16
  13. data/lib/vcr/configuration.rb +21 -8
  14. data/lib/vcr/deprecations.rb +0 -62
  15. data/lib/vcr/errors.rb +17 -12
  16. data/lib/vcr/library_hooks/excon.rb +8 -0
  17. data/lib/vcr/library_hooks/typhoeus.rb +91 -79
  18. data/lib/vcr/library_hooks/webmock.rb +2 -11
  19. data/lib/vcr/linked_cassette.rb +4 -4
  20. data/lib/vcr/middleware/excon.rb +1 -1
  21. data/lib/vcr/middleware/faraday.rb +29 -2
  22. data/lib/vcr/request_ignorer.rb +8 -1
  23. data/lib/vcr/request_matcher_registry.rb +3 -3
  24. data/lib/vcr/structs.rb +48 -32
  25. data/lib/vcr/test_frameworks/cucumber.rb +16 -5
  26. data/lib/vcr/test_frameworks/rspec.rb +34 -22
  27. data/lib/vcr/util/hooks.rb +1 -0
  28. data/lib/vcr/util/internet_connection.rb +15 -21
  29. data/lib/vcr/version.rb +2 -2
  30. data/lib/vcr.rb +52 -2
  31. metadata +45 -272
  32. data/features/CHANGELOG.md +0 -710
  33. data/features/CONTRIBUTING.md +0 -26
  34. data/features/LICENSE.md +0 -20
  35. data/features/README.md +0 -339
  36. data/features/Upgrade.md +0 -289
  37. data/features/about_these_examples.md +0 -18
  38. data/features/cassettes/allow_unused_http_interactions.feature +0 -100
  39. data/features/cassettes/automatic_re_recording.feature +0 -72
  40. data/features/cassettes/decompress.feature +0 -74
  41. data/features/cassettes/dynamic_erb.feature +0 -100
  42. data/features/cassettes/exclusive.feature +0 -126
  43. data/features/cassettes/format.feature +0 -411
  44. data/features/cassettes/freezing_time.feature +0 -68
  45. data/features/cassettes/naming.feature +0 -28
  46. data/features/cassettes/no_cassette.feature +0 -152
  47. data/features/cassettes/update_content_length_header.feature +0 -112
  48. data/features/configuration/allow_http_connections_when_no_cassette.feature +0 -55
  49. data/features/configuration/cassette_library_dir.feature +0 -31
  50. data/features/configuration/debug_logging.feature +0 -58
  51. data/features/configuration/default_cassette_options.feature +0 -100
  52. data/features/configuration/filter_sensitive_data.feature +0 -153
  53. data/features/configuration/hook_into.feature +0 -172
  54. data/features/configuration/ignore_request.feature +0 -192
  55. data/features/configuration/preserve_exact_body_bytes.feature +0 -108
  56. data/features/configuration/query_parser.feature +0 -84
  57. data/features/configuration/uri_parser.feature +0 -93
  58. data/features/getting_started.md +0 -82
  59. data/features/hooks/after_http_request.feature +0 -58
  60. data/features/hooks/around_http_request.feature +0 -57
  61. data/features/hooks/before_http_request.feature +0 -63
  62. data/features/hooks/before_playback.feature +0 -184
  63. data/features/hooks/before_record.feature +0 -172
  64. data/features/http_libraries/em_http_request.feature +0 -250
  65. data/features/http_libraries/net_http.feature +0 -179
  66. data/features/middleware/faraday.feature +0 -56
  67. data/features/middleware/rack.feature +0 -92
  68. data/features/record_modes/all.feature +0 -82
  69. data/features/record_modes/new_episodes.feature +0 -79
  70. data/features/record_modes/none.feature +0 -72
  71. data/features/record_modes/once.feature +0 -95
  72. data/features/request_matching/README.md +0 -30
  73. data/features/request_matching/body.feature +0 -91
  74. data/features/request_matching/body_as_json.feature +0 -90
  75. data/features/request_matching/custom_matcher.feature +0 -135
  76. data/features/request_matching/headers.feature +0 -85
  77. data/features/request_matching/host.feature +0 -95
  78. data/features/request_matching/identical_request_sequence.feature +0 -89
  79. data/features/request_matching/method.feature +0 -96
  80. data/features/request_matching/path.feature +0 -96
  81. data/features/request_matching/playback_repeats.feature +0 -98
  82. data/features/request_matching/query.feature +0 -97
  83. data/features/request_matching/uri.feature +0 -94
  84. data/features/request_matching/uri_without_param.feature +0 -101
  85. data/features/step_definitions/cli_steps.rb +0 -199
  86. data/features/support/env.rb +0 -46
  87. data/features/support/http_lib_filters.rb +0 -46
  88. data/features/test_frameworks/cucumber.feature +0 -211
  89. data/features/test_frameworks/rspec_macro.feature +0 -81
  90. data/features/test_frameworks/rspec_metadata.feature +0 -150
  91. data/features/test_frameworks/test_unit.feature +0 -49
  92. data/lib/vcr/extensions/net_http_response.rb +0 -36
  93. data/lib/vcr/library_hooks/fakeweb.rb +0 -197
  94. data/lib/vcr/library_hooks/typhoeus_0.4.rb +0 -103
  95. data/spec/acceptance/concurrency_spec.rb +0 -51
  96. data/spec/acceptance/threading_spec.rb +0 -34
  97. data/spec/fixtures/cassette_spec/1_x_cassette.yml +0 -110
  98. data/spec/fixtures/cassette_spec/empty.yml +0 -0
  99. data/spec/fixtures/cassette_spec/example.yml +0 -111
  100. data/spec/fixtures/cassette_spec/with_localhost_requests.yml +0 -111
  101. data/spec/fixtures/fake_example_responses.yml +0 -110
  102. data/spec/fixtures/match_requests_on.yml +0 -187
  103. data/spec/lib/vcr/cassette/erb_renderer_spec.rb +0 -53
  104. data/spec/lib/vcr/cassette/http_interaction_list_spec.rb +0 -295
  105. data/spec/lib/vcr/cassette/migrator_spec.rb +0 -196
  106. data/spec/lib/vcr/cassette/persisters/file_system_spec.rb +0 -75
  107. data/spec/lib/vcr/cassette/persisters_spec.rb +0 -39
  108. data/spec/lib/vcr/cassette/serializers_spec.rb +0 -182
  109. data/spec/lib/vcr/cassette_spec.rb +0 -618
  110. data/spec/lib/vcr/configuration_spec.rb +0 -326
  111. data/spec/lib/vcr/deprecations_spec.rb +0 -85
  112. data/spec/lib/vcr/errors_spec.rb +0 -178
  113. data/spec/lib/vcr/extensions/net_http_response_spec.rb +0 -86
  114. data/spec/lib/vcr/library_hooks/excon_spec.rb +0 -104
  115. data/spec/lib/vcr/library_hooks/fakeweb_spec.rb +0 -169
  116. data/spec/lib/vcr/library_hooks/faraday_spec.rb +0 -68
  117. data/spec/lib/vcr/library_hooks/typhoeus_0.4_spec.rb +0 -36
  118. data/spec/lib/vcr/library_hooks/typhoeus_spec.rb +0 -162
  119. data/spec/lib/vcr/library_hooks/webmock_spec.rb +0 -117
  120. data/spec/lib/vcr/library_hooks_spec.rb +0 -51
  121. data/spec/lib/vcr/middleware/faraday_spec.rb +0 -181
  122. data/spec/lib/vcr/middleware/rack_spec.rb +0 -115
  123. data/spec/lib/vcr/request_ignorer_spec.rb +0 -70
  124. data/spec/lib/vcr/request_matcher_registry_spec.rb +0 -345
  125. data/spec/lib/vcr/structs_spec.rb +0 -732
  126. data/spec/lib/vcr/test_frameworks/cucumber_spec.rb +0 -107
  127. data/spec/lib/vcr/test_frameworks/rspec_spec.rb +0 -94
  128. data/spec/lib/vcr/util/hooks_spec.rb +0 -158
  129. data/spec/lib/vcr/util/internet_connection_spec.rb +0 -37
  130. data/spec/lib/vcr/util/version_checker_spec.rb +0 -31
  131. data/spec/lib/vcr/version_spec.rb +0 -27
  132. data/spec/lib/vcr_spec.rb +0 -354
  133. data/spec/monkey_patches.rb +0 -186
  134. data/spec/spec_helper.rb +0 -63
  135. data/spec/support/configuration_stubbing.rb +0 -8
  136. data/spec/support/cucumber_helpers.rb +0 -39
  137. data/spec/support/fixnum_extension.rb +0 -10
  138. data/spec/support/http_library_adapters.rb +0 -289
  139. data/spec/support/limited_uri.rb +0 -21
  140. data/spec/support/ruby_interpreter.rb +0 -7
  141. data/spec/support/shared_example_groups/excon.rb +0 -63
  142. data/spec/support/shared_example_groups/hook_into_http_library.rb +0 -594
  143. data/spec/support/shared_example_groups/request_hooks.rb +0 -59
  144. data/spec/support/sinatra_app.rb +0 -86
  145. data/spec/support/vcr_localhost_server.rb +0 -76
  146. data/spec/support/vcr_stub_helpers.rb +0 -17
@@ -1,107 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe VCR::CucumberTags do
4
- subject { described_class.new(self) }
5
- let(:before_blocks_for_tags) { {} }
6
- let(:after_blocks_for_tags) { {} }
7
-
8
- def scenario(name)
9
- double(:name => name, :feature => double(:name => "My feature name\nThe preamble text is not included"), :failed? => false)
10
- end
11
-
12
- let(:current_scenario) { scenario "My scenario name\nThe preamble text is not included" }
13
-
14
- # define our own Before/After so we can test this in isolation from cucumber's implementation.
15
- def Before(tag, &block)
16
- before_blocks_for_tags[tag.sub('@', '')] = block
17
- end
18
-
19
- def After(tag, &block)
20
- after_blocks_for_tags[tag.sub('@', '')] = block
21
- end
22
-
23
- def test_tag(cassette_attribute, tag, expected_value, scenario=current_scenario)
24
- expect(VCR.current_cassette).to be_nil
25
-
26
- before_blocks_for_tags[tag].call(scenario)
27
- expect(VCR.current_cassette.send(cassette_attribute)).to eq(expected_value)
28
- after_blocks_for_tags[tag].call(scenario)
29
-
30
- expect(VCR.current_cassette).to be_nil
31
- end
32
-
33
- %w(tags tag).each do |tag_method|
34
- describe "##{tag_method}" do
35
- it "creates a cucumber Around hook for each given tag so that the scenario runs with the cassette inserted" do
36
- subject.send(tag_method, 'tag1', 'tag2')
37
-
38
- test_tag(:name, 'tag1', 'cucumber_tags/tag1')
39
- test_tag(:name, 'tag2', 'cucumber_tags/tag2')
40
- end
41
-
42
- it "works with tags that start with an @" do
43
- subject.send(tag_method, '@tag1', '@tag2')
44
-
45
- test_tag(:name, 'tag1', 'cucumber_tags/tag1')
46
- test_tag(:name, 'tag2', 'cucumber_tags/tag2')
47
- end
48
-
49
- it "passes along the given options to the cassette" do
50
- subject.send(tag_method, 'tag1', :record => :none)
51
- subject.send(tag_method, 'tag2', :record => :new_episodes)
52
-
53
- test_tag(:record_mode, 'tag1', :none)
54
- test_tag(:record_mode, 'tag2', :new_episodes)
55
- end
56
-
57
- context 'with :use_scenario_name as an option' do
58
- it "uses the scenario's name as the cassette name" do
59
- subject.send(tag_method, 'tag1', :use_scenario_name => true)
60
-
61
- test_tag(:name, 'tag1', 'My feature name/My scenario name')
62
- end
63
-
64
- it "makes a unique name for each element of scenario outline" do
65
- subject.send(tag_method, 'tag1', :use_scenario_name => true)
66
-
67
- scenario_with_outline = double(:name => "My row name", :failed? => false,
68
- :scenario_outline => double(:feature => double(:name => "My feature name\nThe preamble text is not included"),
69
- :name => "My scenario outline name"))
70
- test_tag(:name, 'tag1', 'My feature name/My scenario outline name/My row name', scenario_with_outline)
71
- end
72
-
73
- it 'does not pass :use_scenario_name along the given options to the cassette' do
74
- subject.send(tag_method, 'tag1', :use_scenario_name => true)
75
-
76
- expect(VCR::Cassette).to receive(:new).with(anything, hash_not_including(:use_scenario_name))
77
- before_blocks_for_tags['tag1'].call(current_scenario)
78
- end
79
-
80
- it 'does not modify the options passed to the cassette' do
81
- original_options = { :use_scenario_name => true, :record => :none }
82
- subject.send(tag_method, 'tag1', original_options)
83
- before_blocks_for_tags['tag1'].call(current_scenario)
84
-
85
- expect(original_options.size).to eq(2)
86
- expect(original_options[:use_scenario_name]).to eq(true)
87
- expect(original_options[:record]).to eq(:none)
88
- end
89
-
90
- it "works properly when multiple scenarios use the tag" do
91
- subject.send(tag_method, 'tag1', :use_scenario_name => true)
92
-
93
- test_tag(:name, 'tag1', 'My feature name/Foo', scenario("Foo"))
94
- test_tag(:name, 'tag1', 'My feature name/Bar', scenario("Bar"))
95
- end
96
- end
97
- end
98
- end
99
-
100
- describe '.tags' do
101
- it 'returns the list of cucumber tags' do
102
- subject.tags 'tag1', 'tag2'
103
- subject.tags 'tag3', 'tag4'
104
- expect(described_class.tags[-4, 4]).to eq(%w(@tag1 @tag2 @tag3 @tag4))
105
- end
106
- end
107
- end
@@ -1,94 +0,0 @@
1
- require 'spec_helper'
2
-
3
- VCR.configuration.configure_rspec_metadata!
4
-
5
- describe VCR::RSpec::Metadata, :skip_vcr_reset do
6
- before(:all) { VCR.reset! }
7
- after(:each) { VCR.reset! }
8
-
9
- context 'an example group', :vcr do
10
- context 'with a nested example group' do
11
- it 'uses a cassette for any examples' do
12
- expect(VCR.current_cassette.name.split('/')).to eq([
13
- 'VCR::RSpec::Metadata',
14
- 'an example group',
15
- 'with a nested example group',
16
- 'uses a cassette for any examples'
17
- ])
18
- end
19
- end
20
-
21
- context 'when the spec has no description' do
22
- it do
23
- expect(VCR.current_cassette.name.split('/')).to eq([
24
- 'VCR::RSpec::Metadata',
25
- 'an example group',
26
- 'when the spec has no description',
27
- '1:1:2:1'
28
- ])
29
- end
30
- end
31
- end
32
-
33
- context 'with the cassette name overridden at the example group level', :vcr => { :cassette_name => 'foo' } do
34
- it 'overrides the cassette name for an example' do
35
- expect(VCR.current_cassette.name).to eq('foo')
36
- end
37
-
38
- it 'overrides the cassette name for another example' do
39
- expect(VCR.current_cassette.name).to eq('foo')
40
- end
41
- end
42
-
43
- it 'allows the cassette name to be overriden', :vcr => { :cassette_name => 'foo' } do
44
- expect(VCR.current_cassette.name).to eq('foo')
45
- end
46
-
47
- it 'allows the cassette options to be set', :vcr => { :match_requests_on => [:method] } do
48
- expect(VCR.current_cassette.match_requests_on).to eq([:method])
49
- end
50
- end
51
-
52
- describe VCR::RSpec::Macros do
53
- extend described_class
54
-
55
- describe '#use_vcr_cassette' do
56
- def self.perform_test(context_name, expected_cassette_name, *args, &block)
57
- context context_name do
58
- after(:each) do |example|
59
- if example.metadata[:test_ejection]
60
- expect(VCR.current_cassette).to be_nil
61
- end
62
- end
63
-
64
- use_vcr_cassette(*args)
65
-
66
- it 'ejects the cassette in an after hook', :test_ejection do
67
- expect(VCR.current_cassette).to be_a(VCR::Cassette)
68
- end
69
-
70
- it "creates a cassette named '#{expected_cassette_name}" do
71
- expect(VCR.current_cassette.name).to eq(expected_cassette_name)
72
- end
73
-
74
- module_eval(&block) if block
75
- end
76
- end
77
-
78
- perform_test 'when called with an explicit name', 'explicit_name', 'explicit_name'
79
-
80
- perform_test 'when called with an explicit name and some options', 'explicit_name', 'explicit_name', :match_requests_on => [:method, :host] do
81
- it 'uses the provided cassette options' do
82
- expect(VCR.current_cassette.match_requests_on).to eq([:method, :host])
83
- end
84
- end
85
-
86
- perform_test 'when called with nothing', 'VCR::RSpec::Macros/#use_vcr_cassette/when called with nothing'
87
-
88
- perform_test 'when called with some options', 'VCR::RSpec::Macros/#use_vcr_cassette/when called with some options', :match_requests_on => [:method, :host] do
89
- it 'uses the provided cassette options' do
90
- expect(VCR.current_cassette.match_requests_on).to eq([:method, :host])
91
- end
92
- end
93
- end
94
- end
@@ -1,158 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe VCR::Hooks::FilteredHook do
4
- describe "#conditionally_invoke" do
5
- it 'invokes the hook' do
6
- called = false
7
- subject.hook = lambda { called = true }
8
- subject.conditionally_invoke
9
- expect(called).to be true
10
- end
11
-
12
- it 'forwards the given arguments to the hook' do
13
- args = nil
14
- subject.hook = lambda { |a, b| args = [a, b] }
15
- subject.conditionally_invoke(3, 5)
16
- expect(args).to eq([3, 5])
17
- end
18
-
19
- it 'forwards only as many arguments as the hook block accepts' do
20
- args = nil
21
- subject.hook = lambda { |a| args = [a] }
22
- subject.conditionally_invoke(3, 5)
23
- expect(args).to eq([3])
24
- end
25
-
26
- it 'does not invoke the hook if all of the filters return false' do
27
- called = false
28
- subject.hook = lambda { called = true }
29
- subject.filters = lambda { false }
30
- subject.conditionally_invoke
31
- expect(called).to be false
32
- end
33
-
34
- it 'does not invoke the hook if any of the filters returns false' do
35
- called = false
36
- subject.hook = lambda { called = true }
37
- subject.filters = [lambda { false }, lambda { true }]
38
- subject.conditionally_invoke
39
- expect(called).to be false
40
- end
41
-
42
- it 'forwards arguments to the filters' do
43
- filter_args = nil
44
- subject.filters = lambda { |a, b| filter_args = [a, b]; false }
45
- subject.conditionally_invoke(3, 5)
46
- expect(filter_args).to eq([3, 5])
47
- end
48
-
49
- it 'handles splat args properly' do
50
- filter_args = nil
51
- subject.filters = lambda { |*args| filter_args = args; false }
52
- subject.conditionally_invoke(3, 5)
53
- expect(filter_args).to eq([3, 5])
54
- end
55
-
56
- it 'forwards only as many arguments as the filter blocks accept' do
57
- args1 = args2 = nil
58
- subject.filters = [
59
- lambda { |a| args1 = [a]; true },
60
- lambda { |a, b| args2 = [a, b]; false }
61
- ]
62
-
63
- subject.conditionally_invoke(3, 5)
64
- expect(args1).to eq([3])
65
- expect(args2).to eq([3, 5])
66
- end
67
-
68
- it '#to_procs the filter objects' do
69
- filter_called = false
70
- subject.hook = lambda { }
71
- subject.filters = [double(:to_proc => lambda { filter_called = true })]
72
- subject.conditionally_invoke
73
- expect(filter_called).to be true
74
- end
75
- end
76
- end
77
-
78
- describe VCR::Hooks do
79
- let(:hooks_class) { Class.new { include VCR::Hooks } }
80
-
81
- subject { hooks_class.new }
82
- let(:invocations) { [] }
83
-
84
- before(:each) do
85
- hooks_class.instance_eval do
86
- define_hook :before_foo
87
- define_hook :before_bar, :prepend
88
- end
89
- end
90
-
91
- it 'allows the class to override the hook method and super to the main definition' do
92
- override_called = nil
93
-
94
- hooks_class.class_eval do
95
- define_method :before_foo do |&block|
96
- override_called = true
97
- super(&block)
98
- end
99
- end
100
-
101
- subject.before_foo { }
102
- expect(override_called).to be true
103
- end
104
-
105
- describe '#clear_hooks' do
106
- it 'clears all hooks' do
107
- subject.before_foo { invocations << :callback }
108
- subject.clear_hooks
109
- subject.invoke_hook(:before_foo)
110
- expect(invocations).to be_empty
111
- end
112
- end
113
-
114
- describe '#invoke_hook' do
115
- it 'invokes each of the callbacks' do
116
- subject.before_foo { invocations << :callback_1 }
117
- subject.before_foo { invocations << :callback_2 }
118
-
119
- expect(invocations).to be_empty
120
- subject.invoke_hook(:before_foo)
121
- expect(invocations).to eq([:callback_1, :callback_2])
122
- end
123
-
124
- it 'maps the return value of each callback' do
125
- subject.before_foo { 17 }
126
- subject.before_foo { 12 }
127
- expect(subject.invoke_hook(:before_foo)).to eq([17, 12])
128
- end
129
-
130
- it 'does not invoke any filtered callbacks' do
131
- subject.before_foo(:real?) { invocations << :blue_callback }
132
- subject.invoke_hook(:before_foo, double(:real? => false))
133
- expect(invocations).to be_empty
134
- end
135
-
136
- it 'invokes them in reverse order if the hook was defined with :prepend' do
137
- subject.before_bar { 17 }
138
- subject.before_bar { 12 }
139
- expect(subject.invoke_hook(:before_bar)).to eq([12, 17])
140
- end
141
- end
142
-
143
- describe "#has_hooks_for?" do
144
- it 'returns false when given an unrecognized hook name' do
145
- expect(subject).not_to have_hooks_for(:abcd)
146
- end
147
-
148
- it 'returns false when given the name of a defined hook that has no registered callbacks' do
149
- expect(subject).not_to have_hooks_for(:before_foo)
150
- end
151
-
152
- it 'returns true when given the name of a defined hook that has registered callbacks' do
153
- subject.before_foo { }
154
- expect(subject).to have_hooks_for(:before_foo)
155
- end
156
- end
157
- end
158
-
@@ -1,37 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe VCR::InternetConnection do
4
- describe '.available?' do
5
- before(:each) do
6
- described_class.send(:remove_instance_variable, :@available) if described_class.instance_variable_defined?(:@available)
7
- end
8
-
9
- def stub_pingecho_with(value)
10
- allow(VCR::Ping).to receive(:pingecho).with("example.com", anything, anything).and_return(value)
11
- end
12
-
13
- context 'when pinging example.com succeeds' do
14
- it 'returns true' do
15
- stub_pingecho_with(true)
16
- expect(described_class).to be_available
17
- end
18
-
19
- it 'memoizes the value so no extra pings are made' do
20
- expect(VCR::Ping).to receive(:pingecho).once.and_return(true)
21
- 3.times { described_class.available? }
22
- end
23
- end
24
-
25
- context 'when pinging example.com fails' do
26
- it 'returns false' do
27
- stub_pingecho_with(false)
28
- expect(described_class).not_to be_available
29
- end
30
-
31
- it 'memoizes the value so no extra pings are made' do
32
- expect(VCR::Ping).to receive(:pingecho).once.and_return(false)
33
- 3.times { described_class.available? }
34
- end
35
- end
36
- end
37
- end
@@ -1,31 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module VCR
4
- describe VersionChecker do
5
- it 'raises an error if the major version is too low' do
6
- checker = VersionChecker.new('foo', '0.7.3', '1.0.0')
7
- expect { checker.check_version! }.to raise_error(Errors::LibraryVersionTooLowError)
8
- end
9
-
10
- it 'raises an error if the minor version is too low' do
11
- checker = VersionChecker.new('foo', '1.0.99', '1.1.3')
12
- expect { checker.check_version! }.to raise_error(Errors::LibraryVersionTooLowError)
13
- end
14
-
15
- it 'raises an error if the patch version is too low' do
16
- checker = VersionChecker.new('foo', '1.0.8', '1.0.10')
17
- expect { checker.check_version! }.to raise_error(Errors::LibraryVersionTooLowError)
18
- end
19
-
20
- it 'does not raise an error when the version is equal' do
21
- checker = VersionChecker.new('foo', '1.0.0', '1.0.0')
22
- expect { checker.check_version! }.not_to raise_error
23
- end
24
-
25
- it 'does not raise an error when the version is higher' do
26
- checker = VersionChecker.new('foo', '2.0.0', '1.0.0')
27
- expect { checker.check_version! }.not_to raise_error
28
- end
29
- end
30
- end
31
-
@@ -1,27 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "VCR.version" do
4
- subject { VCR.version }
5
-
6
- it { should =~ /\A\d+\.\d+\.\d+(\.\w+)?\z/ }
7
-
8
- describe '#parts' do
9
- subject { super().parts }
10
- it { should be_instance_of(Array) }
11
- end
12
-
13
- describe '#major' do
14
- subject { super().major }
15
- it { should be_instance_of(Fixnum) }
16
- end
17
-
18
- describe '#minor' do
19
- subject { super().minor }
20
- it { should be_instance_of(Fixnum) }
21
- end
22
-
23
- describe '#patch' do
24
- subject { super().patch }
25
- it { should be_instance_of(Fixnum) }
26
- end
27
- end