grape-swagger-rails 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|