dredd-rack 0.3.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.
- checksums.yaml +7 -0
- data/Gemfile +4 -0
- data/LICENSE +674 -0
- data/README.md +102 -0
- data/Rakefile +41 -0
- data/lib/dredd/rack.rb +10 -0
- data/lib/dredd/rack/configuration.rb +27 -0
- data/lib/dredd/rack/rake_task.rb +111 -0
- data/lib/dredd/rack/runner.rb +166 -0
- data/lib/dredd/rack/version.rb +5 -0
- data/spec/lib/dredd/rack/configuration_spec.rb +28 -0
- data/spec/lib/dredd/rack/rake_task_spec.rb +61 -0
- data/spec/lib/dredd/rack/runner_spec.rb +223 -0
- data/spec/lib/dredd/rack_spec.rb +8 -0
- data/spec/spec_helper.rb +35 -0
- data/spec/support/spec_for_configuration_option_interface.rb +28 -0
- data/spec/support/specs_for_boolean_options.rb +18 -0
- data/spec/support/specs_for_options.rb +6 -0
- data/spec/support/specs_for_single_argument_options.rb +12 -0
- metadata +142 -0
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Dredd::Rack::Configuration do
|
4
|
+
|
5
|
+
context 'when extending any class' do
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
Dredd::Rack.const_set(:ConfigurableClass, Class.new)
|
9
|
+
@klass = Dredd::Rack::ConfigurableClass
|
10
|
+
@klass.send :extend, Dredd::Rack::Configuration
|
11
|
+
end
|
12
|
+
|
13
|
+
after(:each) do
|
14
|
+
Dredd::Rack.send(:remove_const, :ConfigurableClass)
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:subject) { @klass }
|
18
|
+
|
19
|
+
describe 'provides #app which' do
|
20
|
+
|
21
|
+
it_behaves_like 'a configuration option', 'app'
|
22
|
+
|
23
|
+
it "defauts to nil", private: true do
|
24
|
+
expect(subject.app).to be_nil
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Dredd::Rack::RakeTask do
|
4
|
+
|
5
|
+
it 'is a kind of Rake::TaskLib', protected: true do
|
6
|
+
expect(subject).to be_kind_of ::Rake::TaskLib
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'responds to :description', public: true do
|
10
|
+
expect(subject).to respond_to :description
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'responds to :runner', public: true do
|
14
|
+
expect(subject).to respond_to :runner
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'responds to :name', public: true do
|
18
|
+
expect(subject).to respond_to :name
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '#runner', public: true do
|
22
|
+
|
23
|
+
it 'is a default Dredd::Rack runner' do
|
24
|
+
expect(subject.runner).to be_kind_of Dredd::Rack::Runner
|
25
|
+
expect(subject.runner.command).to match(/\Adredd doc\/\*\.apib doc\/\*\.apib\.md \z/)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe '#description', public: true do
|
30
|
+
|
31
|
+
it 'defaults to "Run Dredd::Rack API blueprint verification"' do
|
32
|
+
expect(subject.description).to eq 'Run Dredd::Rack API blueprint verification'
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'and a custom description was provided' do
|
36
|
+
|
37
|
+
it 'returns the custom description' do
|
38
|
+
pending "I don't know how to setup the custom description."
|
39
|
+
# set the custom description here
|
40
|
+
|
41
|
+
subject = Dredd::Rack::RakeTask.new # should be created after setting the description
|
42
|
+
expect(subject.description).to eq 'Validate an API against its blueprint'
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#name', public: true do
|
48
|
+
|
49
|
+
it 'defaults to :dredd' do
|
50
|
+
expect(subject.name).to eq :dredd
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'when a custom name was provided' do
|
54
|
+
|
55
|
+
it 'returns the custom name' do
|
56
|
+
subject = Dredd::Rack::RakeTask.new(:anderson)
|
57
|
+
expect(subject.name).to eq :anderson
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,223 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Dredd::Rack::Runner do
|
4
|
+
|
5
|
+
it 'responds to :api_endpoint', public: true do
|
6
|
+
expect(subject).to respond_to :api_endpoint
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'responds to :command', public: true do
|
10
|
+
expect(subject).to respond_to :command
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'responds to :command_parts', private: true do
|
14
|
+
expect(subject).to respond_to :command_parts
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'responds to :command_parts=', private: true do
|
18
|
+
expect(subject).to respond_to :command_parts=
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'respond_to :paths_to_blueprints', public: true do
|
22
|
+
expect(subject).to respond_to :paths_to_blueprints
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'responds to :run', public: true do
|
26
|
+
expect(subject).to respond_to :run
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'generates a valid command by default', public: true do
|
30
|
+
expect(subject.send(:command_valid?)).to be_truthy
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'responds to all the Dredd options', public: true do
|
34
|
+
|
35
|
+
Dredd::Rack::Runner::OPTIONS.each do |option|
|
36
|
+
it "responds to :#{option}" do
|
37
|
+
expect(subject).to respond_to option
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe 'responds to the negated form of the Dredd boolean options', public: true do
|
43
|
+
|
44
|
+
Dredd::Rack::Runner::NEGATABLE_BOOLEAN_OPTIONS.each do |option|
|
45
|
+
it "responds to :no_#{option}" do
|
46
|
+
expect(subject).to respond_to "no_#{option}".to_sym
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '#command_valid?', private: true do
|
52
|
+
|
53
|
+
context 'when the generated command has less than two arguments' do
|
54
|
+
|
55
|
+
it 'returns false' do
|
56
|
+
allow(subject).to receive_message_chain(:command, :has_at_least_two_arguments?).and_return(false)
|
57
|
+
expect(subject.send(:command_valid?)).not_to be_truthy
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '#initialize', public: true do
|
63
|
+
|
64
|
+
context 'with an API endpoint as argument' do
|
65
|
+
|
66
|
+
it 'defines a custom API endpoint' do
|
67
|
+
expect(Dredd::Rack::Runner.new('https://api.example.com').command).to end_with 'https://api.example.com'
|
68
|
+
expect(Dredd::Rack::Runner.new('https://api.example.com').command).not_to match /http:\/\/localhost:3000/
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'with a block as argument' do
|
73
|
+
|
74
|
+
it 'returns a configured Dredd runner' do
|
75
|
+
|
76
|
+
subject = Dredd::Rack::Runner.new 'http://localhost:4567' do |options|
|
77
|
+
options.paths_to_blueprints 'blueprints/*.apib', 'doc/*.apib'
|
78
|
+
options.level :silly
|
79
|
+
options.no_color!
|
80
|
+
end
|
81
|
+
|
82
|
+
expect(subject.command).to match /http:\/\/localhost:4567/
|
83
|
+
expect(subject.command).to match /blueprints\/\*\.apib doc\/\*\.apib/
|
84
|
+
expect(subject.command).to match /--level silly/
|
85
|
+
expect(subject.command).to match /--no-color/
|
86
|
+
|
87
|
+
expect(subject.command).not_to match /http:\/\/localhost:3000/
|
88
|
+
expect(subject.command).not_to match /doc\/\*\.apib.md/
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe '#paths_to_blueprints', public: true do
|
94
|
+
|
95
|
+
it 'is chainable' do
|
96
|
+
expect(subject.paths_to_blueprints('some/path/*.apib')).to eq subject
|
97
|
+
end
|
98
|
+
|
99
|
+
context 'with one or more paths to blueprints as arguments' do
|
100
|
+
|
101
|
+
it 'defines custom paths to blueprints' do
|
102
|
+
expect(subject.paths_to_blueprints('blueprints/*.md', 'blueprints/*.apib').command).to match /blueprints\/\*\.md blueprints\/\*\.apib/
|
103
|
+
expect(subject.paths_to_blueprints('blueprints/*.md').command).not_to match /doc/
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
context 'with a blank path as argument', public: true do
|
108
|
+
|
109
|
+
it 'raises ArgumentError' do
|
110
|
+
expect{ subject.paths_to_blueprints('') }.to raise_error ArgumentError, 'invalid path to blueprints'
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe '#run', public: true do
|
116
|
+
|
117
|
+
context 'when the command is valid' do
|
118
|
+
|
119
|
+
before(:each) do
|
120
|
+
allow(subject).to receive(:command_valid?).and_return(true)
|
121
|
+
end
|
122
|
+
|
123
|
+
it 'runs Dredd!' do
|
124
|
+
command = double()
|
125
|
+
allow(subject).to receive(:command).and_return(command)
|
126
|
+
|
127
|
+
expect(Kernel).to receive(:system).with(command)
|
128
|
+
subject.run
|
129
|
+
end
|
130
|
+
|
131
|
+
context 'when configured to test the API locally' do
|
132
|
+
|
133
|
+
before(:each) do
|
134
|
+
allow(subject).to receive(:api_remote?).and_return(false)
|
135
|
+
end
|
136
|
+
|
137
|
+
context 'with Dredd::Rack.app properly configured' do
|
138
|
+
|
139
|
+
before(:each) do
|
140
|
+
@app_under_test = double()
|
141
|
+
allow(Dredd::Rack).to receive(:app).and_return(@app_under_test)
|
142
|
+
|
143
|
+
@capybara_server = double()
|
144
|
+
allow(@capybara_server).to receive(:new).and_return(@capybara_server)
|
145
|
+
allow(@capybara_server).to receive(:host).and_return('localhost')
|
146
|
+
allow(@capybara_server).to receive(:port).and_return('4567')
|
147
|
+
allow(Kernel).to receive(:system)
|
148
|
+
|
149
|
+
stub_const("Capybara::Server", @capybara_server)
|
150
|
+
end
|
151
|
+
|
152
|
+
it 'creates a Capybara::Server instance and serves the API' do
|
153
|
+
expect(@capybara_server).to receive(:new).with(@app_under_test)
|
154
|
+
expect(@capybara_server).to receive(:boot)
|
155
|
+
subject.run
|
156
|
+
end
|
157
|
+
|
158
|
+
it 'gets its API endpoint from the Capybara::Server instance' do
|
159
|
+
allow(@capybara_server).to receive(:boot)
|
160
|
+
expect { subject.run }.to change { subject.api_endpoint }.to("http://#{@capybara_server.host}:#{@capybara_server.port.to_s}")
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
Dredd::Rack::Runner::BOOLEAN_OPTIONS.each do |option|
|
168
|
+
describe "##{option}", public: true do
|
169
|
+
it_behaves_like 'a boolean option', option, ['some argument']
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
Dredd::Rack::Runner::NEGATABLE_BOOLEAN_OPTIONS.each do |option|
|
174
|
+
describe "#no_#{option}", public: true do
|
175
|
+
it_behaves_like 'a boolean option', "no_#{option}".to_sym, ['some argument']
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
Dredd::Rack::Runner::SINGLE_ARGUMENT_OPTIONS.each do |option|
|
180
|
+
describe "##{option}", public: true do
|
181
|
+
it_behaves_like 'a single-argument option', option, ['first argument', 'second argument']
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
describe String, public: true do
|
187
|
+
|
188
|
+
it 'responds to :has_at_least_two_arguments?' do
|
189
|
+
expect(subject).to respond_to :has_at_least_two_arguments?
|
190
|
+
end
|
191
|
+
|
192
|
+
|
193
|
+
describe '#has_at_least_two_arguments?' do
|
194
|
+
|
195
|
+
context 'when the String can be interpreted as a command with at least two arguments' do
|
196
|
+
context 'returns true (reliable)' do
|
197
|
+
|
198
|
+
['dredd doc/*.apib http://api.example.com',
|
199
|
+
'dredd doc/*.apib doc/*apib.md http://api.example.com',
|
200
|
+
'dredd doc/*.apib http://api.example.com --level verbose'].each do |subject|
|
201
|
+
|
202
|
+
it "e.g. '#{subject}'" do
|
203
|
+
expect(subject.has_at_least_two_arguments?).to be_truthy
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
context 'when the String can be interpreted as a command with less than two arguments' do
|
210
|
+
context 'returns false (unreliable)' do
|
211
|
+
|
212
|
+
['dredd http://api.example.com',
|
213
|
+
'dredd doc/*.apib --dry-run',
|
214
|
+
'dredd --dry-run --level verbose'].each do |subject|
|
215
|
+
|
216
|
+
it "e.g. '#{subject}'" do
|
217
|
+
expect(subject.has_at_least_two_arguments?).to be_falsey
|
218
|
+
end
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
Bundler.setup
|
3
|
+
|
4
|
+
require 'dredd/rack'
|
5
|
+
|
6
|
+
Dir["./spec/support/**/*.rb"].sort.each { |f| require f; puts f }
|
7
|
+
|
8
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
9
|
+
RSpec.configure do |config|
|
10
|
+
# make sure the deprecated RSpec 2 syntax is not used
|
11
|
+
config.raise_errors_for_deprecations!
|
12
|
+
|
13
|
+
# rspec-expectations config goes here. You can use an alternate
|
14
|
+
# assertion/expectation library such as wrong or the stdlib/minitest
|
15
|
+
# assertions if you prefer.
|
16
|
+
config.expect_with :rspec do |expectations|
|
17
|
+
# This option will default to `true` in RSpec 4. It makes the `description`
|
18
|
+
# and `failure_message` of custom matchers include text for helper methods
|
19
|
+
# defined using `chain`, e.g.:
|
20
|
+
# be_bigger_than(2).and_smaller_than(4).description
|
21
|
+
# # => "be bigger than 2 and smaller than 4"
|
22
|
+
# ...rather than:
|
23
|
+
# # => "be bigger than 2"
|
24
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
25
|
+
end
|
26
|
+
|
27
|
+
# rspec-mocks config goes here. You can use an alternate test double
|
28
|
+
# library (such as bogus or mocha) by changing the `mock_with` option here.
|
29
|
+
config.mock_with :rspec do |mocks|
|
30
|
+
# Prevents you from mocking or stubbing a method that does not exist on
|
31
|
+
# a real object. This is generally recommended, and will default to
|
32
|
+
# `true` in RSpec 4.
|
33
|
+
mocks.verify_partial_doubles = true
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
RSpec.shared_examples 'a configuration option' do |option_name|
|
2
|
+
|
3
|
+
before(:each) do
|
4
|
+
@get_option = option_name.to_sym # e.g. :sign_in_token
|
5
|
+
@set_option = option_name.+('=').to_sym # e.g. :sign_in_token=
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'is accessible', private: true do
|
9
|
+
expect(subject).to respond_to @get_option
|
10
|
+
expect(subject).to respond_to @set_option
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'once set' do
|
14
|
+
|
15
|
+
before(:each) do
|
16
|
+
@_original_value = subject.send @get_option
|
17
|
+
subject.send @set_option, 'custom header'
|
18
|
+
end
|
19
|
+
|
20
|
+
after(:each) do
|
21
|
+
subject.send @set_option, @_original_value
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'can be retrieved', private: true do
|
25
|
+
expect(subject.send @get_option).to eq 'custom header'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
RSpec.shared_examples 'a boolean option' do |option|
|
2
|
+
|
3
|
+
it_behaves_like 'an option', option
|
4
|
+
|
5
|
+
let(:option_flag) { option.to_s.gsub('_', '-').gsub('!', '').prepend('--') }
|
6
|
+
|
7
|
+
it 'appends its flag to the command' do
|
8
|
+
expect{ subject.send(option) }.to change{
|
9
|
+
subject.command
|
10
|
+
}.to(include "#{option_flag}")
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'ignores any option argument' do
|
14
|
+
expect{ subject.send(option, 'first argument', 'second argument') }.to change{
|
15
|
+
subject.command
|
16
|
+
}.to(end_with "#{option_flag}")
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
RSpec.shared_examples 'a single-argument option' do |option, args|
|
2
|
+
|
3
|
+
it_behaves_like 'an option', option
|
4
|
+
|
5
|
+
it 'appends its flag and argument to the command' do
|
6
|
+
option_flag = option.to_s.gsub('_', '-').prepend('--')
|
7
|
+
|
8
|
+
expect{ subject.send(option, args.slice(0), args.slice(1)) }.to change{
|
9
|
+
subject.command
|
10
|
+
}.to(end_with "#{option_flag} #{args.slice(0)}")
|
11
|
+
end
|
12
|
+
end
|
metadata
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dredd-rack
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Gonzalo Bulnes Guilpain
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-03-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: capybara
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.4'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.4'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.4'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.4'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rainbow
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: inch
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.5.10
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.5.10
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
83
|
+
description:
|
84
|
+
email:
|
85
|
+
- gon.bulnes@gmail.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- Gemfile
|
91
|
+
- LICENSE
|
92
|
+
- README.md
|
93
|
+
- Rakefile
|
94
|
+
- lib/dredd/rack.rb
|
95
|
+
- lib/dredd/rack/configuration.rb
|
96
|
+
- lib/dredd/rack/rake_task.rb
|
97
|
+
- lib/dredd/rack/runner.rb
|
98
|
+
- lib/dredd/rack/version.rb
|
99
|
+
- spec/lib/dredd/rack/configuration_spec.rb
|
100
|
+
- spec/lib/dredd/rack/rake_task_spec.rb
|
101
|
+
- spec/lib/dredd/rack/runner_spec.rb
|
102
|
+
- spec/lib/dredd/rack_spec.rb
|
103
|
+
- spec/spec_helper.rb
|
104
|
+
- spec/support/spec_for_configuration_option_interface.rb
|
105
|
+
- spec/support/specs_for_boolean_options.rb
|
106
|
+
- spec/support/specs_for_options.rb
|
107
|
+
- spec/support/specs_for_single_argument_options.rb
|
108
|
+
homepage: https://github.com/gonzalo-bulnes/dredd-rack
|
109
|
+
licenses:
|
110
|
+
- GPLv3
|
111
|
+
metadata: {}
|
112
|
+
post_install_message:
|
113
|
+
rdoc_options: []
|
114
|
+
require_paths:
|
115
|
+
- lib
|
116
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - ">="
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
requirements: []
|
127
|
+
rubyforge_project:
|
128
|
+
rubygems_version: 2.4.6
|
129
|
+
signing_key:
|
130
|
+
specification_version: 4
|
131
|
+
summary: Convenient API blueprint testing with Apiary Dredd for Rack applications.
|
132
|
+
test_files:
|
133
|
+
- spec/lib/dredd/rack/rake_task_spec.rb
|
134
|
+
- spec/lib/dredd/rack/configuration_spec.rb
|
135
|
+
- spec/lib/dredd/rack/runner_spec.rb
|
136
|
+
- spec/lib/dredd/rack_spec.rb
|
137
|
+
- spec/spec_helper.rb
|
138
|
+
- spec/support/specs_for_single_argument_options.rb
|
139
|
+
- spec/support/specs_for_boolean_options.rb
|
140
|
+
- spec/support/specs_for_options.rb
|
141
|
+
- spec/support/spec_for_configuration_option_interface.rb
|
142
|
+
has_rdoc:
|