mirror of
https://github.com/ditkrg/rswag.git
synced 2026-01-24 23:06:41 +00:00
Require 'in' property for path params + rename Adapter to DSL
This commit is contained in:
parent
06ec343c89
commit
efab9b43a4
1
.gitignore
vendored
1
.gitignore
vendored
@ -11,3 +11,4 @@ bower_components/*
|
|||||||
!bower_components/swagger-ui
|
!bower_components/swagger-ui
|
||||||
bower_components/swagger-ui/*
|
bower_components/swagger-ui/*
|
||||||
!bower_components/swagger-ui/dist
|
!bower_components/swagger-ui/dist
|
||||||
|
.ruby-version
|
||||||
|
|||||||
1
Gemfile
1
Gemfile
@ -15,5 +15,4 @@ gemspec
|
|||||||
|
|
||||||
gem 'sqlite3'
|
gem 'sqlite3'
|
||||||
gem 'pry'
|
gem 'pry'
|
||||||
gem 'rspec-rails'
|
|
||||||
gem 'generator_spec'
|
gem 'generator_spec'
|
||||||
|
|||||||
13
README.md
13
README.md
@ -27,10 +27,10 @@ __NOTE__: It's early days so please be gentle when reporting issues :) As author
|
|||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
require 'swagger_rails/rspec/adapter'
|
require 'swagger_rails/rspec/dsl'
|
||||||
|
|
||||||
describe 'Blogs API' do
|
describe 'Blogs API' do
|
||||||
extend SwaggerRails::RSpec::Adapter
|
extend SwaggerRails::RSpec::DSL
|
||||||
|
|
||||||
path '/blogs' do
|
path '/blogs' do
|
||||||
|
|
||||||
@ -109,13 +109,14 @@ And then tagging your spec's with the target swagger_doc:
|
|||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
require 'swagger_rails/rspec/adapter'
|
require 'swagger_rails/rspec/dsl'
|
||||||
|
|
||||||
describe 'Blogs API V2', swagger_doc: 'v2/swagger.json' do
|
describe 'Blogs API V2', swagger_doc: 'v2/swagger.json' do
|
||||||
extend SwaggerRails::RSpec::Adapter
|
extend SwaggerRails::RSpec::DSL
|
||||||
|
|
||||||
path '/blogs' do
|
path '/blogs' do
|
||||||
...
|
...
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|||||||
@ -5,8 +5,8 @@ module SwaggerRails
|
|||||||
class InstallGenerator < Rails::Generators::Base
|
class InstallGenerator < Rails::Generators::Base
|
||||||
source_root File.expand_path('../templates', __FILE__)
|
source_root File.expand_path('../templates', __FILE__)
|
||||||
|
|
||||||
def add_swagger_json
|
def add_swagger_dir
|
||||||
template('swagger.json', 'config/swagger/v1/swagger.json')
|
empty_directory('config/swagger/v1')
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_initializer
|
def add_initializer
|
||||||
|
|||||||
@ -7,17 +7,16 @@ module SwaggerRails
|
|||||||
end
|
end
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
attr_accessor :doc_factories
|
@@swagger_docs = {}
|
||||||
@@doc_factories = {}
|
|
||||||
|
|
||||||
def swagger_doc(path, &block)
|
def swagger_doc(path, &block)
|
||||||
@@doc_factories[path] = block
|
@@swagger_docs[path] = block
|
||||||
end
|
end
|
||||||
|
|
||||||
def swagger_docs
|
def swagger_docs
|
||||||
Hash[
|
Hash[
|
||||||
@@doc_factories.map do |path, factory|
|
@@swagger_docs.map do |path, factory|
|
||||||
[ path, { swagger: '2.0' }.merge(factory.call) ]
|
[ path, factory.call.merge(swagger: '2.0') ]
|
||||||
end
|
end
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|||||||
@ -2,7 +2,7 @@ require 'swagger_rails/test_visitor'
|
|||||||
|
|
||||||
module SwaggerRails
|
module SwaggerRails
|
||||||
module RSpec
|
module RSpec
|
||||||
module Adapter
|
module DSL
|
||||||
|
|
||||||
def path(path_template, &block)
|
def path(path_template, &block)
|
||||||
metadata = {
|
metadata = {
|
||||||
@ -2,7 +2,6 @@ require 'singleton'
|
|||||||
|
|
||||||
module SwaggerRails
|
module SwaggerRails
|
||||||
class TestVisitor
|
class TestVisitor
|
||||||
|
|
||||||
include Singleton
|
include Singleton
|
||||||
|
|
||||||
def submit_request!(test, metadata)
|
def submit_request!(test, metadata)
|
||||||
@ -30,8 +29,10 @@ module SwaggerRails
|
|||||||
end
|
end
|
||||||
|
|
||||||
def build_path(path_template, params_data)
|
def build_path(path_template, params_data)
|
||||||
|
path_params_data = params_data.select { |p| p[:in] == :path }
|
||||||
|
|
||||||
path_template.dup.tap do |path|
|
path_template.dup.tap do |path|
|
||||||
params_data.each do |param_data|
|
path_params_data.each do |param_data|
|
||||||
path.sub!("\{#{param_data[:name]}\}", param_data[:value].to_s)
|
path.sub!("\{#{param_data[:name]}\}", param_data[:value].to_s)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -47,7 +48,7 @@ module SwaggerRails
|
|||||||
|
|
||||||
def build_headers(params_data, consumes, produces)
|
def build_headers(params_data, consumes, produces)
|
||||||
header_params_data = params_data.select { |p| p[:in] == :header }
|
header_params_data = params_data.select { |p| p[:in] == :header }
|
||||||
headers = Hash[header_params_data.map { |p| [ p[:name].underscore.upcase, p[:value] ] }]
|
headers = Hash[header_params_data.map { |p| [ p[:name], p[:value] ] }]
|
||||||
|
|
||||||
headers['ACCEPT'] = produces.join(';') if produces.present?
|
headers['ACCEPT'] = produces.join(';') if produces.present?
|
||||||
headers['CONTENT_TYPE'] = consumes.join(';') if consumes.present?
|
headers['CONTENT_TYPE'] = consumes.join(';') if consumes.present?
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
require 'rspec/core/rake_task'
|
require 'rspec/core/rake_task'
|
||||||
|
|
||||||
desc 'Generate Swagger JSON files from integration specs'
|
desc 'Generate Swagger JSON files from integration specs'
|
||||||
RSpec::Core::RakeTask.new('swagger_rails:gen') do |t|
|
RSpec::Core::RakeTask.new('swaggerize') do |t|
|
||||||
t.pattern = 'spec/integration/**/*_spec.rb'
|
t.pattern = 'spec/integration/**/*_spec.rb'
|
||||||
t.rspec_opts = [ '--format SwaggerRails::RSpec::Formatter', '--dry-run' ]
|
t.rspec_opts = [ '--format SwaggerRails::RSpec::Formatter', '--dry-run' ]
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
describe 'Blogs API', docs_path: 'blogs/v1/swagger.json' do
|
describe 'Blogs API', swagger_doc: 'blogs/v1/swagger.json' do
|
||||||
|
|
||||||
path '/blogs' do
|
path '/blogs' do
|
||||||
|
|
||||||
|
|||||||
@ -51,6 +51,6 @@ RSpec.configure do |config|
|
|||||||
# arbitrary gems may also be filtered via:
|
# arbitrary gems may also be filtered via:
|
||||||
# config.filter_gems_from_backtrace("gem name")
|
# config.filter_gems_from_backtrace("gem name")
|
||||||
|
|
||||||
require 'swagger_rails/rspec/adapter'
|
require 'swagger_rails/rspec/dsl'
|
||||||
config.extend SwaggerRails::RSpec::Adapter
|
config.extend SwaggerRails::RSpec::DSL
|
||||||
end
|
end
|
||||||
|
|||||||
@ -13,16 +13,14 @@ describe SwaggerRails::InstallGenerator do
|
|||||||
run_generator
|
run_generator
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'creates a default swagger.json file' do
|
it 'creates a default swagger directory' do
|
||||||
assert_file('config/swagger/v1/swagger.json')
|
assert_directory('config/swagger/v1')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'creates a swagger_rails initializer' do
|
it 'creates a swagger_rails initializer' do
|
||||||
assert_file('config/initializers/swagger_rails.rb')
|
assert_file('config/initializers/swagger_rails.rb')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'wires up the swagger routes' do
|
it 'wires up the swagger routes'
|
||||||
pending('not sure how to test this')
|
# Not sure how to test this
|
||||||
this_should_not_get_executed
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|||||||
@ -90,6 +90,6 @@ RSpec.configure do |config|
|
|||||||
Kernel.srand config.seed
|
Kernel.srand config.seed
|
||||||
=end
|
=end
|
||||||
|
|
||||||
require 'swagger_rails/rspec/adapter'
|
require 'swagger_rails/rspec/dsl'
|
||||||
config.extend SwaggerRails::RSpec::Adapter
|
config.extend SwaggerRails::RSpec::DSL
|
||||||
end
|
end
|
||||||
|
|||||||
@ -89,7 +89,7 @@ module SwaggerRails
|
|||||||
expect(test).to have_received(:get).with(
|
expect(test).to have_received(:get).with(
|
||||||
'/resource',
|
'/resource',
|
||||||
{},
|
{},
|
||||||
{ 'DATE' => '2000-01-01', 'ACCEPT' => 'application/json' }
|
{ 'Date' => '2000-01-01', 'ACCEPT' => 'application/json' }
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -16,5 +16,7 @@ Gem::Specification.new do |s|
|
|||||||
|
|
||||||
s.files = Dir["{app,bower_components/swagger-ui/dist,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
|
s.files = Dir["{app,bower_components/swagger-ui/dist,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
|
||||||
|
|
||||||
s.add_dependency("rails", ">= 3.1", "< 5")
|
s.add_dependency "rails", ">= 3.1", "< 5"
|
||||||
|
|
||||||
|
s.add_development_dependency "rspec-rails"
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user