spec/grape/middleware/versioner/param_spec.rb in grape-0.18.0 vs spec/grape/middleware/versioner/param_spec.rb in grape-0.19.0
- old
+ new
@@ -1,10 +1,11 @@
require 'spec_helper'
describe Grape::Middleware::Versioner::Param do
let(:app) { ->(env) { [200, env, env['api.version']] } }
- subject { Grape::Middleware::Versioner::Param.new(app, @options || {}) }
+ let(:options) { {} }
+ subject { Grape::Middleware::Versioner::Param.new(app, options) }
it 'sets the API version based on the default param (apiver)' do
env = Rack::MockRequest.env_for('/awesome', params: { 'apiver' => 'v1' })
expect(subject.call(env)[1]['api.version']).to eq('v1')
end
@@ -20,11 +21,11 @@
env = Rack::MockRequest.env_for('/')
expect(subject.call(env).last).to be_nil
end
context 'with specified parameter name' do
- before { @options = { version_options: { parameter: 'v' } } }
+ let(:options) { { version_options: { parameter: 'v' } } }
it 'sets the API version based on the custom parameter name' do
env = Rack::MockRequest.env_for('/awesome', params: { 'v' => 'v1' })
expect(subject.call(env)[1]['api.version']).to eq('v1')
end
it 'does not set the API version based on the default param' do
@@ -32,27 +33,31 @@
expect(subject.call(env)[1]['api.version']).to be_nil
end
end
context 'with specified versions' do
- before { @options = { versions: %w(v1 v2) } }
+ let(:options) { { versions: %w(v1 v2) } }
it 'throws an error if a non-allowed version is specified' do
env = Rack::MockRequest.env_for('/awesome', params: { 'apiver' => 'v3' })
expect(catch(:error) { subject.call(env) }[:status]).to eq(404)
end
it 'allows versions that have been specified' do
env = Rack::MockRequest.env_for('/awesome', params: { 'apiver' => 'v1' })
expect(subject.call(env)[1]['api.version']).to eq('v1')
end
end
- it 'returns a 200 when no version is set (matches the first version found)' do
- @options = {
- versions: ['v1'],
- version_options: { using: :header }
- }
- env = Rack::MockRequest.env_for('/awesome', params: {})
- expect(subject.call(env).first).to eq(200)
+ context 'when no version is set' do
+ let(:options) do
+ {
+ versions: ['v1'],
+ version_options: { using: :header }
+ }
+ end
+ it 'returns a 200 (matches the first version found)' do
+ env = Rack::MockRequest.env_for('/awesome', params: {})
+ expect(subject.call(env).first).to eq(200)
+ end
end
context 'when there are multiple versions without a custom param' do
subject { Class.new(Grape::API) }