minitest_vcr 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in minitest_vcr.gemspec
4
+ gemspec
5
+
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Mike Piccolo
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,50 @@
1
+ # minitest_vcr
2
+
3
+ * [Homepage](https://github.com/mfpiccolo/minitest_vcr#readme)
4
+ * [Issues](https://github.com/mfpiccolo/minitest_vcr/issues)
5
+ * [Documentation](http://rubydoc.info/gems/minitest_vcr/frames)
6
+ * [Email](mailto:don at mfpiccolo.net)
7
+
8
+ ## Description
9
+
10
+ Allows VCR to automatically make cassets with proper file paths using Minitest.
11
+
12
+ ## Features
13
+
14
+ ## Examples
15
+
16
+ require 'minitest_vcr'
17
+
18
+ ## Requirements
19
+
20
+
21
+ ## Installation
22
+
23
+ Add this line to your application's Gemfile:
24
+
25
+ ```ruby
26
+ gem "minitest_vcr"
27
+ ```
28
+
29
+ And then execute:
30
+
31
+ $ bundle
32
+
33
+ Or install it yourself as:
34
+
35
+ $ gem install minitest_vcr
36
+
37
+
38
+ ## Copyright
39
+
40
+ Copyright (c) 2013 Mike Piccolo
41
+
42
+ See [LICENSE.txt](LICENSE.txt) for details.
43
+
44
+ ## Contributing
45
+
46
+ 1. Fork it ( http://github.com/<my-github-username>/minitest_vcr/fork )
47
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
48
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
49
+ 4. Push to the branch (`git push origin my-new-feature`)
50
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,36 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+
5
+ begin
6
+ require 'bundler'
7
+ rescue LoadError => e
8
+ warn e.message
9
+ warn "Run `gem install bundler` to install Bundler."
10
+ exit -1
11
+ end
12
+
13
+ begin
14
+ Bundler.setup(:development)
15
+ rescue Bundler::BundlerError => e
16
+ warn e.message
17
+ warn "Run `bundle install` to install missing gems."
18
+ exit e.status_code
19
+ end
20
+
21
+ require 'rake'
22
+
23
+ require 'rubygems/tasks'
24
+ Gem::Tasks.new
25
+
26
+ require 'rake/testtask'
27
+
28
+ Rake::TestTask.new do |test|
29
+ test.libs << 'test'
30
+ test.pattern = 'test/**/*_test.rb'
31
+ test.verbose = true
32
+ end
33
+
34
+ require 'yard'
35
+ YARD::Rake::YardocTask.new
36
+ task :doc => :yard
@@ -0,0 +1,9 @@
1
+ require "minitest_vcr/version"
2
+ require "minitest_vcr/spec"
3
+
4
+ module MinitestVcr
5
+ def self.included(base)
6
+ base.send(:include, MinitestVcr::Spec)
7
+ super
8
+ end
9
+ end
@@ -0,0 +1,25 @@
1
+ require "vcr"
2
+ require "minispec-metadata"
3
+
4
+ module MinitestVcr
5
+ module Spec
6
+ def self.configure!
7
+ run_before = lambda do |example|
8
+ if metadata[:vcr]
9
+ test_info = example.class.name.split("::::").map {|e| e.sub(/[^\w]*$/, "")}.reject(&:empty?)
10
+ VCR.insert_cassette test_info.join("/") + "/#{spec_name}"
11
+ end
12
+ end
13
+
14
+ run_after = lambda do |example|
15
+ if metadata[:vcr]
16
+ ::VCR.eject_cassette
17
+ end
18
+ end
19
+
20
+ ::MiniTest::Spec.before :each, &run_before
21
+
22
+ ::MiniTest::Spec.after :each, &run_after
23
+ end
24
+ end # Callable
25
+ end # SoftService
@@ -0,0 +1,3 @@
1
+ module MinitestVcr
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,37 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'minitest_vcr/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "minitest_vcr"
8
+ spec.version = MinitestVcr::VERSION
9
+ spec.authors = ["Mike Piccolo"]
10
+ spec.email = ["mpiccolo@newleaders.com"]
11
+ spec.summary = "Allows VCR to automatically make cassetes with proper file paths with MiniTest"
12
+ spec.description = "I like MiniTest. I like VCR. I like not having to manage cassetes."
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency 'vcr', '~> 2.8.0'
22
+ spec.add_runtime_dependency 'minitest', '~> 4.7.5'
23
+ spec.add_runtime_dependency 'minispec-metadata', '~> 1.0.0'
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.5"
26
+ spec.add_development_dependency 'rake', '~> 10.0'
27
+ spec.add_development_dependency 'vcr', '~> 2.8.0'
28
+ spec.add_development_dependency 'minitest', '~> 4.7.5'
29
+ spec.add_development_dependency 'minispec-metadata', '~> 1.0.0'
30
+ spec.add_development_dependency 'mocha', '~> 0.14.0'
31
+ spec.add_development_dependency 'faraday', '~> 0.8.9'
32
+ spec.add_development_dependency 'rubygems-tasks', '~> 0.2'
33
+ spec.add_development_dependency 'yard', '~> 0.8'
34
+ spec.add_development_dependency 'webmock', '~> 1.16.0'
35
+ spec.add_development_dependency 'pry', ' ~> 0.9.12.2'
36
+ spec.add_development_dependency 'pry-debugger', '~> 0.2.2'
37
+ end
@@ -0,0 +1,64 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://example.com/
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.8.9
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - ! '*/*'
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Accept-Ranges:
22
+ - bytes
23
+ Cache-Control:
24
+ - max-age=604800
25
+ Content-Type:
26
+ - text/html
27
+ Date:
28
+ - Sun, 12 Jan 2014 18:02:58 GMT
29
+ Etag:
30
+ - ! '"359670651"'
31
+ Expires:
32
+ - Sun, 19 Jan 2014 18:02:58 GMT
33
+ Last-Modified:
34
+ - Fri, 09 Aug 2013 23:54:35 GMT
35
+ Server:
36
+ - ECS (sjc/4FB4)
37
+ X-Cache:
38
+ - HIT
39
+ X-Ec-Custom-Error:
40
+ - '1'
41
+ Content-Length:
42
+ - '1270'
43
+ body:
44
+ encoding: US-ASCII
45
+ string: ! "<!doctype html>\n<html>\n<head>\n <title>Example Domain</title>\n\n
46
+ \ <meta charset=\"utf-8\" />\n <meta http-equiv=\"Content-type\" content=\"text/html;
47
+ charset=utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width,
48
+ initial-scale=1\" />\n <style type=\"text/css\">\n body {\n background-color:
49
+ #f0f0f2;\n margin: 0;\n padding: 0;\n font-family: \"Open
50
+ Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n \n }\n
51
+ \ div {\n width: 600px;\n margin: 5em auto;\n padding:
52
+ 50px;\n background-color: #fff;\n border-radius: 1em;\n }\n
53
+ \ a:link, a:visited {\n color: #38488f;\n text-decoration:
54
+ none;\n }\n @media (max-width: 700px) {\n body {\n background-color:
55
+ #fff;\n }\n div {\n width: auto;\n margin:
56
+ 0 auto;\n border-radius: 0;\n padding: 1em;\n }\n
57
+ \ }\n </style> \n</head>\n\n<body>\n<div>\n <h1>Example Domain</h1>\n
58
+ \ <p>This domain is established to be used for illustrative examples in
59
+ documents. You may use this\n domain in examples without prior coordination
60
+ or asking for permission.</p>\n <p><a href=\"http://www.iana.org/domains/example\">More
61
+ information...</a></p>\n</div>\n</body>\n</html>\n"
62
+ http_version:
63
+ recorded_at: Sun, 12 Jan 2014 18:02:59 GMT
64
+ recorded_with: VCR 2.8.0
data/test/helper.rb ADDED
@@ -0,0 +1,32 @@
1
+ require "rubygems"
2
+
3
+ begin
4
+ require "bundler"
5
+ rescue LoadError => e
6
+ STDERR.puts e.message
7
+ STDERR.puts "Run `gem install bundler` to install Bundler."
8
+ exit e.status_code
9
+ end
10
+
11
+ begin
12
+ Bundler.setup(:default, :development, :test)
13
+ rescue Bundler::BundlerError => e
14
+ STDERR.puts e.message
15
+ STDERR.puts "Run `bundle install` to install missing gems."
16
+ exit e.status_code
17
+ end
18
+
19
+ require "minitest/autorun"
20
+ require "minispec-metadata"
21
+ require "vcr"
22
+ require "webmock"
23
+ require "mocha/setup"
24
+ require "minitest_vcr"
25
+ require "faraday"
26
+ require "pry"
27
+ require "pry-debugger"
28
+
29
+ VCR.configure do |c|
30
+ c.cassette_library_dir = 'test/cassettes'
31
+ c.hook_into :webmock
32
+ end
@@ -0,0 +1,35 @@
1
+ require "helper"
2
+
3
+ MinitestVcr::Spec.configure!
4
+
5
+ describe MinitestVcr::Spec do
6
+
7
+ describe 'an example group', vcr: true do
8
+ describe 'with a nested example group' do
9
+ before do
10
+ conn = Faraday.new
11
+ @response = conn.get 'http://example.com'
12
+ end
13
+ it 'uses a cassette for any examples' do
14
+ (VCR.current_cassette.name.split('/')).must_equal([
15
+ 'MinitestVcr::Spec',
16
+ 'an example group',
17
+ 'with a nested example group',
18
+ 'uses a cassette for any examples'
19
+ ])
20
+ end
21
+ end
22
+ end
23
+
24
+ describe "#configure!", vcr: true do
25
+
26
+ before do
27
+ ::MiniTest::Spec.expects(:before).with(:each).returns(:true)
28
+ ::MiniTest::Spec.expects(:after).with(:each).returns(true)
29
+ end
30
+
31
+ it "recieves should call before and after with proper args and block" do
32
+ MinitestVcr::Spec.configure!
33
+ end
34
+ end
35
+ end
metadata ADDED
@@ -0,0 +1,302 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: minitest_vcr
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Mike Piccolo
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-01-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: vcr
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 2.8.0
22
+ requirement: !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: 2.8.0
28
+ type: :runtime
29
+ prerelease: false
30
+ - !ruby/object:Gem::Dependency
31
+ name: minitest
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 4.7.5
38
+ requirement: !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 4.7.5
44
+ type: :runtime
45
+ prerelease: false
46
+ - !ruby/object:Gem::Dependency
47
+ name: minispec-metadata
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 1.0.0
54
+ requirement: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ version: 1.0.0
60
+ type: :runtime
61
+ prerelease: false
62
+ - !ruby/object:Gem::Dependency
63
+ name: bundler
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '1.5'
70
+ requirement: !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '1.5'
76
+ type: :development
77
+ prerelease: false
78
+ - !ruby/object:Gem::Dependency
79
+ name: rake
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: '10.0'
86
+ requirement: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ version: '10.0'
92
+ type: :development
93
+ prerelease: false
94
+ - !ruby/object:Gem::Dependency
95
+ name: vcr
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 2.8.0
102
+ requirement: !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ~>
106
+ - !ruby/object:Gem::Version
107
+ version: 2.8.0
108
+ type: :development
109
+ prerelease: false
110
+ - !ruby/object:Gem::Dependency
111
+ name: minitest
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 4.7.5
118
+ requirement: !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ~>
122
+ - !ruby/object:Gem::Version
123
+ version: 4.7.5
124
+ type: :development
125
+ prerelease: false
126
+ - !ruby/object:Gem::Dependency
127
+ name: minispec-metadata
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: 1.0.0
134
+ requirement: !ruby/object:Gem::Requirement
135
+ none: false
136
+ requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ version: 1.0.0
140
+ type: :development
141
+ prerelease: false
142
+ - !ruby/object:Gem::Dependency
143
+ name: mocha
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ~>
148
+ - !ruby/object:Gem::Version
149
+ version: 0.14.0
150
+ requirement: !ruby/object:Gem::Requirement
151
+ none: false
152
+ requirements:
153
+ - - ~>
154
+ - !ruby/object:Gem::Version
155
+ version: 0.14.0
156
+ type: :development
157
+ prerelease: false
158
+ - !ruby/object:Gem::Dependency
159
+ name: faraday
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ~>
164
+ - !ruby/object:Gem::Version
165
+ version: 0.8.9
166
+ requirement: !ruby/object:Gem::Requirement
167
+ none: false
168
+ requirements:
169
+ - - ~>
170
+ - !ruby/object:Gem::Version
171
+ version: 0.8.9
172
+ type: :development
173
+ prerelease: false
174
+ - !ruby/object:Gem::Dependency
175
+ name: rubygems-tasks
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ~>
180
+ - !ruby/object:Gem::Version
181
+ version: '0.2'
182
+ requirement: !ruby/object:Gem::Requirement
183
+ none: false
184
+ requirements:
185
+ - - ~>
186
+ - !ruby/object:Gem::Version
187
+ version: '0.2'
188
+ type: :development
189
+ prerelease: false
190
+ - !ruby/object:Gem::Dependency
191
+ name: yard
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ~>
196
+ - !ruby/object:Gem::Version
197
+ version: '0.8'
198
+ requirement: !ruby/object:Gem::Requirement
199
+ none: false
200
+ requirements:
201
+ - - ~>
202
+ - !ruby/object:Gem::Version
203
+ version: '0.8'
204
+ type: :development
205
+ prerelease: false
206
+ - !ruby/object:Gem::Dependency
207
+ name: webmock
208
+ version_requirements: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ~>
212
+ - !ruby/object:Gem::Version
213
+ version: 1.16.0
214
+ requirement: !ruby/object:Gem::Requirement
215
+ none: false
216
+ requirements:
217
+ - - ~>
218
+ - !ruby/object:Gem::Version
219
+ version: 1.16.0
220
+ type: :development
221
+ prerelease: false
222
+ - !ruby/object:Gem::Dependency
223
+ name: pry
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ~>
228
+ - !ruby/object:Gem::Version
229
+ version: 0.9.12.2
230
+ requirement: !ruby/object:Gem::Requirement
231
+ none: false
232
+ requirements:
233
+ - - ~>
234
+ - !ruby/object:Gem::Version
235
+ version: 0.9.12.2
236
+ type: :development
237
+ prerelease: false
238
+ - !ruby/object:Gem::Dependency
239
+ name: pry-debugger
240
+ version_requirements: !ruby/object:Gem::Requirement
241
+ none: false
242
+ requirements:
243
+ - - ~>
244
+ - !ruby/object:Gem::Version
245
+ version: 0.2.2
246
+ requirement: !ruby/object:Gem::Requirement
247
+ none: false
248
+ requirements:
249
+ - - ~>
250
+ - !ruby/object:Gem::Version
251
+ version: 0.2.2
252
+ type: :development
253
+ prerelease: false
254
+ description: I like MiniTest. I like VCR. I like not having to manage cassetes.
255
+ email:
256
+ - mpiccolo@newleaders.com
257
+ executables: []
258
+ extensions: []
259
+ extra_rdoc_files: []
260
+ files:
261
+ - .gitignore
262
+ - Gemfile
263
+ - LICENSE.txt
264
+ - README.md
265
+ - Rakefile
266
+ - lib/minitest_vcr.rb
267
+ - lib/minitest_vcr/spec.rb
268
+ - lib/minitest_vcr/version.rb
269
+ - minitest_vcr.gemspec
270
+ - test/cassettes/MinitestVcr_Spec/an_example_group/with_a_nested_example_group/uses_a_cassette_for_any_examples.yml
271
+ - test/helper.rb
272
+ - test/minitest_vcr/spec_test.rb
273
+ homepage: ''
274
+ licenses:
275
+ - MIT
276
+ post_install_message:
277
+ rdoc_options: []
278
+ require_paths:
279
+ - lib
280
+ required_ruby_version: !ruby/object:Gem::Requirement
281
+ none: false
282
+ requirements:
283
+ - - ! '>='
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ required_rubygems_version: !ruby/object:Gem::Requirement
287
+ none: false
288
+ requirements:
289
+ - - ! '>='
290
+ - !ruby/object:Gem::Version
291
+ version: '0'
292
+ requirements: []
293
+ rubyforge_project:
294
+ rubygems_version: 1.8.25
295
+ signing_key:
296
+ specification_version: 3
297
+ summary: Allows VCR to automatically make cassetes with proper file paths with MiniTest
298
+ test_files:
299
+ - test/cassettes/MinitestVcr_Spec/an_example_group/with_a_nested_example_group/uses_a_cassette_for_any_examples.yml
300
+ - test/helper.rb
301
+ - test/minitest_vcr/spec_test.rb
302
+ has_rdoc: