93 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| require 'spec_helper'
 | |
| 
 | |
| describe GrapeSwagger::DocMethods::PathString do
 | |
|   subject { described_class }
 | |
| 
 | |
|   specify { expect(subject).to eql GrapeSwagger::DocMethods::PathString }
 | |
|   specify { expect(subject).to respond_to :build }
 | |
| 
 | |
|   describe 'operation_id_object' do
 | |
|     describe 'version' do
 | |
|       describe 'defaults: given, true' do
 | |
|         let(:options) { { add_version: true } }
 | |
|         let(:route) { Struct.new(:version, :path).new('v1') }
 | |
| 
 | |
|         specify 'The returned path includes version' do
 | |
|           route.path = '/{version}/thing(.json)'
 | |
|           expect(subject.build(route, options)).to eql ['Thing', '/v1/thing']
 | |
|           route.path = '/{version}/thing/foo(.json)'
 | |
|           expect(subject.build(route, options)).to eql ['Foo', '/v1/thing/foo']
 | |
|           route.path = '/{version}/thing(.:format)'
 | |
|           expect(subject.build(route, options)).to eql ['Thing', '/v1/thing']
 | |
|           route.path = '/{version}/thing/foo(.:format)'
 | |
|           expect(subject.build(route, options)).to eql ['Foo', '/v1/thing/foo']
 | |
|           route.path = '/{version}/thing/:id'
 | |
|           expect(subject.build(route, options)).to eql ['Thing', '/v1/thing/{id}']
 | |
|           route.path = '/{version}/thing/foo/:id'
 | |
|           expect(subject.build(route, options)).to eql ['Foo', '/v1/thing/foo/{id}']
 | |
|         end
 | |
|       end
 | |
| 
 | |
|       describe 'defaults: not given, both false' do
 | |
|         let(:options) { { add_version: false } }
 | |
|         let(:route) { Struct.new(:version, :path).new }
 | |
| 
 | |
|         specify 'The returned path does not include version' do
 | |
|           route.path = '/{version}/thing(.json)'
 | |
|           expect(subject.build(route, options)).to eql ['Thing', '/thing']
 | |
|           route.path = '/{version}/thing/foo(.json)'
 | |
|           expect(subject.build(route, options)).to eql ['Foo', '/thing/foo']
 | |
|           route.path = '/{version}/thing(.:format)'
 | |
|           expect(subject.build(route, options)).to eql ['Thing', '/thing']
 | |
|           route.path = '/{version}/thing/foo(.:format)'
 | |
|           expect(subject.build(route, options)).to eql ['Foo', '/thing/foo']
 | |
|           route.path = '/{version}/thing/:id'
 | |
|           expect(subject.build(route, options)).to eql ['Thing', '/thing/{id}']
 | |
|           route.path = '/{version}/thing/foo/:id'
 | |
|           expect(subject.build(route, options)).to eql ['Foo', '/thing/foo/{id}']
 | |
|         end
 | |
|       end
 | |
| 
 | |
|       describe 'defaults: add_version false' do
 | |
|         let(:options) { { add_version: false } }
 | |
|         let(:route) { Struct.new(:version, :path).new('v1') }
 | |
| 
 | |
|         specify 'The returned path does not include version' do
 | |
|           route.path = '/{version}/thing(.json)'
 | |
|           expect(subject.build(route, options)).to eql ['Thing', '/thing']
 | |
|           route.path = '/{version}/thing/foo(.json)'
 | |
|           expect(subject.build(route, options)).to eql ['Foo', '/thing/foo']
 | |
|           route.path = '/{version}/thing(.:format)'
 | |
|           expect(subject.build(route, options)).to eql ['Thing', '/thing']
 | |
|           route.path = '/{version}/thing/foo(.:format)'
 | |
|           expect(subject.build(route, options)).to eql ['Foo', '/thing/foo']
 | |
|           route.path = '/{version}/thing/:id'
 | |
|           expect(subject.build(route, options)).to eql ['Thing', '/thing/{id}']
 | |
|           route.path = '/{version}/thing/foo/:id'
 | |
|           expect(subject.build(route, options)).to eql ['Foo', '/thing/foo/{id}']
 | |
|         end
 | |
|       end
 | |
| 
 | |
|       describe 'defaults: root_version nil' do
 | |
|         let(:options) { { add_version: true } }
 | |
|         let(:route) { Struct.new(:version, :path).new }
 | |
| 
 | |
|         specify 'The returned path does not include version' do
 | |
|           route.path = '/{version}/thing(.json)'
 | |
|           expect(subject.build(route, options)).to eql ['Thing', '/thing']
 | |
|           route.path = '/{version}/thing/foo(.json)'
 | |
|           expect(subject.build(route, options)).to eql ['Foo', '/thing/foo']
 | |
|           route.path = '/{version}/thing(.:format)'
 | |
|           expect(subject.build(route, options)).to eql ['Thing', '/thing']
 | |
|           route.path = '/{version}/thing/foo(.:format)'
 | |
|           expect(subject.build(route, options)).to eql ['Foo', '/thing/foo']
 | |
|           route.path = '/{version}/thing/:id'
 | |
|           expect(subject.build(route, options)).to eql ['Thing', '/thing/{id}']
 | |
|           route.path = '/{version}/thing/foo/:id'
 | |
|           expect(subject.build(route, options)).to eql ['Foo', '/thing/foo/{id}']
 | |
|         end
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |