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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -0
  3. data/.rubocop_todo.yml +61 -0
  4. data/.travis.yml +5 -2
  5. data/CHANGELOG.md +11 -0
  6. data/CONTRIBUTING.md +13 -10
  7. data/Gemfile +6 -0
  8. data/README.md +58 -2
  9. data/RELEASING.md +1 -1
  10. data/Rakefile +6 -6
  11. data/app/assets/images/grape_swagger_rails/favicon-16x16.png +0 -0
  12. data/app/assets/images/grape_swagger_rails/favicon-32x32.png +0 -0
  13. data/app/assets/images/grape_swagger_rails/favicon.ico +0 -0
  14. data/app/assets/javascripts/grape_swagger_rails/application.js +2 -3
  15. data/app/assets/javascripts/grape_swagger_rails/backbone-min.js +14 -37
  16. data/app/assets/javascripts/grape_swagger_rails/handlebars-2.0.0.js +28 -0
  17. data/app/assets/javascripts/grape_swagger_rails/jquery-1.8.0.min.js +1 -1
  18. data/app/assets/javascripts/grape_swagger_rails/marked.js +1272 -0
  19. data/app/assets/javascripts/grape_swagger_rails/swagger-oauth.js +133 -54
  20. data/app/assets/javascripts/grape_swagger_rails/swagger-ui.min.js +13 -1
  21. data/app/assets/javascripts/grape_swagger_rails/underscore-min.js +6 -32
  22. data/app/assets/javascripts/grape_swagger_rails/underscore-min.map +1 -0
  23. data/app/assets/stylesheets/grape_swagger_rails/print.css +1172 -0
  24. data/app/assets/stylesheets/grape_swagger_rails/screen.css.erb +68 -13
  25. data/app/assets/stylesheets/grape_swagger_rails/style.css +250 -0
  26. data/app/assets/stylesheets/grape_swagger_rails/typography.css +26 -0
  27. data/app/views/grape_swagger_rails/application/index.html.erb +15 -10
  28. data/config/routes.rb +1 -1
  29. data/grape-swagger-rails.gemspec +7 -3
  30. data/lib/grape-swagger-rails.rb +4 -3
  31. data/lib/grape-swagger-rails/version.rb +1 -1
  32. data/lib/tasks/swagger_ui.rake +43 -44
  33. data/spec/dummy/bin/rails +2 -2
  34. data/spec/dummy/bin/rake +1 -1
  35. data/spec/dummy/bin/spring +6 -6
  36. data/spec/dummy/config.ru +1 -1
  37. data/spec/dummy/config/application.rb +2 -1
  38. data/spec/dummy/config/environments/development.rb +3 -0
  39. data/spec/dummy/config/environments/production.rb +1 -1
  40. data/spec/dummy/config/environments/test.rb +4 -1
  41. data/spec/features/grape-swagger-rails_spec.rb +1 -1
  42. data/spec/features/swagger_spec.rb +71 -27
  43. data/spec/spec_helper.rb +1 -1
  44. metadata +108 -45
  45. data/app/assets/javascripts/grape_swagger_rails/handlebars-1.0.0.js +0 -2278
  46. data/app/assets/javascripts/grape_swagger_rails/shred.bundle.js +0 -2765
  47. data/app/assets/javascripts/grape_swagger_rails/shred/content.js +0 -193
  48. data/app/assets/javascripts/grape_swagger_rails/swagger.js +0 -1603
@@ -1,3 +1,3 @@
1
1
  GrapeSwaggerRails::Engine.routes.draw do
2
- root :to => "application#index"
2
+ root to: 'application#index'
3
3
  end
@@ -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/TinkerDev/grape-swagger-rails'
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
@@ -1,4 +1,4 @@
1
- require "grape-swagger-rails/engine"
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
- self.before_filter_proc
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
@@ -1,3 +1,3 @@
1
1
  module GrapeSwaggerRails
2
- VERSION = "0.1.0"
2
+ VERSION = '0.2.0'
3
3
  end
@@ -2,18 +2,18 @@ require 'git'
2
2
 
3
3
  namespace :swagger_ui do
4
4
  namespace :dist do
5
- desc "Update Swagger-UI from wordnik/swagger-ui."
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 "Copying Javascripts ..."
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
- 'shred.bundle.js',
25
- 'jquery-1.8.0.min.js',
26
- 'jquery.slideto.min.js',
27
- 'jquery.wiggle.min.js',
28
- 'jquery.ba-bbq.min.js',
29
- 'handlebars-1.0.0.js',
30
- 'underscore-min.js',
31
- 'backbone-min.js',
32
- 'swagger.js',
33
- 'swagger-ui.min.js',
34
- 'highlight.7.3.pack.js',
35
- 'swagger-oauth.js',
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
- f.split('/').last
38
+ f.split('/').last
40
39
  } - ['application.js']
41
40
  (javascript_files - JAVASCRIPT_FILES).each do |filename|
42
- puts "WARNING: add #{filename} to swagger_ui.rake"
41
+ puts "WARNING: add #{filename} to swagger_ui.rake"
43
42
  end
44
43
  (JAVASCRIPT_FILES - javascript_files).each do |filename|
45
- puts "WARNING: remove #{filename} from swagger_ui.rake"
44
+ puts "WARNING: remove #{filename} from swagger_ui.rake"
46
45
  end
47
- File.open "#{root}/app/assets/javascripts/grape_swagger_rails/application.js", "w+" do |file|
48
- JAVASCRIPT_FILES.each do |filename|
49
- file.write "//= require ./#{File.basename(filename, '.*')}\n"
50
- end
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 "Copying Stylesheets ..."
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
- 'reset.css',
61
- 'screen.css'
59
+ 'reset.css',
60
+ 'screen.css'
62
61
  ]
63
62
  css_files = Dir["#{root}/app/assets/stylesheets/grape_swagger_rails/*.css"].map { |f|
64
- f.split('/').last
63
+ f.split('/').last
65
64
  } - ['application.css']
66
65
  (css_files - CSS_FILES).each do |filename|
67
- puts "WARNING: add #{filename} to swagger_ui.rake"
66
+ puts "WARNING: add #{filename} to swagger_ui.rake"
68
67
  end
69
68
  (CSS_FILES - css_files).each do |filename|
70
- puts "WARNING: remove #{filename} from swagger_ui.rake"
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", "w+" do |file|
74
- contents = File.read "#{root}/app/assets/stylesheets/grape_swagger_rails/screen.css"
75
- contents.gsub! /url\((\'*).*\/(?<filename>[\w\.]*)(\'*)\)/ do |match|
76
- "url(<%= image_path('grape_swagger_rails/#{$~[:filename]}') %>)"
77
- end
78
- file.write contents
79
- FileUtils.rm "#{root}/app/assets/stylesheets/grape_swagger_rails/screen.css"
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", "w+" do |file|
82
- file.write "/*\n"
83
- CSS_FILES.each do |filename|
84
- file.write "*= require ./#{File.basename(filename, '.*')}\n"
85
- end
86
- file.write "*= require_self\n"
87
- file.write "*/\n"
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 "Copying Images ..."
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"
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  begin
3
- load File.expand_path("../spring", __FILE__)
3
+ load File.expand_path('../spring', __FILE__)
4
4
  rescue LoadError
5
5
  end
6
- APP_PATH = File.expand_path('../../config/application', __FILE__)
6
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
7
7
  require_relative '../config/boot'
8
8
  require 'rails/commands'
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  begin
3
- load File.expand_path("../spring", __FILE__)
3
+ load File.expand_path('../spring', __FILE__)
4
4
  rescue LoadError
5
5
  end
6
6
  require_relative '../config/boot'
@@ -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 "rubygems"
8
- require "bundler"
7
+ require 'rubygems'
8
+ require 'bundler'
9
9
 
10
10
  if match = Bundler.default_lockfile.read.match(/^GEM$.*?^ spring \((.*?)\)$.*?^$/m)
11
- ENV["GEM_PATH"] = ([Bundler.bundle_path.to_s] + Gem.path).join(File::PATH_SEPARATOR)
12
- ENV["GEM_HOME"] = ""
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 "spring", match[1]
16
- require "spring/binstub"
15
+ gem 'spring', match[1]
16
+ require 'spring/binstub'
17
17
  end
18
18
  end
@@ -1,4 +1,4 @@
1
1
  # This file is used by Rack-based servers to start the application.
2
2
 
3
- require ::File.expand_path('../config/environment', __FILE__)
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
4
  run Dummy::Application
@@ -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 '*', :headers => :any, :methods => [:get, :post, :options]
20
+ resource '*', headers: :any, methods: [:get, :post, :options]
20
21
  end
21
22
  end
22
23
  end
@@ -31,4 +31,7 @@ Rails.application.configure do
31
31
 
32
32
  # Raises error for missing translations
33
33
  # config.action_view.raise_on_missing_translations = true
34
+
35
+ # Disable animations
36
+ config.middleware.use Rack::NoAnimations
34
37
  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.serve_static_assets = false
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.serve_static_assets = true
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
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe GrapeSwaggerRails do
4
- context "#options" do
4
+ context '#options' do
5
5
  subject do
6
6
  GrapeSwaggerRails.options
7
7
  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 "li#resource_foos"
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 "#options" do
15
+ context '#options' do
16
16
  before do
17
17
  @options = GrapeSwaggerRails.options.dup
18
18
  end
19
- context "#headers" do
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
- find('a[href="#!/headers/GET_api_headers_format"]', visible: true).click
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 "span.attribute", text: 'X-Test-Header'
29
- expect(page).to have_css "span.string", text: 'Test Value'
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 "#api_auth:basic" do
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
- fill_in 'apiKey', with: 'username:password'
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 "span.attribute", text: 'Authorization'
45
- expect(page).to have_css "span.string", text: "Basic #{Base64.encode64('username:password').strip}"
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 "#api_auth:bearer" do
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
- fill_in 'apiKey', with: 'token'
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 "span.attribute", text: 'Authorization'
61
- expect(page).to have_css "span.string", text: 'Bearer token'
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 "#api_auth:token" do
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
- fill_in 'apiKey', with: 'dummy'
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 "span.attribute", text: 'api_token'
76
- expect(page).to have_css "span.string", text: "dummy"
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 "#before_filter" do
95
+ context '#before_filter' do
80
96
  before do
81
- GrapeSwaggerRails.options.before_filter do |request|
82
- flash[:error] = "Unauthorized Access"
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 "Unauthorized Access"
105
+ expect(current_path).to eq '/'
106
+ expect(page).to have_content 'Unauthorized Access'
91
107
  end
92
108
  end
93
- context "#app_name" do
109
+ context '#app_name' do
94
110
  context 'set' do
95
111
  before do
96
- GrapeSwaggerRails.options.app_name = "Test App"
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 "Test App"
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 "Swagger"
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