Skip to content

Commit

Permalink
Merge branch 'dependency-inject-config'
Browse files Browse the repository at this point in the history
  • Loading branch information
bwillis committed Dec 3, 2014
2 parents a9c743e + e84b4a6 commit bc49509
Show file tree
Hide file tree
Showing 15 changed files with 42 additions and 41 deletions.
2 changes: 1 addition & 1 deletion Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ Bundler::GemHelper.install_tasks

RSpec::Core::RakeTask.new(:spec)

task :default => :spec
task default: :spec
6 changes: 5 additions & 1 deletion lib/versioncake/controller_additions.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,11 @@ def versioned_request
# @return No explicit return, but several attributes are exposed
def set_version(override_version=nil)
return if @versioned_request.present? && override_version.blank?
@versioned_request = VersionCake::VersionedRequest.new(request, override_version)
@versioned_request = VersionCake::VersionedRequest.new(
request,
VersionCake::Railtie.config.versioncake,
override_version
)
if !@versioned_request.is_version_supported?
raise UnsupportedVersionError.new('Unsupported version error')
end
Expand Down
17 changes: 7 additions & 10 deletions lib/versioncake/versioned_request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,17 @@ module VersionCake
class VersionedRequest
attr_reader :version, :extracted_version, :is_version_supported

def initialize(request, version_override=nil)
def initialize(request, config, version_override=nil)
@config = config
derive_version(request, version_override)
end

def supported_versions
config.supported_versions(@version)
@config.supported_versions(@version)
end

def is_latest_version?
@version == config.latest_version
@version == @config.latest_version
end

def is_version_supported?
Expand All @@ -20,13 +21,9 @@ def is_version_supported?

private

def config
VersionCake::Railtie.config.versioncake
end

def apply_strategies(request)
version = nil
config.extraction_strategies.each do |strategy|
@config.extraction_strategies.each do |strategy|
version = strategy.extract(request)
break unless version.nil?
end
Expand All @@ -40,8 +37,8 @@ def derive_version(request, version_override)
else
begin
@extracted_version = apply_strategies(request)
@version = @extracted_version || config.default_version || config.latest_version
@is_version_supported = config.supports_version? @version
@version = @extracted_version || @config.default_version || @config.latest_version
@is_version_supported = @config.supports_version? @version
rescue Exception
@is_version_supported = false
end
Expand Down
10 changes: 5 additions & 5 deletions lib/versioncake/view_additions.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@
# not sure why we are doing this yet, but looks like a good idea
if ActionPack::VERSION::MAJOR >= 4 && ActionPack::VERSION::MINOR >= 1
ActionView::PathResolver::EXTENSIONS.replace({
:locale => ".",
:formats => ".",
:versions => ".",
:variants => "+",
:handlers => "."
locale: ".",
formats: ".",
versions: ".",
variants: "+",
handlers: "."
})

ActionView::PathResolver::DEFAULT_PATTERN.replace ":prefix/:action{.:locale,}{.:formats,}{+:variants,}{.:versions,}{.:handlers,}"
Expand Down
2 changes: 1 addition & 1 deletion spec/integration/controller/renders_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
context 'when derived_version is called before the before_filter' do
before do
controller.instance_variable_set('@_lookup_context', double(:versions= => nil))
allow(request).to receive(:query_parameters).and_return({:api_version => '2'})
allow(request).to receive(:query_parameters).and_return({api_version: '2'})
end

it { expect(controller.derived_version).to eq 2 }
Expand Down
1 change: 1 addition & 0 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
require 'coveralls'
Coveralls.wear!
require 'versioncake'

def capture_stdout(flag=true)
if flag
Expand Down
2 changes: 1 addition & 1 deletion spec/unit/cli_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require './spec/spec_helper'
require 'spec_helper'

describe VersionCake::Cli do
quiet_stdout
Expand Down
2 changes: 1 addition & 1 deletion spec/unit/configuration_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require './spec/spec_helper'
require 'spec_helper'

describe VersionCake::Configuration do
subject(:config) do
Expand Down
5 changes: 1 addition & 4 deletions spec/unit/strategies/extraction_strategy_spec.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
require './spec/spec_helper'
require './lib/versioncake/strategies/extraction_strategy'
require './lib/versioncake/strategies/query_parameter_strategy'
require './lib/versioncake/strategies/custom_strategy'
require 'spec_helper'

# TODO: make better!!!
describe VersionCake::ExtractionStrategy do
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require './spec/spec_helper'
require 'spec_helper'

describe VersionCake::HttpAcceptParameterStrategy do
let(:strategy) { VersionCake::HttpAcceptParameterStrategy.new }
Expand Down
2 changes: 1 addition & 1 deletion spec/unit/strategies/http_header_strategy_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require './spec/spec_helper'
require 'spec_helper'

describe VersionCake::HttpHeaderStrategy do
let(:strategy) { VersionCake::HttpHeaderStrategy.new }
Expand Down
2 changes: 1 addition & 1 deletion spec/unit/strategies/path_parameter_strategy_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require './spec/spec_helper'
require 'spec_helper'

describe VersionCake::PathParameterStrategy do
let(:strategy) { VersionCake::PathParameterStrategy.new }
Expand Down
2 changes: 1 addition & 1 deletion spec/unit/strategies/query_parameter_strategy_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require './spec/spec_helper'
require 'spec_helper'

describe VersionCake::QueryParameterStrategy do
let(:strategy) { VersionCake::QueryParameterStrategy.new }
Expand Down
2 changes: 1 addition & 1 deletion spec/unit/strategies/request_parameter_strategy_spec.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
require './spec/spec_helper'
require 'spec_helper'

describe VersionCake::RequestParameterStrategy do
let(:strategy) { VersionCake::RequestParameterStrategy.new }
Expand Down
26 changes: 14 additions & 12 deletions spec/unit/versioned_request_spec.rb
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
require './spec/spec_helper'
require 'spec_helper'

describe VersionCake::VersionedRequest do
context 'a request' do
before do
allow_any_instance_of(described_class).to \
receive(:apply_strategies).and_return(request_version)
let(:request) do
request = double query_parameters: { }
request.query_parameters[:api_version] = request_version if request_version
request
end
subject(:versioned_request) { VersionCake::VersionedRequest.new double }
let(:config) do
config = VersionCake::Configuration.new
config.supported_version_numbers = (2..3)
config
end
subject(:versioned_request) { VersionCake::VersionedRequest.new request, config }

context 'with a supported version' do
let(:request_version) { 2 }
Expand All @@ -30,17 +36,13 @@
end

context 'with a deprecated version' do
before do
allow_any_instance_of(VersionCake::Configuration).to \
receive(:supports_version?).and_return(false)
end
let(:request_version) { 2 }
let(:request_version) { 1 }

it{ expect(versioned_request.is_latest_version?).to be_falsey }
end

context 'when the version is overriden by a parameter' do
subject(:versioned_request) { VersionCake::VersionedRequest.new(double, 8) }
context 'when the version is overridden by a parameter' do
subject(:versioned_request) { VersionCake::VersionedRequest.new(request, config, 8) }
let(:request_version) { 2 }

it { expect(versioned_request.version).to eq 8 }
Expand Down

0 comments on commit bc49509

Please sign in to comment.