diff --git a/lib/versioncake/strategies/extraction_strategy.rb b/lib/versioncake/strategies/extraction_strategy.rb index 8cc0eff..dd0b06e 100644 --- a/lib/versioncake/strategies/extraction_strategy.rb +++ b/lib/versioncake/strategies/extraction_strategy.rb @@ -9,7 +9,7 @@ def extract(request) version elsif version.is_a?(String) && /[0-9]+/.match(version) version.to_i - elsif version.nil? # no version was found + elsif version_blank?(version) nil else raise Exception, "Invalid format for version number." @@ -20,6 +20,10 @@ def version_key VersionCake.config.version_key end + def version_blank?(version) + version.nil? || (version.is_a?(String) && version.length == 0) + end + # Execute should return a number or a numeric string if it successfully finds a version. # If no version is found, nil should be returned. Any other results returned will raise # an exception. diff --git a/lib/versioncake/version_context_service.rb b/lib/versioncake/version_context_service.rb index f33ae53..00ea8db 100644 --- a/lib/versioncake/version_context_service.rb +++ b/lib/versioncake/version_context_service.rb @@ -18,7 +18,7 @@ def create_context_from_request(raw_request) request.execute result = if request.failed - :invalid_version + :version_invalid else check_version(resource, request.version) end diff --git a/spec/unit/version_context_service_spec.rb b/spec/unit/version_context_service_spec.rb index 3f10871..2ea3b9b 100644 --- a/spec/unit/version_context_service_spec.rb +++ b/spec/unit/version_context_service_spec.rb @@ -67,8 +67,24 @@ it { expect(context.version).to eq nil } it { expect(context.resource).to eq resource_user } it { expect(context.result).to eq :no_version } + + context 'when the version is blank' do + let(:request) { double(version: '', path: 'users/123') } + + it { expect(context.version).to eq nil } + it { expect(context.resource).to eq resource_user } + it { expect(context.result).to eq :no_version } + end end end + + context 'for an invalid version' do + let(:request) { double(version: 'asdasd', path: 'users/123') } + + it { expect(context.version).to eq nil } + it { expect(context.resource).to eq resource_user } + it { expect(context.result).to eq :version_invalid } + end end describe '#create_context' do