grape-swagger-rails 0.1.0 → 0.2.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 +4 -4
- data/.rubocop.yml +5 -0
- data/.rubocop_todo.yml +61 -0
- data/.travis.yml +5 -2
- data/CHANGELOG.md +11 -0
- data/CONTRIBUTING.md +13 -10
- data/Gemfile +6 -0
- data/README.md +58 -2
- data/RELEASING.md +1 -1
- data/Rakefile +6 -6
- data/app/assets/images/grape_swagger_rails/favicon-16x16.png +0 -0
- data/app/assets/images/grape_swagger_rails/favicon-32x32.png +0 -0
- data/app/assets/images/grape_swagger_rails/favicon.ico +0 -0
- data/app/assets/javascripts/grape_swagger_rails/application.js +2 -3
- data/app/assets/javascripts/grape_swagger_rails/backbone-min.js +14 -37
- data/app/assets/javascripts/grape_swagger_rails/handlebars-2.0.0.js +28 -0
- data/app/assets/javascripts/grape_swagger_rails/jquery-1.8.0.min.js +1 -1
- data/app/assets/javascripts/grape_swagger_rails/marked.js +1272 -0
- data/app/assets/javascripts/grape_swagger_rails/swagger-oauth.js +133 -54
- data/app/assets/javascripts/grape_swagger_rails/swagger-ui.min.js +13 -1
- data/app/assets/javascripts/grape_swagger_rails/underscore-min.js +6 -32
- data/app/assets/javascripts/grape_swagger_rails/underscore-min.map +1 -0
- data/app/assets/stylesheets/grape_swagger_rails/print.css +1172 -0
- data/app/assets/stylesheets/grape_swagger_rails/screen.css.erb +68 -13
- data/app/assets/stylesheets/grape_swagger_rails/style.css +250 -0
- data/app/assets/stylesheets/grape_swagger_rails/typography.css +26 -0
- data/app/views/grape_swagger_rails/application/index.html.erb +15 -10
- data/config/routes.rb +1 -1
- data/grape-swagger-rails.gemspec +7 -3
- data/lib/grape-swagger-rails.rb +4 -3
- data/lib/grape-swagger-rails/version.rb +1 -1
- data/lib/tasks/swagger_ui.rake +43 -44
- data/spec/dummy/bin/rails +2 -2
- data/spec/dummy/bin/rake +1 -1
- data/spec/dummy/bin/spring +6 -6
- data/spec/dummy/config.ru +1 -1
- data/spec/dummy/config/application.rb +2 -1
- data/spec/dummy/config/environments/development.rb +3 -0
- data/spec/dummy/config/environments/production.rb +1 -1
- data/spec/dummy/config/environments/test.rb +4 -1
- data/spec/features/grape-swagger-rails_spec.rb +1 -1
- data/spec/features/swagger_spec.rb +71 -27
- data/spec/spec_helper.rb +1 -1
- metadata +108 -45
- data/app/assets/javascripts/grape_swagger_rails/handlebars-1.0.0.js +0 -2278
- data/app/assets/javascripts/grape_swagger_rails/shred.bundle.js +0 -2765
- data/app/assets/javascripts/grape_swagger_rails/shred/content.js +0 -193
- data/app/assets/javascripts/grape_swagger_rails/swagger.js +0 -1603
data/config/routes.rb
CHANGED
data/grape-swagger-rails.gemspec
CHANGED
@@ -10,10 +10,10 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ['unlovedru@gmail.com']
|
11
11
|
spec.description = 'Swagger UI as Rails Engine for grape-swagger gem'
|
12
12
|
spec.summary = 'Swagger UI as Rails Engine for grape-swagger gem'
|
13
|
-
spec.homepage = 'https://github.com/
|
13
|
+
spec.homepage = 'https://github.com/ruby-grape/grape-swagger-rails'
|
14
14
|
spec.license = 'MIT'
|
15
|
-
spec.files = `git ls-files`.split(
|
16
|
-
spec.test_files = `git ls-files spec`.split(
|
15
|
+
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
16
|
+
spec.test_files = `git ls-files spec`.split($INPUT_RECORD_SEPARATOR)
|
17
17
|
spec.require_paths = %w(lib)
|
18
18
|
|
19
19
|
spec.add_dependency 'railties', '>= 3.2.12'
|
@@ -32,5 +32,9 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_development_dependency 'jquery-rails'
|
33
33
|
spec.add_development_dependency 'grape-swagger-ui'
|
34
34
|
spec.add_development_dependency 'sprockets'
|
35
|
+
spec.add_development_dependency 'rack', '~> 1.6'
|
35
36
|
spec.add_development_dependency 'rack-cors'
|
37
|
+
spec.add_development_dependency 'rubocop', '0.33.0'
|
38
|
+
spec.add_development_dependency 'mime-types', '< 3.0'
|
39
|
+
spec.add_development_dependency 'rack-no_animations'
|
36
40
|
end
|
data/lib/grape-swagger-rails.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'grape-swagger-rails/engine'
|
2
2
|
|
3
3
|
module GrapeSwaggerRails
|
4
4
|
class Options < OpenStruct
|
@@ -6,7 +6,7 @@ module GrapeSwaggerRails
|
|
6
6
|
if block_given?
|
7
7
|
self.before_filter_proc = block
|
8
8
|
else
|
9
|
-
|
9
|
+
before_filter_proc
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -25,7 +25,8 @@ module GrapeSwaggerRails
|
|
25
25
|
api_key_name: 'api_key', # 'Authorization'
|
26
26
|
api_key_type: 'query', # 'header'
|
27
27
|
|
28
|
+
doc_expansion: 'none',
|
29
|
+
|
28
30
|
before_filter_proc: nil # Proc used as a controller before filter
|
29
31
|
)
|
30
|
-
|
31
32
|
end
|
data/lib/tasks/swagger_ui.rake
CHANGED
@@ -2,18 +2,18 @@ require 'git'
|
|
2
2
|
|
3
3
|
namespace :swagger_ui do
|
4
4
|
namespace :dist do
|
5
|
-
desc
|
5
|
+
desc 'Update Swagger-UI from wordnik/swagger-ui.'
|
6
6
|
task :update do
|
7
7
|
Dir.mktmpdir 'swagger-ui' do |dir|
|
8
8
|
puts "Cloning into #{dir} ..."
|
9
9
|
# clone wordnik/swagger-ui
|
10
|
-
Git.clone 'git@github.com:wordnik/swagger-ui.git', 'swagger-ui', path: dir
|
10
|
+
Git.clone 'git@github.com:wordnik/swagger-ui.git', 'swagger-ui', path: dir, depth: 0
|
11
11
|
# prune local files
|
12
12
|
root = File.expand_path '../../..', __FILE__
|
13
13
|
puts "Removing files from #{root} ..."
|
14
14
|
repo = Git.open root
|
15
15
|
# Javascripts
|
16
|
-
puts
|
16
|
+
puts 'Copying Javascripts ...'
|
17
17
|
FileUtils.rm_r "#{root}/app/assets/javascripts/grape_swagger_rails"
|
18
18
|
FileUtils.cp_r "#{dir}/swagger-ui/dist/lib", "#{root}/app/assets/javascripts"
|
19
19
|
FileUtils.mv "#{root}/app/assets/javascripts/lib", "#{root}/app/assets/javascripts/grape_swagger_rails"
|
@@ -21,73 +21,72 @@ namespace :swagger_ui do
|
|
21
21
|
FileUtils.cp Dir.glob("#{root}/lib/javascripts/*.js"), "#{root}/app/assets/javascripts/grape_swagger_rails"
|
22
22
|
# Generate application.js
|
23
23
|
JAVASCRIPT_FILES = [
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
'base64.js'
|
24
|
+
'jquery-1.8.0.min.js',
|
25
|
+
'jquery.slideto.min.js',
|
26
|
+
'jquery.wiggle.min.js',
|
27
|
+
'jquery.ba-bbq.min.js',
|
28
|
+
'handlebars-2.0.0.js',
|
29
|
+
'marked.js',
|
30
|
+
'underscore-min.js',
|
31
|
+
'backbone-min.js',
|
32
|
+
'swagger-ui.min.js',
|
33
|
+
'highlight.7.3.pack.js',
|
34
|
+
'swagger-oauth.js',
|
35
|
+
'base64.js'
|
37
36
|
]
|
38
37
|
javascript_files = Dir["#{root}/app/assets/javascripts/grape_swagger_rails/*.js"].map { |f|
|
39
|
-
|
38
|
+
f.split('/').last
|
40
39
|
} - ['application.js']
|
41
40
|
(javascript_files - JAVASCRIPT_FILES).each do |filename|
|
42
|
-
|
41
|
+
puts "WARNING: add #{filename} to swagger_ui.rake"
|
43
42
|
end
|
44
43
|
(JAVASCRIPT_FILES - javascript_files).each do |filename|
|
45
|
-
|
44
|
+
puts "WARNING: remove #{filename} from swagger_ui.rake"
|
46
45
|
end
|
47
|
-
File.open "#{root}/app/assets/javascripts/grape_swagger_rails/application.js",
|
48
|
-
|
49
|
-
|
50
|
-
|
46
|
+
File.open "#{root}/app/assets/javascripts/grape_swagger_rails/application.js", 'w+' do |file|
|
47
|
+
JAVASCRIPT_FILES.each do |filename|
|
48
|
+
file.write "//= require ./#{File.basename(filename, '.*')}\n"
|
49
|
+
end
|
51
50
|
end
|
52
51
|
# Stylesheets
|
53
|
-
puts
|
52
|
+
puts 'Copying Stylesheets ...'
|
54
53
|
repo.remove 'app/assets/stylesheets/grape_swagger_rails', recursive: true
|
55
54
|
FileUtils.mkdir_p "#{root}/app/assets/stylesheets/grape_swagger_rails"
|
56
55
|
FileUtils.cp_r Dir.glob("#{dir}/swagger-ui/dist/css/**/*"), "#{root}/app/assets/stylesheets/grape_swagger_rails"
|
57
56
|
repo.add 'app/assets/stylesheets/grape_swagger_rails'
|
58
57
|
# Generate application.js
|
59
58
|
CSS_FILES = [
|
60
|
-
|
61
|
-
|
59
|
+
'reset.css',
|
60
|
+
'screen.css'
|
62
61
|
]
|
63
62
|
css_files = Dir["#{root}/app/assets/stylesheets/grape_swagger_rails/*.css"].map { |f|
|
64
|
-
|
63
|
+
f.split('/').last
|
65
64
|
} - ['application.css']
|
66
65
|
(css_files - CSS_FILES).each do |filename|
|
67
|
-
|
66
|
+
puts "WARNING: add #{filename} to swagger_ui.rake"
|
68
67
|
end
|
69
68
|
(CSS_FILES - css_files).each do |filename|
|
70
|
-
|
69
|
+
puts "WARNING: remove #{filename} from swagger_ui.rake"
|
71
70
|
end
|
72
71
|
# rewrite screen.css into screen.css.erb with dynamic image paths
|
73
|
-
File.open "#{root}/app/assets/stylesheets/grape_swagger_rails/screen.css.erb",
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
72
|
+
File.open "#{root}/app/assets/stylesheets/grape_swagger_rails/screen.css.erb", 'w+' do |file|
|
73
|
+
contents = File.read "#{root}/app/assets/stylesheets/grape_swagger_rails/screen.css"
|
74
|
+
contents.gsub! /url\((\'*).*\/(?<filename>[\w\.]*)(\'*)\)/ do |_match|
|
75
|
+
"url(<%= image_path('grape_swagger_rails/#{$LAST_MATCH_INFO[:filename]}') %>)"
|
76
|
+
end
|
77
|
+
file.write contents
|
78
|
+
FileUtils.rm "#{root}/app/assets/stylesheets/grape_swagger_rails/screen.css"
|
80
79
|
end
|
81
|
-
File.open "#{root}/app/assets/stylesheets/grape_swagger_rails/application.css",
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
80
|
+
File.open "#{root}/app/assets/stylesheets/grape_swagger_rails/application.css", 'w+' do |file|
|
81
|
+
file.write "/*\n"
|
82
|
+
CSS_FILES.each do |filename|
|
83
|
+
file.write "*= require ./#{File.basename(filename, '.*')}\n"
|
84
|
+
end
|
85
|
+
file.write "*= require_self\n"
|
86
|
+
file.write "*/\n"
|
88
87
|
end
|
89
88
|
# Images
|
90
|
-
puts
|
89
|
+
puts 'Copying Images ...'
|
91
90
|
repo.remove 'app/assets/images/grape_swagger_rails', recursive: true
|
92
91
|
FileUtils.mkdir_p "#{root}/app/assets/images/grape_swagger_rails"
|
93
92
|
FileUtils.cp_r Dir.glob("#{dir}/swagger-ui/dist/images/**/*"), "#{root}/app/assets/images/grape_swagger_rails"
|
data/spec/dummy/bin/rails
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
begin
|
3
|
-
load File.expand_path(
|
3
|
+
load File.expand_path('../spring', __FILE__)
|
4
4
|
rescue LoadError
|
5
5
|
end
|
6
|
-
APP_PATH = File.expand_path('../../config/application',
|
6
|
+
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
7
7
|
require_relative '../config/boot'
|
8
8
|
require 'rails/commands'
|
data/spec/dummy/bin/rake
CHANGED
data/spec/dummy/bin/spring
CHANGED
@@ -4,15 +4,15 @@
|
|
4
4
|
# It gets overwritten when you run the `spring binstub` command
|
5
5
|
|
6
6
|
unless defined?(Spring)
|
7
|
-
require
|
8
|
-
require
|
7
|
+
require 'rubygems'
|
8
|
+
require 'bundler'
|
9
9
|
|
10
10
|
if match = Bundler.default_lockfile.read.match(/^GEM$.*?^ spring \((.*?)\)$.*?^$/m)
|
11
|
-
ENV[
|
12
|
-
ENV[
|
11
|
+
ENV['GEM_PATH'] = ([Bundler.bundle_path.to_s] + Gem.path).join(File::PATH_SEPARATOR)
|
12
|
+
ENV['GEM_HOME'] = ''
|
13
13
|
Gem.paths = ENV
|
14
14
|
|
15
|
-
gem
|
16
|
-
require
|
15
|
+
gem 'spring', match[1]
|
16
|
+
require 'spring/binstub'
|
17
17
|
end
|
18
18
|
end
|
data/spec/dummy/config.ru
CHANGED
@@ -5,6 +5,7 @@ require 'action_view/railtie'
|
|
5
5
|
require 'sprockets/railtie'
|
6
6
|
require 'jquery-rails'
|
7
7
|
require 'rack/cors'
|
8
|
+
require 'rack/no_animations'
|
8
9
|
|
9
10
|
Bundler.require(*Rails.groups)
|
10
11
|
require 'grape-swagger-rails'
|
@@ -16,7 +17,7 @@ module Dummy
|
|
16
17
|
config.middleware.use Rack::Cors do
|
17
18
|
allow do
|
18
19
|
origins '*'
|
19
|
-
resource '*', :
|
20
|
+
resource '*', headers: :any, methods: [:get, :post, :options]
|
20
21
|
end
|
21
22
|
end
|
22
23
|
end
|
@@ -20,7 +20,7 @@ Rails.application.configure do
|
|
20
20
|
# config.action_dispatch.rack_cache = true
|
21
21
|
|
22
22
|
# Disable Rails's static asset server (Apache or nginx will already do this).
|
23
|
-
config.
|
23
|
+
config.serve_static_files = false
|
24
24
|
|
25
25
|
# Compress JavaScripts and CSS.
|
26
26
|
config.assets.js_compressor = :uglifier
|
@@ -13,7 +13,7 @@ Rails.application.configure do
|
|
13
13
|
config.eager_load = false
|
14
14
|
|
15
15
|
# Configure static asset server for tests with Cache-Control for performance.
|
16
|
-
config.
|
16
|
+
config.serve_static_files = true
|
17
17
|
config.static_cache_control = 'public, max-age=3600'
|
18
18
|
|
19
19
|
# Show full error reports and disable caching.
|
@@ -36,4 +36,7 @@ Rails.application.configure do
|
|
36
36
|
|
37
37
|
# Raises error for missing translations
|
38
38
|
# config.action_view.raise_on_missing_translations = true
|
39
|
+
|
40
|
+
# Disable animations
|
41
|
+
config.middleware.use Rack::NoAnimations
|
39
42
|
end
|
@@ -6,30 +6,43 @@ describe 'Swagger' do
|
|
6
6
|
visit '/swagger'
|
7
7
|
end
|
8
8
|
it 'loads foos resource' do
|
9
|
-
expect(page).to have_css
|
9
|
+
expect(page).to have_css 'li#resource_foos'
|
10
10
|
end
|
11
11
|
it 'loads Swagger UI' do
|
12
12
|
expect(page.evaluate_script('window.swaggerUi != null')).to be true
|
13
13
|
end
|
14
14
|
end
|
15
|
-
context
|
15
|
+
context '#options' do
|
16
16
|
before do
|
17
17
|
@options = GrapeSwaggerRails.options.dup
|
18
18
|
end
|
19
|
-
context
|
19
|
+
context '#headers' do
|
20
20
|
before do
|
21
21
|
GrapeSwaggerRails.options.headers['X-Test-Header'] = 'Test Value'
|
22
|
+
GrapeSwaggerRails.options.headers['X-Another-Header'] = 'Another Value'
|
22
23
|
visit '/swagger'
|
23
24
|
end
|
24
25
|
it 'adds headers' do
|
26
|
+
headers = page.evaluate_script('swaggerUi.api.clientAuthorizations')['authz']
|
27
|
+
expect(headers.select { |key| key.to_s.match(/^header/) }).not_to be_blank
|
28
|
+
expect(headers.fetch('header_0', {}).fetch('name', {})).to eq GrapeSwaggerRails.options.headers.keys.first
|
25
29
|
find('#endpointListTogger_headers', visible: true).click
|
26
|
-
|
30
|
+
first('a[href="#!/headers/GET_api_headers_format"]', visible: true).click
|
31
|
+
click_button 'Try it out!'
|
32
|
+
expect(page).to have_css 'span.attribute', text: 'X-Test-Header'
|
33
|
+
expect(page).to have_css 'span.string', text: 'Test Value'
|
34
|
+
end
|
35
|
+
it 'supports multiple headers' do
|
36
|
+
find('#endpointListTogger_headers', visible: true).click
|
37
|
+
first('a[href="#!/headers/GET_api_headers_format"]', visible: true).click
|
27
38
|
click_button 'Try it out!'
|
28
|
-
expect(page).to have_css
|
29
|
-
expect(page).to have_css
|
39
|
+
expect(page).to have_css 'span.attribute', text: 'X-Test-Header'
|
40
|
+
expect(page).to have_css 'span.string', text: 'Test Value'
|
41
|
+
expect(page).to have_css 'span.attribute', text: 'X-Another-Header'
|
42
|
+
expect(page).to have_css 'span.string', text: 'Another Value'
|
30
43
|
end
|
31
44
|
end
|
32
|
-
context
|
45
|
+
context '#api_auth:basic' do
|
33
46
|
before do
|
34
47
|
GrapeSwaggerRails.options.api_auth = 'basic'
|
35
48
|
GrapeSwaggerRails.options.api_key_name = 'Authorization'
|
@@ -37,15 +50,16 @@ describe 'Swagger' do
|
|
37
50
|
visit '/swagger'
|
38
51
|
end
|
39
52
|
it 'adds an Authorization header' do
|
40
|
-
|
53
|
+
page.execute_script("$('#input_apiKey').val('username:password')")
|
54
|
+
page.execute_script("$('#input_apiKey').trigger('change')")
|
41
55
|
find('#endpointListTogger_headers', visible: true).click
|
42
56
|
first('a[href="#!/headers/GET_api_headers_format"]', visible: true).click
|
43
57
|
click_button 'Try it out!'
|
44
|
-
expect(page).to have_css
|
45
|
-
expect(page).to have_css
|
58
|
+
expect(page).to have_css 'span.attribute', text: 'Authorization'
|
59
|
+
expect(page).to have_css 'span.string', text: "Basic #{Base64.encode64('username:password').strip}"
|
46
60
|
end
|
47
61
|
end
|
48
|
-
context
|
62
|
+
context '#api_auth:bearer' do
|
49
63
|
before do
|
50
64
|
GrapeSwaggerRails.options.api_auth = 'bearer'
|
51
65
|
GrapeSwaggerRails.options.api_key_name = 'Authorization'
|
@@ -53,51 +67,53 @@ describe 'Swagger' do
|
|
53
67
|
visit '/swagger'
|
54
68
|
end
|
55
69
|
it 'adds an Authorization header' do
|
56
|
-
|
70
|
+
page.execute_script("$('#input_apiKey').val('token')")
|
71
|
+
page.execute_script("$('#input_apiKey').trigger('change')")
|
57
72
|
find('#endpointListTogger_headers', visible: true).click
|
58
73
|
first('a[href="#!/headers/GET_api_headers_format"]', visible: true).click
|
59
74
|
click_button 'Try it out!'
|
60
|
-
expect(page).to have_css
|
61
|
-
expect(page).to have_css
|
75
|
+
expect(page).to have_css 'span.attribute', text: 'Authorization'
|
76
|
+
expect(page).to have_css 'span.string', text: 'Bearer token'
|
62
77
|
end
|
63
78
|
end
|
64
|
-
context
|
79
|
+
context '#api_auth:token' do
|
65
80
|
before do
|
66
81
|
GrapeSwaggerRails.options.api_key_name = 'api_token'
|
67
82
|
GrapeSwaggerRails.options.api_key_type = 'query'
|
68
83
|
visit '/swagger'
|
69
84
|
end
|
70
85
|
it 'adds an api_token query parameter' do
|
71
|
-
|
86
|
+
page.execute_script("$('#input_apiKey').val('dummy')")
|
87
|
+
page.execute_script("$('#input_apiKey').trigger('change')")
|
72
88
|
find('#endpointListTogger_params', visible: true).click
|
73
89
|
first('a[href="#!/params/GET_api_params_format"]', visible: true).click
|
74
90
|
click_button 'Try it out!'
|
75
|
-
expect(page).to have_css
|
76
|
-
expect(page).to have_css
|
91
|
+
expect(page).to have_css 'span.attribute', text: 'api_token'
|
92
|
+
expect(page).to have_css 'span.string', text: 'dummy'
|
77
93
|
end
|
78
94
|
end
|
79
|
-
context
|
95
|
+
context '#before_filter' do
|
80
96
|
before do
|
81
|
-
GrapeSwaggerRails.options.before_filter do |
|
82
|
-
flash[:error] =
|
97
|
+
GrapeSwaggerRails.options.before_filter do |_request|
|
98
|
+
flash[:error] = 'Unauthorized Access'
|
83
99
|
redirect_to '/'
|
84
100
|
false
|
85
101
|
end
|
86
102
|
visit '/swagger'
|
87
103
|
end
|
88
104
|
it 'denies access' do
|
89
|
-
expect(current_path).to eq
|
90
|
-
expect(page).to have_content
|
105
|
+
expect(current_path).to eq '/'
|
106
|
+
expect(page).to have_content 'Unauthorized Access'
|
91
107
|
end
|
92
108
|
end
|
93
|
-
context
|
109
|
+
context '#app_name' do
|
94
110
|
context 'set' do
|
95
111
|
before do
|
96
|
-
GrapeSwaggerRails.options.app_name =
|
112
|
+
GrapeSwaggerRails.options.app_name = 'Test App'
|
97
113
|
visit '/swagger'
|
98
114
|
end
|
99
115
|
it 'sets page title' do
|
100
|
-
expect(page.title).to eq
|
116
|
+
expect(page.title).to eq 'Test App'
|
101
117
|
end
|
102
118
|
end
|
103
119
|
context 'not set' do
|
@@ -105,7 +121,35 @@ describe 'Swagger' do
|
|
105
121
|
visit '/swagger'
|
106
122
|
end
|
107
123
|
it 'defaults page title' do
|
108
|
-
expect(page.title).to eq
|
124
|
+
expect(page.title).to eq 'Swagger'
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
context '#doc_expansion' do
|
129
|
+
context 'set list' do
|
130
|
+
before do
|
131
|
+
GrapeSwaggerRails.options.doc_expansion = 'list'
|
132
|
+
visit '/swagger'
|
133
|
+
end
|
134
|
+
it 'sets SwaggerUI docExpansion with list' do
|
135
|
+
expect(page.evaluate_script('window.swaggerUi.options.docExpansion == "list"')).to be true
|
136
|
+
end
|
137
|
+
end
|
138
|
+
context 'set full' do
|
139
|
+
before do
|
140
|
+
GrapeSwaggerRails.options.doc_expansion = 'full'
|
141
|
+
visit '/swagger'
|
142
|
+
end
|
143
|
+
it 'sets SwaggerUI docExpansion with full' do
|
144
|
+
expect(page.evaluate_script('window.swaggerUi.options.docExpansion == "full"')).to be true
|
145
|
+
end
|
146
|
+
end
|
147
|
+
context 'not set' do
|
148
|
+
before do
|
149
|
+
visit '/swagger'
|
150
|
+
end
|
151
|
+
it 'defaults SwaggerUI docExpansion' do
|
152
|
+
expect(page.evaluate_script('window.swaggerUi.options.docExpansion == "none"')).to be true
|
109
153
|
end
|
110
154
|
end
|
111
155
|
end
|