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