mirror of
https://github.com/ditkrg/rswag.git
synced 2026-01-22 22:06:43 +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/dist
|
||||
.ruby-version
|
||||
|
||||
1
Gemfile
1
Gemfile
@ -15,5 +15,4 @@ gemspec
|
||||
|
||||
gem 'sqlite3'
|
||||
gem 'pry'
|
||||
gem 'rspec-rails'
|
||||
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
|
||||
require 'rails_helper'
|
||||
require 'swagger_rails/rspec/adapter'
|
||||
require 'swagger_rails/rspec/dsl'
|
||||
|
||||
describe 'Blogs API' do
|
||||
extend SwaggerRails::RSpec::Adapter
|
||||
extend SwaggerRails::RSpec::DSL
|
||||
|
||||
path '/blogs' do
|
||||
|
||||
@ -109,13 +109,14 @@ And then tagging your spec's with the target swagger_doc:
|
||||
|
||||
```ruby
|
||||
require 'rails_helper'
|
||||
require 'swagger_rails/rspec/adapter'
|
||||
require 'swagger_rails/rspec/dsl'
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
@ -5,8 +5,8 @@ module SwaggerRails
|
||||
class InstallGenerator < Rails::Generators::Base
|
||||
source_root File.expand_path('../templates', __FILE__)
|
||||
|
||||
def add_swagger_json
|
||||
template('swagger.json', 'config/swagger/v1/swagger.json')
|
||||
def add_swagger_dir
|
||||
empty_directory('config/swagger/v1')
|
||||
end
|
||||
|
||||
def add_initializer
|
||||
|
||||
@ -7,17 +7,16 @@ module SwaggerRails
|
||||
end
|
||||
|
||||
class << self
|
||||
attr_accessor :doc_factories
|
||||
@@doc_factories = {}
|
||||
@@swagger_docs = {}
|
||||
|
||||
def swagger_doc(path, &block)
|
||||
@@doc_factories[path] = block
|
||||
@@swagger_docs[path] = block
|
||||
end
|
||||
|
||||
def swagger_docs
|
||||
Hash[
|
||||
@@doc_factories.map do |path, factory|
|
||||
[ path, { swagger: '2.0' }.merge(factory.call) ]
|
||||
@@swagger_docs.map do |path, factory|
|
||||
[ path, factory.call.merge(swagger: '2.0') ]
|
||||
end
|
||||
]
|
||||
end
|
||||
|
||||
@ -2,7 +2,7 @@ require 'swagger_rails/test_visitor'
|
||||
|
||||
module SwaggerRails
|
||||
module RSpec
|
||||
module Adapter
|
||||
module DSL
|
||||
|
||||
def path(path_template, &block)
|
||||
metadata = {
|
||||
@ -2,7 +2,6 @@ require 'singleton'
|
||||
|
||||
module SwaggerRails
|
||||
class TestVisitor
|
||||
|
||||
include Singleton
|
||||
|
||||
def submit_request!(test, metadata)
|
||||
@ -30,8 +29,10 @@ module SwaggerRails
|
||||
end
|
||||
|
||||
def build_path(path_template, params_data)
|
||||
path_params_data = params_data.select { |p| p[:in] == :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)
|
||||
end
|
||||
end
|
||||
@ -47,7 +48,7 @@ module SwaggerRails
|
||||
|
||||
def build_headers(params_data, consumes, produces)
|
||||
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['CONTENT_TYPE'] = consumes.join(';') if consumes.present?
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
require 'rspec/core/rake_task'
|
||||
|
||||
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.rspec_opts = [ '--format SwaggerRails::RSpec::Formatter', '--dry-run' ]
|
||||
end
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
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
|
||||
|
||||
|
||||
@ -51,6 +51,6 @@ RSpec.configure do |config|
|
||||
# arbitrary gems may also be filtered via:
|
||||
# config.filter_gems_from_backtrace("gem name")
|
||||
|
||||
require 'swagger_rails/rspec/adapter'
|
||||
config.extend SwaggerRails::RSpec::Adapter
|
||||
require 'swagger_rails/rspec/dsl'
|
||||
config.extend SwaggerRails::RSpec::DSL
|
||||
end
|
||||
|
||||
@ -13,16 +13,14 @@ describe SwaggerRails::InstallGenerator do
|
||||
run_generator
|
||||
end
|
||||
|
||||
it 'creates a default swagger.json file' do
|
||||
assert_file('config/swagger/v1/swagger.json')
|
||||
it 'creates a default swagger directory' do
|
||||
assert_directory('config/swagger/v1')
|
||||
end
|
||||
|
||||
it 'creates a swagger_rails initializer' do
|
||||
assert_file('config/initializers/swagger_rails.rb')
|
||||
end
|
||||
|
||||
it 'wires up the swagger routes' do
|
||||
pending('not sure how to test this')
|
||||
this_should_not_get_executed
|
||||
end
|
||||
it 'wires up the swagger routes'
|
||||
# Not sure how to test this
|
||||
end
|
||||
|
||||
@ -90,6 +90,6 @@ RSpec.configure do |config|
|
||||
Kernel.srand config.seed
|
||||
=end
|
||||
|
||||
require 'swagger_rails/rspec/adapter'
|
||||
config.extend SwaggerRails::RSpec::Adapter
|
||||
require 'swagger_rails/rspec/dsl'
|
||||
config.extend SwaggerRails::RSpec::DSL
|
||||
end
|
||||
|
||||
@ -89,7 +89,7 @@ module SwaggerRails
|
||||
expect(test).to have_received(:get).with(
|
||||
'/resource',
|
||||
{},
|
||||
{ 'DATE' => '2000-01-01', 'ACCEPT' => 'application/json' }
|
||||
{ 'Date' => '2000-01-01', 'ACCEPT' => 'application/json' }
|
||||
)
|
||||
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.add_dependency("rails", ">= 3.1", "< 5")
|
||||
s.add_dependency "rails", ">= 3.1", "< 5"
|
||||
|
||||
s.add_development_dependency "rspec-rails"
|
||||
end
|
||||
|
||||
Loading…
Reference in New Issue
Block a user