so_stub_very_test 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d912b883c1d926912500fa80ce5f4e460ea01dc9
4
+ data.tar.gz: d82a68fabdf2f56a50b878633dcd2949dab11852
5
+ SHA512:
6
+ metadata.gz: ea777bbd8495e096e869297969cdcf534601e4a889b47764a3cdaa14704328b00ca28fe4fb531b6efe534b08a8349883af8cb5a6924c94abc2021fd96545c2cf
7
+ data.tar.gz: ba463db45f01362989a81c6186c3d18d411ad8da0238c9496371f5117f92fe094bd890615c43932980ddfc3afc4bd1f9b68cdd7bd7a22556c6b0cad1eec2f262
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,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in so_stub_very_test.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Jonathan Clem
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,199 @@
1
+ # SoStubVeryTest
2
+
3
+ ```doge
4
+ so stub
5
+
6
+ very test
7
+
8
+ much excon
9
+ wow
10
+ ```
11
+
12
+ SoStubVeryTest provides a simpler method for stubbing Excon in your tests, because
13
+ typing `Excon.stub({}, {})` over and over again is like taking the first train to
14
+ Repetitive Stress Injury town.
15
+
16
+ Further, it provides an easy way to set up default stubs for your test suite, so
17
+ that you can clear out the Excon stubs that were stubbed in your individual test
18
+ setup, but still have useful default ones around (they usually return empty arrays
19
+ and hashes).
20
+
21
+ ## Installation
22
+
23
+ Add this line to your application's Gemfile:
24
+
25
+ gem 'so_stub_very_test'
26
+
27
+ And then execute:
28
+
29
+ $ bundle
30
+
31
+ Or install it yourself as:
32
+
33
+ $ gem install so_stub_very_test
34
+
35
+ ## Usage
36
+
37
+ ### HTTP Verb Stubs
38
+
39
+ SoStubVeryTest is a module that you include to provide some handy methods for
40
+ stubbing Excon requests. Here's a random smattering of examples:
41
+
42
+ ```ruby
43
+ stub_get "/foo", [1,2,3]
44
+ # Equivalent: Excon.stub({ path: /\A\/foo\Z/, method: :get }, { body: [1,2,3] })
45
+ # ^ so stubbed
46
+
47
+ stub_post "/foo", body: [1,2,3], status: 201
48
+ # Equivalent: Excon.stub({ path: /\A\/foo\Z/, method: :post }, { body: [1,2,3], status: 201 })
49
+ # ^ very protocol
50
+ ```
51
+
52
+ You can use blocks for your response body:
53
+
54
+ ```ruby
55
+ stub_get "/foo" do
56
+ {
57
+ body: "no meme here"
58
+ }
59
+ end
60
+ # Equivalent: Excon.stub({ path: /\A\/foo\Z/, method: :post }, { body: "no meme here" })
61
+ ```
62
+
63
+ SoStubVeryTest will naïvely turn path parameters (any group of non-`/` preceded
64
+ by a colon) into regex thingies:
65
+
66
+ ```ruby
67
+ stub_get "/foo/:bar", [1,2,3]
68
+ # Equivalent: Excon.stub({ path: /\A\/foo\/[^\/]+\Z/, method: :get }, { body: [1,2,3] })
69
+ # ^ much regular expression
70
+ ```
71
+
72
+ ### Namespacing
73
+
74
+ You can namespace things:
75
+
76
+ ```ruby
77
+ namespace "/doges" do
78
+ stub_get [] # no path stubs the namespace's path
79
+ stub_post "/wow", [1,2,3]
80
+
81
+ namespace "/very" do
82
+ stub_get "/much", {}
83
+ end
84
+ end
85
+
86
+ # Equivalent:
87
+ # Excon.stub({ path: /\A\/doges\Z/, method: :get }, { body: [] })
88
+ # Excon.stub({ path: /\A\/doges\/wow\Z/, method: :post }, { body: [1,2,3] })
89
+ # Excon.stub({ path: /\A\/doges\/very\/much\Z/, method: :get }, { body: {} })
90
+ ```
91
+
92
+ ### Default Host Setting Upping
93
+
94
+ You can set a default host:
95
+
96
+ ```ruby
97
+ SoStubVeryTest.default_host = "doge.example.com"
98
+ stub_get "/foo", [1,2,3]
99
+ # Equivalent: Excon.stub({ path: /\A\/foo\Z/, method: :get, host: "doge.example.com" }, { body: [1,2,3] })
100
+ ```
101
+
102
+ ### Extra Host Setting Upping
103
+
104
+ ```ruby
105
+ SoStubVeryTest.register_host :doge, "doge.example.com"
106
+
107
+ # Use namespaces
108
+ doge_namespace "/w00t" do
109
+ stub_get "/cool", [] # the host prefix isn't necessary when in a namespace block
110
+ end
111
+
112
+ # Or don't use namespaces
113
+ doge_stub_get "/twinkie", []
114
+
115
+ # Excon.stub({ path: /\A\/w00t\/cool\Z/, method: :get, host: "doge.example.com"})
116
+ # Excon.stub({ path: /\A\/twinkie\Z/, method: :get, host: "doge.example.com"})
117
+ ```
118
+
119
+ ### Providing Default Stubs
120
+
121
+ You can provide default stubs that will not be cleared when calling
122
+ `SoStubVeryTest.clear_custom_stubs` by creating them in a special `defaults`
123
+ block:
124
+
125
+ ```ruby
126
+ # Ensures that unless you manually call `Excon.stubs.clear` or override the stub,
127
+ # GETing /woot will always be stubbed with a `[]` response.
128
+ SoStubVeryTest.defaults do
129
+ namespace "/woot" do
130
+ stub_get []
131
+ end
132
+ end
133
+ ```
134
+
135
+ ## Testing with SoStubVeryTest
136
+
137
+ ### For RSpec
138
+
139
+ In your `spec_helper.rb`, you'll probably want something like this:
140
+
141
+ ```ruby
142
+ require "so_stub_very_test"
143
+
144
+ RSpec.configure do |config|
145
+ config.include SoStubVeryTest
146
+
147
+ before :all do
148
+ Excon.defaults[:mock] = true
149
+ end
150
+
151
+ after :each do
152
+ SoStubVeryTest.clear_custom_stubs
153
+ end
154
+ end
155
+ ```
156
+
157
+ Then you can spend less time writing stubs for your specs:
158
+
159
+ ```ruby
160
+ before do
161
+ stub_get "/doge", "hi from doge"
162
+ end
163
+
164
+ it "gets the doge" do
165
+ # ...
166
+ end
167
+ ```
168
+
169
+ ### For Minitest
170
+
171
+ I don't really use Minitest much (lol i know i'm using it in this very repo),
172
+ but you'd probs do this:
173
+
174
+ ```ruby
175
+ require "so_stub_very_test"
176
+
177
+ class TestDoges < Minitest::Test
178
+ def setup
179
+ Excon.defaults[:mock] = true
180
+ end
181
+
182
+ def teardown
183
+ SoStubVeryTest.clear_custom_stubs
184
+ end
185
+
186
+ def test_the_doge
187
+ stub_get "/doge", "hi from doge"
188
+ assert_equal "hi from doge", Excon.get({ path: "/doge" })
189
+ end
190
+ end
191
+ ```
192
+
193
+ ## Contributing
194
+
195
+ 1. Fork it ( http://github.com/<my-github-username>/so_stub_very_test/fork )
196
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
197
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
198
+ 4. Push to the branch (`git push origin my-new-feature`)
199
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.libs << "test"
6
+ t.pattern = "test/*_test.rb"
7
+ end
@@ -0,0 +1,146 @@
1
+ require "so_stub_very_test/version"
2
+ require "excon"
3
+
4
+ module SoStubVeryTest
5
+ extend self
6
+
7
+ class AmbiguousResponseError < StandardError; end
8
+ class MixedNamespacesError < StandardError; end
9
+ class NoPathGivenError < StandardError; end
10
+
11
+ def namespace(path, host = nil, &block)
12
+ if stub_paths.any? && stub_host != host
13
+ raise MixedNamespacesError
14
+ end
15
+
16
+ stub_paths << path
17
+ self.stub_host = host || default_host
18
+ yield
19
+ ensure
20
+ stub_paths.pop
21
+
22
+ if stub_paths.empty?
23
+ self.stub_host = nil
24
+ end
25
+ end
26
+
27
+ Excon::HTTP_VERBS.each do |verb|
28
+ define_method "stub_#{verb}" do |path, response = nil, &block|
29
+ validate_path_given(path)
30
+
31
+ unless path.is_a? String
32
+ response = path
33
+ path = ""
34
+ end
35
+
36
+ validate_single_response(block, response)
37
+
38
+ if block
39
+ response = block
40
+ end
41
+
42
+ path = stub_path + path
43
+ path = replace_path_params(path)
44
+ path = create_path_regexp(path)
45
+
46
+ request = { method: verb, path: path }
47
+
48
+ if stub_host || default_host
49
+ request[:host] = stub_host || default_host
50
+ end
51
+
52
+ unless response.is_a?(Proc) || (response.is_a?(Hash) && response.has_key?(:body))
53
+ response = { body: response }
54
+ end
55
+
56
+ unless SoStubVeryTest.defining_default_stubs
57
+ SoStubVeryTest.custom_stubs << [request, response]
58
+ end
59
+
60
+ Excon.stub(request, response)
61
+ end
62
+ end
63
+
64
+ class << self
65
+ attr_accessor :default_host
66
+
67
+ def clear_custom_stubs
68
+ custom_stubs.each do |stub|
69
+ Excon.stubs.delete stub
70
+ end
71
+
72
+ custom_stubs.clear
73
+ end
74
+
75
+ def custom_stubs
76
+ @custom_stubs ||= []
77
+ end
78
+
79
+ def defining_default_stubs
80
+ @defining_default_stubs ||= false
81
+ end
82
+
83
+ def register_host(name, host)
84
+ define_method "#{name}_namespace" do |path, &block|
85
+ namespace path, host, &block
86
+ end
87
+
88
+ Excon::HTTP_VERBS.each do |verb|
89
+ define_method "#{name}_stub_#{verb}" do |path, response = nil|
90
+ namespace path, host do
91
+ send "stub_#{verb}", response
92
+ end
93
+ end
94
+ end
95
+ end
96
+
97
+ def defaults(&block)
98
+ @defining_default_stubs = true
99
+ instance_exec &block
100
+ ensure
101
+ @defining_default_stubs = false
102
+ end
103
+ end
104
+
105
+ private
106
+
107
+ def create_path_regexp(path)
108
+ Regexp.new '\A' + path + '\Z'
109
+ end
110
+
111
+ def default_host
112
+ SoStubVeryTest.default_host
113
+ end
114
+
115
+ def replace_path_params(path)
116
+ path.gsub /:[^\/]+/, '[^\/]+'
117
+ end
118
+
119
+ def stub_host=(host)
120
+ @stub_host = host
121
+ end
122
+
123
+ def stub_host
124
+ @stub_host
125
+ end
126
+
127
+ def stub_path
128
+ stub_paths.join
129
+ end
130
+
131
+ def stub_paths
132
+ @stub_paths ||= []
133
+ end
134
+
135
+ def validate_path_given(path)
136
+ if stub_paths.empty? && !path.is_a?(String)
137
+ raise NoPathGivenError
138
+ end
139
+ end
140
+
141
+ def validate_single_response(block, response)
142
+ if block && response
143
+ raise AmbiguousResponseError
144
+ end
145
+ end
146
+ end
@@ -0,0 +1,3 @@
1
+ module SoStubVeryTest
2
+ VERSION = "0.0.0"
3
+ end
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'so_stub_very_test/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "so_stub_very_test"
8
+ spec.version = SoStubVeryTest::VERSION
9
+ spec.authors = ["Jonathan Clem"]
10
+ spec.email = ["jonathan@jclem.net"]
11
+ spec.summary = %q{so stub...very test...much excon...wow}
12
+ spec.description = %q{build sensible default Excon stubs...and then build more of them}
13
+ spec.homepage = "https://github.com/jclem/so_stub_very_test"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
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_dependency "excon", "~> 0.25", ">= 0.25.1"
22
+ spec.add_development_dependency "bundler", "~> 1.5"
23
+ spec.add_development_dependency "rake"
24
+ end
@@ -0,0 +1,198 @@
1
+ require "test_helper"
2
+
3
+ class TestSoStubVeryTest < Minitest::Test
4
+ include SoStubVeryTest
5
+
6
+ def teardown
7
+ SoStubVeryTest.default_host = nil
8
+ SoStubVeryTest.clear_custom_stubs
9
+ Excon.stubs.clear
10
+ end
11
+
12
+ def test_can_stub_get
13
+ stub_get "/foo", body: [true]
14
+ assert_equal Excon.stubs, [[{ path: /\A\/foo\Z/, method: :get }, body: [true]]]
15
+ end
16
+
17
+ def test_can_stub_post
18
+ stub_post "/foo", body: [true]
19
+ assert_equal Excon.stubs, [[{ path: /\A\/foo\Z/, method: :post }, body: [true]]]
20
+ end
21
+
22
+ def test_can_stub_put
23
+ stub_put "/foo", body: [true]
24
+ assert_equal Excon.stubs, [[{ path: /\A\/foo\Z/, method: :put }, body: [true]]]
25
+ end
26
+
27
+ def test_can_stub_patch
28
+ stub_patch "/foo", body: [true]
29
+ assert_equal Excon.stubs, [[{ path: /\A\/foo\Z/, method: :patch }, body: [true]]]
30
+ end
31
+
32
+ def test_can_stub_delete
33
+ stub_delete "/foo", body: [true]
34
+ assert_equal Excon.stubs, [[{ path: /\A\/foo\Z/, method: :delete }, body: [true]]]
35
+ end
36
+
37
+ def test_performs_param_substitution
38
+ stub_get "/foo/:bar", body: [true]
39
+ assert_equal Excon.stubs, [[{ path: Regexp.new('\A/foo/[^\/]+\Z'), method: :get }, body: [true]]]
40
+ end
41
+
42
+ def test_can_have_default_host
43
+ SoStubVeryTest.default_host = "example.com"
44
+ stub_get "/foo", body: [true]
45
+ assert_equal Excon.stubs, [[{ path: /\A\/foo\Z/, method: :get, host: "example.com" }, body: [true]]]
46
+ end
47
+
48
+ def test_can_set_response_options
49
+ stub_get "/foo", body: [true], status: 201
50
+ assert_equal Excon.stubs, [[{ path: /\A\/foo\Z/, method: :get }, body: [true], status: 201]]
51
+ end
52
+
53
+ def test_need_not_pass_body_param
54
+ stub_get "/foo", [true]
55
+ assert_equal Excon.stubs, [[{ path: /\A\/foo\Z/, method: :get }, body: [true]]]
56
+ end
57
+
58
+ def test_can_pass_block_as_response
59
+ stub_get "/foo" do
60
+ [true]
61
+ end
62
+
63
+ assert_equal Excon.stubs[0][0], { path: /\A\/foo\Z/, method: :get }
64
+ assert_equal Excon.stubs[0][1].call, [true]
65
+ end
66
+
67
+ def test_raises_exception_when_given_response_and_block
68
+ assert_raises SoStubVeryTest::AmbiguousResponseError do
69
+ stub_get "/foo", "bar" do
70
+ [true]
71
+ end
72
+ end
73
+ end
74
+
75
+ def test_raises_exception_when_given_response_and_block_with_no_path
76
+ assert_raises SoStubVeryTest::AmbiguousResponseError do
77
+ namespace "/foo" do
78
+ stub_get true do
79
+ [true]
80
+ end
81
+ end
82
+ end
83
+ end
84
+
85
+ def test_can_use_namespaces
86
+ namespace "/foo" do
87
+ stub_get "/bar", true
88
+ end
89
+
90
+ assert_equal Excon.stubs, [[{ path: /\A\/foo\/bar\Z/, method: :get }, { body: true }]]
91
+ end
92
+
93
+ def test_can_nest_namespaces
94
+ namespace "/foo" do
95
+ namespace "/bar" do
96
+ stub_get "/baz", true
97
+ end
98
+ end
99
+
100
+ assert_equal Excon.stubs, [[{ path: /\A\/foo\/bar\/baz\Z/, method: :get }, { body: true }]]
101
+ end
102
+
103
+ def test_can_use_no_path_when_in_namespace
104
+ namespace "/foo" do
105
+ stub_get true
106
+ end
107
+
108
+ assert_equal Excon.stubs, [[{ path: /\A\/foo\Z/, method: :get }, { body: true }]]
109
+ end
110
+
111
+ def test_raises_no_path_when_not_given_path_outside_of_namespace
112
+ assert_raises SoStubVeryTest::NoPathGivenError do
113
+ stub_get true
114
+ end
115
+ end
116
+
117
+ def test_clears_namespaces_each_block
118
+ namespace "/foo" do
119
+ end
120
+
121
+ namespace "/bar" do
122
+ stub_get true
123
+ end
124
+
125
+ assert_equal Excon.stubs, [[{ path: /\A\/bar\Z/, method: :get }, { body: true }]]
126
+ end
127
+
128
+ def test_can_define_more_namespaces
129
+ SoStubVeryTest.register_host :foo, "foo.example.com"
130
+ foo_namespace "/foo" do
131
+ stub_get true
132
+ end
133
+ assert_equal Excon.stubs, [[{ path: /\A\/foo\Z/, host: "foo.example.com", method: :get }, { body: true }]]
134
+ end
135
+
136
+ def test_new_namespaces_come_with_http_verb_methods
137
+ SoStubVeryTest.register_host :foo, "foo.example.com"
138
+ foo_stub_get "/foo", true
139
+ assert_equal Excon.stubs, [[{ path: /\A\/foo\Z/, host: "foo.example.com", method: :get }, { body: true }]]
140
+ end
141
+
142
+ def test_can_not_mismatch_namespaces
143
+ SoStubVeryTest.register_host :foo, "foo.example.com"
144
+
145
+ assert_raises SoStubVeryTest::MixedNamespacesError do
146
+ namespace "/foo" do
147
+ foo_namespace "bar" do
148
+ end
149
+ end
150
+ end
151
+ end
152
+
153
+ def test_can_not_mismatch_namespaces_and_http_verb_methods
154
+ SoStubVeryTest.register_host :foo, "foo.example.com"
155
+
156
+ assert_raises SoStubVeryTest::MixedNamespacesError do
157
+ namespace "/foo" do
158
+ foo_stub_get true
159
+ end
160
+ end
161
+ end
162
+
163
+ def test_unsets_stub_host_after_each_namespace
164
+ SoStubVeryTest.register_host :foo, "foo.example.com"
165
+
166
+ foo_namespace "/foo" do
167
+ stub_get true
168
+ end
169
+
170
+ stub_get "/bar", true
171
+
172
+ assert_equal Excon.stubs[0], [{ path: /\A\/bar\Z/, method: :get }, body: true]
173
+ end
174
+
175
+ def test_can_have_default_stubs
176
+ SoStubVeryTest.defaults do
177
+ stub_get "/bar", true
178
+ end
179
+
180
+ assert_equal Excon.stubs, [[{ path: /\A\/bar\Z/, method: :get }, body: true]]
181
+ end
182
+
183
+ def test_can_clear_stubs
184
+ stub_get "/bar", true
185
+ SoStubVeryTest.clear_custom_stubs
186
+ assert_empty Excon.stubs
187
+ end
188
+
189
+ def test_does_not_clear_default_stubs
190
+ SoStubVeryTest.defaults do
191
+ stub_get "/foo", true
192
+ end
193
+
194
+ stub_get "/bar", true
195
+ SoStubVeryTest.clear_custom_stubs
196
+ assert_equal Excon.stubs, [[{ path: /\A\/foo\Z/, method: :get }, body: true]]
197
+ end
198
+ end
@@ -0,0 +1,5 @@
1
+ require "so_stub_very_test"
2
+ require "excon"
3
+ require "minitest/autorun"
4
+ require "minitest/pride"
5
+ require "minitest/unit"
metadata ADDED
@@ -0,0 +1,105 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: so_stub_very_test
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Jonathan Clem
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: excon
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.25'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.25.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.25'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.25.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: bundler
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.5'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.5'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ description: build sensible default Excon stubs...and then build more of them
62
+ email:
63
+ - jonathan@jclem.net
64
+ executables: []
65
+ extensions: []
66
+ extra_rdoc_files: []
67
+ files:
68
+ - ".gitignore"
69
+ - Gemfile
70
+ - LICENSE.txt
71
+ - README.md
72
+ - Rakefile
73
+ - lib/so_stub_very_test.rb
74
+ - lib/so_stub_very_test/version.rb
75
+ - so_stub_very_test.gemspec
76
+ - test/so_stub_very_test_test.rb
77
+ - test/test_helper.rb
78
+ homepage: https://github.com/jclem/so_stub_very_test
79
+ licenses:
80
+ - MIT
81
+ metadata: {}
82
+ post_install_message:
83
+ rdoc_options: []
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ requirements: []
97
+ rubyforge_project:
98
+ rubygems_version: 2.2.0
99
+ signing_key:
100
+ specification_version: 4
101
+ summary: so stub...very test...much excon...wow
102
+ test_files:
103
+ - test/so_stub_very_test_test.rb
104
+ - test/test_helper.rb
105
+ has_rdoc: