Require 'in' property for path params + rename Adapter to DSL

This commit is contained in:
domaindrivendev 2016-04-25 23:06:15 -07:00
parent 06ec343c89
commit efab9b43a4
14 changed files with 33 additions and 32 deletions

1
.gitignore vendored
View File

@ -11,3 +11,4 @@ bower_components/*
!bower_components/swagger-ui
bower_components/swagger-ui/*
!bower_components/swagger-ui/dist
.ruby-version

View File

@ -15,5 +15,4 @@ gemspec
gem 'sqlite3'
gem 'pry'
gem 'rspec-rails'
gem 'generator_spec'

View File

@ -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
```

View File

@ -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

View File

@ -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

View File

@ -2,7 +2,7 @@ require 'swagger_rails/test_visitor'
module SwaggerRails
module RSpec
module Adapter
module DSL
def path(path_template, &block)
metadata = {

View File

@ -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?

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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