Added test for overruling the defaults (and fixed it).
This commit is contained in:
		
							parent
							
								
									7a8508bb12
								
							
						
					
					
						commit
						597bd3f840
					
				|  | @ -41,8 +41,8 @@ module Grape | |||
|             @@target_class = options[:target_class] | ||||
|             @@mount_path = options[:mount_path] | ||||
|             @@class_name = options[:class_name] || options[:mount_path].gsub('/','') | ||||
|             @@api_version = options[:api_version] | ||||
|             @@base_path = options[:base_path] | ||||
|             api_version = options[:api_version] | ||||
|             base_path = options[:base_path] | ||||
| 
 | ||||
|             desc 'Swagger compatible API description' | ||||
|             get @@mount_path do | ||||
|  | @ -54,9 +54,9 @@ module Grape | |||
|                   { :path => "#{@@mount_path}/#{route}.{format}" } | ||||
|               end | ||||
|               { | ||||
|                 apiVersion: @@api_version, | ||||
|                 apiVersion: api_version, | ||||
|                 swaggerVersion: "1.1", | ||||
|                 basePath: @@base_path || "http://#{env['HTTP_HOST']}", | ||||
|                 basePath: base_path || "http://#{env['HTTP_HOST']}", | ||||
|                 operations:[], | ||||
|                 apis: routes_array | ||||
|               } | ||||
|  | @ -84,9 +84,9 @@ module Grape | |||
|               end | ||||
| 
 | ||||
|               { | ||||
|                 apiVersion: @@api_version, | ||||
|                 apiVersion: api_version, | ||||
|                 swaggerVersion: "1.1", | ||||
|                 basePath: @@base_path || "http://#{env['HTTP_HOST']}", | ||||
|                 basePath: base_path || "http://#{env['HTTP_HOST']}", | ||||
|                 resourcePath: "", | ||||
|                 apis: routes_array | ||||
|               } | ||||
|  |  | |||
|  | @ -0,0 +1,88 @@ | |||
| require 'spec_helper' | ||||
| 
 | ||||
| describe "overruling the defaults for the api documentation generation" do | ||||
| 
 | ||||
|   class MountedApi < Grape::API | ||||
|     desc 'this gets something' | ||||
|     get '/something' do | ||||
|       {:bla => 'something'} | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
| 
 | ||||
|   context "overruling the basepath" do | ||||
|     class SimpleApiWithBasePath < Grape::API | ||||
|       NON_DEFAULT_BASE_PATH= "http://www.breakcoregivesmewood.com" | ||||
| 
 | ||||
|       mount MountedApi | ||||
|       add_swagger_documentation :base_path => NON_DEFAULT_BASE_PATH | ||||
|     end | ||||
| 
 | ||||
|     subject { SimpleApiWithBasePath.new } | ||||
|     def app; subject end | ||||
| 
 | ||||
|     it "retrieves the given base-path on /swagger_doc" do | ||||
|       get '/swagger_doc' | ||||
|       last_response.body.should == "{:apiVersion=>\"0.1\", :swaggerVersion=>\"1.1\", :basePath=>\"#{SimpleApiWithBasePath::NON_DEFAULT_BASE_PATH}\", :operations=>[], :apis=>[{:path=>\"/swagger_doc/mountedapi.{format}\"}, {:path=>\"/swagger_doc/swagger_doc.{format}\"}]}" | ||||
|     end | ||||
| 
 | ||||
|     it "retrieves the same given base-path for mounted-api" do | ||||
|       Random.stub(:rand) { 0 } | ||||
|       get '/swagger_doc/mountedapi' | ||||
|       last_response.body.should == "{:apiVersion=>\"0.1\", :swaggerVersion=>\"1.1\", :basePath=>\"#{SimpleApiWithBasePath::NON_DEFAULT_BASE_PATH}\", :resourcePath=>\"\", :apis=>[{:path=>\"/something.{format}\", :operations=>[{:notes=>nil, :summary=>\"this gets something\", :nickname=>0, :httpMethod=>\"GET\", :parameters=>[]}]}]}" | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context "overruling the basepath" do | ||||
|     class SimpleApiWithAPiVersion < Grape::API | ||||
|       API_VERSION = "101" | ||||
| 
 | ||||
|       mount MountedApi | ||||
|       add_swagger_documentation :api_version => API_VERSION | ||||
|     end | ||||
| 
 | ||||
|     subject { SimpleApiWithAPiVersion.new } | ||||
|     def app; subject end | ||||
| 
 | ||||
|     it "retrieves the given base-path on /swagger_doc" do | ||||
|       get '/swagger_doc' | ||||
|       last_response.body.should == "{:apiVersion=>\"#{SimpleApiWithAPiVersion::API_VERSION}\", :swaggerVersion=>\"1.1\", :basePath=>\"http://example.org\", :operations=>[], :apis=>[{:path=>\"/swagger_doc/mountedapi.{format}\"}, {:path=>\"/swagger_doc/swagger_doc.{format}\"}]}" | ||||
|     end | ||||
| 
 | ||||
|     it "retrieves the same given base-path for mounted-api" do | ||||
|       Random.stub(:rand) { 0 } | ||||
|       get '/swagger_doc/mountedapi' | ||||
|       last_response.body.should == "{:apiVersion=>\"#{SimpleApiWithAPiVersion::API_VERSION}\", :swaggerVersion=>\"1.1\", :basePath=>\"http://example.org\", :resourcePath=>\"\", :apis=>[{:path=>\"/something.{format}\", :operations=>[{:notes=>nil, :summary=>\"this gets something\", :nickname=>0, :httpMethod=>\"GET\", :parameters=>[]}]}]}" | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context "overruling the mount-path" do | ||||
|     class SimpleApiWithDifferentMount < Grape::API | ||||
|       MOUNT_PATH = "api_doc" | ||||
| 
 | ||||
|       mount MountedApi | ||||
|       add_swagger_documentation :mount_path => MOUNT_PATH | ||||
|     end | ||||
| 
 | ||||
|     subject { SimpleApiWithDifferentMount.new } | ||||
|     def app; subject end | ||||
| 
 | ||||
|     it "retrieves the given base-path on /swagger_doc" do | ||||
|       get '/api_doc' | ||||
|       last_response.body.should == "{:apiVersion=>\"0.1\", :swaggerVersion=>\"1.1\", :basePath=>\"http://example.org\", :operations=>[], :apis=>[{:path=>\"/swagger_doc/mountedapi.{format}\"}, {:path=>\"/swagger_doc/swagger_doc.{format}\"}]}" | ||||
|     end | ||||
| 
 | ||||
|     it "retrieves the same given base-path for mounted-api" do | ||||
|       Random.stub(:rand) { 0 } | ||||
|       get '/api_doc/mountedapi' | ||||
|       last_response.body.should == "{:apiVersion=>\"0.1\", :swaggerVersion=>\"1.1\", :basePath=>\"http://example.org\", :resourcePath=>\"\", :apis=>[{:path=>\"/something.{format}\", :operations=>[{:notes=>nil, :summary=>\"this gets something\", :nickname=>0, :httpMethod=>\"GET\", :parameters=>[]}]}]}" | ||||
|     end | ||||
| 
 | ||||
|     it "does not respond to swagger_doc" do | ||||
|       get '/swagger_doc' | ||||
|       last_response.status.should be == 404 | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
| 
 | ||||
| end | ||||
		Loading…
	
		Reference in New Issue