fakeapi 0.0.1 → 0.0.2
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.
- data/.gitignore +2 -0
- data/.rspec +1 -0
- data/README.md +122 -4
- data/Rakefile +10 -0
- data/examples/fake_bitly/.gitignore +1 -0
- data/examples/fake_bitly/.rspec +1 -0
- data/examples/fake_bitly/Gemfile +12 -0
- data/examples/fake_bitly/Rakefile +5 -0
- data/examples/fake_bitly/config.ru +3 -0
- data/examples/fake_bitly/lib/fake_bitly.rb +5 -0
- data/examples/fake_bitly/spec/fake_bitly_spec.rb +17 -0
- data/examples/fake_bitly/vcr/shorten.yml +36 -0
- data/fakeapi.gemspec +11 -0
- data/lib/fakeapi.rb +3 -0
- data/lib/fakeapi/app.rb +9 -0
- data/lib/fakeapi/generator.rb +59 -0
- data/lib/fakeapi/json_writer.rb +25 -0
- data/lib/fakeapi/test_run.rb +57 -0
- data/lib/fakeapi/version.rb +1 -1
- data/spec/fakeapi/generator_spec.rb +33 -0
- data/spec/fakeapi/json_writer_spec.rb +31 -0
- data/spec/fakeapi/test_run_spec.rb +4 -0
- metadata +173 -5
data/.gitignore
CHANGED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/README.md
CHANGED
@@ -1,12 +1,14 @@
|
|
1
|
-
#
|
1
|
+
# FakeAPI
|
2
2
|
|
3
|
-
|
3
|
+
FakeAPI = Sinatra + VCR
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
7
|
Add this line to your application's Gemfile:
|
8
8
|
|
9
|
-
|
9
|
+
```ruby
|
10
|
+
gem 'fakeapi'
|
11
|
+
```
|
10
12
|
|
11
13
|
And then execute:
|
12
14
|
|
@@ -18,7 +20,100 @@ Or install it yourself as:
|
|
18
20
|
|
19
21
|
## Usage
|
20
22
|
|
21
|
-
|
23
|
+
Let's say you're building FakeBitly service.
|
24
|
+
|
25
|
+
0. (Optional) Due to incompatibility between webmock and artifice you
|
26
|
+
have to use newer versions of webmock:
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
# Gemfile
|
30
|
+
source :rubygems
|
31
|
+
|
32
|
+
gem 'fakeapi', path: '~/Code/vendor/fakeapi'
|
33
|
+
gem 'webmock', github: 'bblimke/webmock', ref: '2c596f'
|
34
|
+
gem 'rspec'
|
35
|
+
gem 'bitly'
|
36
|
+
```
|
37
|
+
|
38
|
+
1. Create fake service:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
# fake_bitly.rb
|
42
|
+
require 'fakeapi'
|
43
|
+
|
44
|
+
class FakeBitly < FakeAPI::App
|
45
|
+
end
|
46
|
+
```
|
47
|
+
|
48
|
+
2. Create a spec. You don't want to test FakeBitly endpoints directly.
|
49
|
+
Instead use a client library. `FakeBitly.test` (inherited from
|
50
|
+
`FakeAPI::App`) will try to use your fake service (using `Artifice`)
|
51
|
+
and if that fails it will record the HTTP interaction (using `VCR`).
|
52
|
+
|
53
|
+
```ruby
|
54
|
+
# fake_bitly_spec.rb
|
55
|
+
require_relative './fake_bitly'
|
56
|
+
require 'bitly'
|
57
|
+
|
58
|
+
describe FakeBitly do
|
59
|
+
before do
|
60
|
+
Bitly.use_api_version_3
|
61
|
+
@bitly = Bitly.new(ENV.fetch('BITLY_USERNAME'), ENV.fetch('BITLY_APIKEY'))
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'handles /v3/shorten' do
|
65
|
+
hash = FakeBitly.test('shorten') { @bitly.shorten('http://google.com').user_hash }
|
66
|
+
hash.should have(6).characters
|
67
|
+
end
|
68
|
+
end
|
69
|
+
```
|
70
|
+
|
71
|
+
3. Run the spec:
|
72
|
+
|
73
|
+
```bash
|
74
|
+
% bundle exec rspec fake_bitly_spec.rb
|
75
|
+
#<BitlyError: - ''>
|
76
|
+
|
77
|
+
Use generated code:
|
78
|
+
|
79
|
+
get '/v3/shorten' do
|
80
|
+
status 200
|
81
|
+
content_type 'application/json; charset=utf-8'
|
82
|
+
body JSON(status_code: 200, status_txt: "OK", data: {long_url: "http://google.com/", url: "http://bit.ly/ORN1fW", hash: "ORN1fW", global_hash: "LmvF", new_hash: 0})
|
83
|
+
end
|
84
|
+
|
85
|
+
F
|
86
|
+
|
87
|
+
Failures:
|
88
|
+
|
89
|
+
1) FakeBitly handles /v3/shorten
|
90
|
+
Failure/Error: hash = FakeBitly.test('shorten') { @bitly.shorten('http://google.com').user_hash }
|
91
|
+
NotImplementedError:
|
92
|
+
NotImplementedError
|
93
|
+
```
|
94
|
+
|
95
|
+
4. Use generated code:
|
96
|
+
|
97
|
+
```ruby
|
98
|
+
# fake_bitly.rb
|
99
|
+
class FakeBitly < FakeAPI::App
|
100
|
+
get '/v3/shorten' do
|
101
|
+
status 200
|
102
|
+
content_type 'application/json; charset=utf-8'
|
103
|
+
body JSON(status_code: 200, status_txt: "OK", data: {long_url: "http://google.com/", url: "http://bit.ly/ORN1fW", hash: "ORN1fW", global_hash: "LmvF", new_hash: 0})
|
104
|
+
end
|
105
|
+
end
|
106
|
+
```
|
107
|
+
|
108
|
+
5. Run specs:
|
109
|
+
|
110
|
+
```bash
|
111
|
+
% bundle exec rspec fake_bitly_spec.rb
|
112
|
+
.
|
113
|
+
|
114
|
+
Finished in 0.0497 seconds
|
115
|
+
1 example, 0 failures
|
116
|
+
```
|
22
117
|
|
23
118
|
## Contributing
|
24
119
|
|
@@ -27,3 +122,26 @@ TODO: Write usage instructions here
|
|
27
122
|
3. Commit your changes (`git commit -am 'Added some feature'`)
|
28
123
|
4. Push to the branch (`git push origin my-new-feature`)
|
29
124
|
5. Create new Pull Request
|
125
|
+
|
126
|
+
## License
|
127
|
+
|
128
|
+
Copyright (c) 2013 Wojciech Mach
|
129
|
+
|
130
|
+
Permission is hereby granted, free of charge, to any person obtaining a
|
131
|
+
copy of this software and associated documentation files (the
|
132
|
+
"Software"), to deal in the Software without restriction, including
|
133
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
134
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
135
|
+
permit persons to whom the Software is furnished to do so, subject to
|
136
|
+
the following conditions:
|
137
|
+
|
138
|
+
The above copyright notice and this permission notice shall be included
|
139
|
+
in all copies or substantial portions of the Software.
|
140
|
+
|
141
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
142
|
+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
143
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
144
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
145
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
146
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
147
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
/script
|
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative '../lib/fake_bitly'
|
2
|
+
require 'dotenv'
|
3
|
+
require 'bitly'
|
4
|
+
|
5
|
+
Dotenv.load
|
6
|
+
|
7
|
+
describe FakeBitly do
|
8
|
+
before do
|
9
|
+
Bitly.use_api_version_3
|
10
|
+
@bitly = Bitly.new(ENV.fetch('BITLY_USERNAME'), ENV.fetch('BITLY_APIKEY'))
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'handles /v3/shorten' do
|
14
|
+
hash = FakeBitly.test('shorten') { @bitly.shorten('http://google.com').user_hash }
|
15
|
+
hash.should have(6).characters
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://api.bit.ly/v3/shorten?apiKey=R_09c2f2080b43230744cbac384b7ce0ca&login=wojtekmach&longUrl=http://google.com
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers: {}
|
10
|
+
response:
|
11
|
+
status:
|
12
|
+
code: 200
|
13
|
+
message: OK
|
14
|
+
headers:
|
15
|
+
Server:
|
16
|
+
- nginx
|
17
|
+
Date:
|
18
|
+
- Sun, 27 Jan 2013 09:17:20 GMT
|
19
|
+
Content-Type:
|
20
|
+
- application/json; charset=utf-8
|
21
|
+
Connection:
|
22
|
+
- keep-alive
|
23
|
+
Mime-Version:
|
24
|
+
- '1.0'
|
25
|
+
Content-Length:
|
26
|
+
- '182'
|
27
|
+
body:
|
28
|
+
encoding: US-ASCII
|
29
|
+
string: ! '{ "status_code": 200, "status_txt": "OK", "data": { "long_url": "http:\/\/google.com\/",
|
30
|
+
"url": "http:\/\/bit.ly\/ORN1fW", "hash": "ORN1fW", "global_hash": "LmvF",
|
31
|
+
"new_hash": 0 } }
|
32
|
+
|
33
|
+
'
|
34
|
+
http_version:
|
35
|
+
recorded_at: Sun, 27 Jan 2013 09:17:20 GMT
|
36
|
+
recorded_with: VCR 2.4.0
|
data/fakeapi.gemspec
CHANGED
@@ -14,4 +14,15 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.name = 'fakeapi'
|
15
15
|
gem.require_paths = ['lib']
|
16
16
|
gem.version = FakeAPI::VERSION
|
17
|
+
|
18
|
+
gem.add_dependency 'vcr'
|
19
|
+
gem.add_dependency 'webmock'
|
20
|
+
gem.add_dependency 'artifice'
|
21
|
+
gem.add_dependency 'term-ansicolor'
|
22
|
+
gem.add_dependency 'sinatra'
|
23
|
+
|
24
|
+
gem.add_development_dependency 'rake'
|
25
|
+
gem.add_development_dependency 'rspec'
|
26
|
+
gem.add_development_dependency 'dotenv'
|
27
|
+
gem.add_development_dependency 'bitly'
|
17
28
|
end
|
data/lib/fakeapi.rb
CHANGED
data/lib/fakeapi/app.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'json'
|
3
|
+
require 'uri'
|
4
|
+
|
5
|
+
module FakeAPI
|
6
|
+
class Generator
|
7
|
+
def self.generate(*args)
|
8
|
+
new(*args).generate
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize(name)
|
12
|
+
@name = name
|
13
|
+
end
|
14
|
+
|
15
|
+
def generate
|
16
|
+
hash = VCRReader.read("vcr/#{@name}.yml")
|
17
|
+
|
18
|
+
http_method = hash['request']['method']
|
19
|
+
url = URI(hash['request']['uri']).path
|
20
|
+
status = hash['response']['status']['code']
|
21
|
+
content_type = hash['response']['headers']['Content-Type'].first
|
22
|
+
|
23
|
+
body = hash['response']['body']['string']
|
24
|
+
|
25
|
+
body = if content_type =~ /json/i
|
26
|
+
write_json(body)
|
27
|
+
else
|
28
|
+
write_text(body)
|
29
|
+
end
|
30
|
+
|
31
|
+
<<RUBY
|
32
|
+
#{http_method} '#{url}' do
|
33
|
+
status #{status}
|
34
|
+
content_type '#{content_type}'
|
35
|
+
body #{body}
|
36
|
+
end
|
37
|
+
RUBY
|
38
|
+
end
|
39
|
+
|
40
|
+
def write_json(body)
|
41
|
+
require_relative './json_writer'
|
42
|
+
JSONWriter.write(JSON.parse(body, symbolize_names: true).to_hash)
|
43
|
+
end
|
44
|
+
|
45
|
+
def write_text(body)
|
46
|
+
'"' + body + '"'
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
class VCRReader
|
51
|
+
def self.read(filename)
|
52
|
+
hash = YAML.load_file(filename)
|
53
|
+
request_hash = hash['http_interactions'][0]['request']
|
54
|
+
response_hash = hash['http_interactions'][0]['response']
|
55
|
+
|
56
|
+
{'request' => request_hash, 'response' => response_hash}
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
class Hash
|
4
|
+
def inspect
|
5
|
+
inner = map do |key, val|
|
6
|
+
key_str = key.is_a?(Symbol) ? "#{key}: " : key.inspect + "=>"
|
7
|
+
key_str + val.inspect
|
8
|
+
end.join(", ")
|
9
|
+
"{#{inner}}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module FakeAPI
|
14
|
+
class JSONWriter
|
15
|
+
def self.write(json)
|
16
|
+
inner = json.inspect
|
17
|
+
inner = remove_brackets_for_hash_argument(inner) if json.is_a?(Hash)
|
18
|
+
"JSON(#{inner})"
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.remove_brackets_for_hash_argument(str)
|
22
|
+
str[1..-2]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'vcr'
|
2
|
+
require 'artifice'
|
3
|
+
require 'term/ansicolor'
|
4
|
+
|
5
|
+
VCR.configure do |c|
|
6
|
+
c.cassette_library_dir = 'vcr'
|
7
|
+
c.hook_into :webmock
|
8
|
+
end
|
9
|
+
|
10
|
+
module FakeAPI
|
11
|
+
class TestRun
|
12
|
+
NET_HTTP = ::Net::HTTP
|
13
|
+
|
14
|
+
def initialize(api, method_name, run_block)
|
15
|
+
@api = api
|
16
|
+
@method_name = method_name
|
17
|
+
@run_block = run_block
|
18
|
+
end
|
19
|
+
|
20
|
+
def run
|
21
|
+
begin
|
22
|
+
run_with_artifice
|
23
|
+
rescue => ex
|
24
|
+
p ex
|
25
|
+
run_with_vcr
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def run_with_artifice
|
30
|
+
ret = nil
|
31
|
+
Artifice.activate_with @api do
|
32
|
+
ret = @run_block.call
|
33
|
+
end
|
34
|
+
ret
|
35
|
+
end
|
36
|
+
|
37
|
+
def run_with_vcr
|
38
|
+
if ::Net::HTTP != NET_HTTP
|
39
|
+
::Net.class_eval do
|
40
|
+
remove_const(:HTTP)
|
41
|
+
const_set(:HTTP, NET_HTTP)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
VCR.use_cassette(@method_name, &@run_block)
|
46
|
+
|
47
|
+
color = Term::ANSIColor
|
48
|
+
|
49
|
+
puts
|
50
|
+
puts color.green + 'Use generated code:' + color.clear
|
51
|
+
puts
|
52
|
+
puts color.yellow + FakeAPI::Generator.generate(@method_name) + color.clear
|
53
|
+
|
54
|
+
raise NotImplementedError
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/lib/fakeapi/version.rb
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'fakeapi/generator'
|
2
|
+
|
3
|
+
describe FakeAPI::Generator do
|
4
|
+
def generate(name)
|
5
|
+
described_class.generate(name)
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'return soruce code for method' do
|
9
|
+
FakeAPI::VCRReader.stub(:read).with('vcr/shorten.yml') do
|
10
|
+
{
|
11
|
+
'request' =>
|
12
|
+
{
|
13
|
+
'uri' => 'http://api.bitly.com/api/v3/shorten?longUrl=foo',
|
14
|
+
'method' => 'get',
|
15
|
+
},
|
16
|
+
'response' =>
|
17
|
+
{
|
18
|
+
'status' => {'code' => 200},
|
19
|
+
'headers' => {'Content-Type' => ['application/json']},
|
20
|
+
'body' => {'string' => '{"message":"hello"}'},
|
21
|
+
}
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
generate('shorten').should == <<RUBY
|
26
|
+
get '/api/v3/shorten' do
|
27
|
+
status 200
|
28
|
+
content_type 'application/json'
|
29
|
+
body JSON(message: "hello")
|
30
|
+
end
|
31
|
+
RUBY
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'fakeapi/json_writer'
|
2
|
+
|
3
|
+
describe FakeAPI::JSONWriter do
|
4
|
+
def write(json)
|
5
|
+
described_class.write(json)
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'handles strings' do
|
9
|
+
write("hello").should == 'JSON("hello")'
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'handles arrays' do
|
13
|
+
write([1, 2]).should == 'JSON([1, 2])'
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'handles hashes' do
|
17
|
+
write(a: 1, b: 2).should == 'JSON(a: 1, b: 2)'
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'handles hashes with string keys' do
|
21
|
+
write("a" => 1).should == 'JSON("a"=>1)'
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'handles arrays of hashes' do
|
25
|
+
write([{a: 1}]).should == 'JSON([{a: 1}])'
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'handles nested arrays' do
|
29
|
+
write(a: {b: 1}).should == 'JSON(a: {b: 1})'
|
30
|
+
end
|
31
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fakeapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,152 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
dependencies:
|
12
|
+
date: 2013-01-27 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: vcr
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: webmock
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: artifice
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: term-ansicolor
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: sinatra
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rake
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: rspec
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: dotenv
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: bitly
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ! '>='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
150
|
+
type: :development
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
14
158
|
description: FakeAPI o
|
15
159
|
email:
|
16
160
|
- wojtek@wojtekmach.pl
|
@@ -19,13 +163,29 @@ extensions: []
|
|
19
163
|
extra_rdoc_files: []
|
20
164
|
files:
|
21
165
|
- .gitignore
|
166
|
+
- .rspec
|
22
167
|
- Gemfile
|
23
168
|
- LICENSE
|
24
169
|
- README.md
|
25
170
|
- Rakefile
|
171
|
+
- examples/fake_bitly/.gitignore
|
172
|
+
- examples/fake_bitly/.rspec
|
173
|
+
- examples/fake_bitly/Gemfile
|
174
|
+
- examples/fake_bitly/Rakefile
|
175
|
+
- examples/fake_bitly/config.ru
|
176
|
+
- examples/fake_bitly/lib/fake_bitly.rb
|
177
|
+
- examples/fake_bitly/spec/fake_bitly_spec.rb
|
178
|
+
- examples/fake_bitly/vcr/shorten.yml
|
26
179
|
- fakeapi.gemspec
|
27
180
|
- lib/fakeapi.rb
|
181
|
+
- lib/fakeapi/app.rb
|
182
|
+
- lib/fakeapi/generator.rb
|
183
|
+
- lib/fakeapi/json_writer.rb
|
184
|
+
- lib/fakeapi/test_run.rb
|
28
185
|
- lib/fakeapi/version.rb
|
186
|
+
- spec/fakeapi/generator_spec.rb
|
187
|
+
- spec/fakeapi/json_writer_spec.rb
|
188
|
+
- spec/fakeapi/test_run_spec.rb
|
29
189
|
homepage: ''
|
30
190
|
licenses: []
|
31
191
|
post_install_message:
|
@@ -38,17 +198,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
38
198
|
- - ! '>='
|
39
199
|
- !ruby/object:Gem::Version
|
40
200
|
version: '0'
|
201
|
+
segments:
|
202
|
+
- 0
|
203
|
+
hash: 3057897862326571822
|
41
204
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
42
205
|
none: false
|
43
206
|
requirements:
|
44
207
|
- - ! '>='
|
45
208
|
- !ruby/object:Gem::Version
|
46
209
|
version: '0'
|
210
|
+
segments:
|
211
|
+
- 0
|
212
|
+
hash: 3057897862326571822
|
47
213
|
requirements: []
|
48
214
|
rubyforge_project:
|
49
215
|
rubygems_version: 1.8.24
|
50
216
|
signing_key:
|
51
217
|
specification_version: 3
|
52
218
|
summary: FakeAPI
|
53
|
-
test_files:
|
54
|
-
|
219
|
+
test_files:
|
220
|
+
- spec/fakeapi/generator_spec.rb
|
221
|
+
- spec/fakeapi/json_writer_spec.rb
|
222
|
+
- spec/fakeapi/test_run_spec.rb
|