Skip to content

Commit

Permalink
Add VCR support for playing back tests offline
Browse files Browse the repository at this point in the history
  • Loading branch information
Nullreff committed Nov 13, 2013
1 parent eb751a3 commit 08278da
Show file tree
Hide file tree
Showing 16 changed files with 596 additions and 126 deletions.
2 changes: 2 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,6 @@ group :development, :test do
gem 'rake', '~> 10.1.0'
gem 'coveralls', :require => false
gem 'fakefs', '~> 0.4.2', :require => 'fakefs/safe'
gem 'webmock', '~> 1.15.2'
gem 'vcr', '~> 2.7.0'
end
3 changes: 3 additions & 0 deletions lib/bukin/bukget.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ def initialize(url = URL, server = SERVER)
end

def find_resource(name, version = VERSION, match = FileMatch.any)
raise "Name is nil" if name.nil?
raise "Version is nil" if version.nil?

info = Bukin.try_get_json("#{@url}/3/plugins/#{CGI.escape(@server)}/"\
"#{CGI.escape(name)}/#{CGI.escape(version)}")

Expand Down
2 changes: 1 addition & 1 deletion lib/bukin/jenkins.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def find_resource(name, version = LATEST, match = FileMatch.any)
raise NoDownloadError.new(name, version) unless download_info

download = "#{base_path}/artifact/#{download_info['relativePath']}"
Resource.new(name, info['number'], download)
Resource.new(name, info['number'].to_s, download)
end

def self.correct_version_format?(version)
Expand Down
92 changes: 16 additions & 76 deletions spec/bukget_spec.rb
Original file line number Diff line number Diff line change
@@ -1,99 +1,39 @@
require 'spec_helper'
require 'bukin'

ONE_RESOURCE = {
'versions' => [
{
'version' => '1.0.0',
'download' => 'http://download/resource.jar',
'filename' => 'resource.jar'
}
]
}

TWO_RESOURCES = {
'versions' => [
{
'version' => '1.0.0',
'download' => 'http://download/resource1.jar',
'filename' => 'resource1.jar'
},
{
'version' => '1.0.0',
'download' => 'http://download/resource2.jar',
'filename' => 'resource2.jar'
}
]
}

TWO_FILETYPES = {
'versions' => [
{
'version' => '1.0.0',
'download' => 'http://download/resource.zip',
'filename' => 'resource.zip'
},
{
'version' => '1.0.0',
'download' => 'http://download/resource.jar',
'filename' => 'resource.jar'
}
]
}
describe Bukin::Bukget, :vcr do
before do
@name = 'worldedit'
@version = '5.5.8'
@missing_name = 'missing-name'
end

describe Bukin::Bukget do
it 'installs the latest version of a resource' do
Bukin.should_receive(:get_json)
.with('http://api.bukget.org/3/plugins/bukkit/resource/release')
.and_return(ONE_RESOURCE)

bukget = Bukin::Bukget.new
resource = bukget.find_resource('resource')
resource = bukget.find_resource(@name)

resource.name.should == 'resource'
resource.version.should == '1.0.0'
resource.download.should == 'http://download/resource.jar'
resource.name.should == @name
end

it 'installs a specific version of a resource' do
Bukin.should_receive(:get_json)
.with('http://api.bukget.org/3/plugins/bukkit/resource/1.0.0')
.and_return(ONE_RESOURCE)

bukget = Bukin::Bukget.new
resource = bukget.find_resource('resource', '1.0.0')
resource = bukget.find_resource(@name, @version)

resource.name.should == 'resource'
resource.version.should == '1.0.0'
resource.download.should == 'http://download/resource.jar'
resource.name.should == @name
resource.version.should == @version
end

it 'returns an error when asked for a resource that doese not exist' do
Bukin.should_receive(:get_json) { raise OpenURI::HTTPError.new(nil, nil) }

bukget = Bukin::Bukget.new
expect { bukget.find_resource('') }.to raise_error(Bukin::NoDownloadError)
end

it 'chooses the first version when there are multiple versions' do
Bukin.should_receive(:get_json)
.with('http://api.bukget.org/3/plugins/bukkit/resource/1.0.0')
.and_return(TWO_RESOURCES)

bukget = Bukin::Bukget.new
resource = bukget.find_resource('resource', '1.0.0')

resource.download.should == 'http://download/resource1.jar'
expect do
bukget.find_resource(@missing_name)
end.to raise_error(Bukin::NoDownloadError)
end

it 'chooses the version with a .jar file when there are multiple versions' do
Bukin.should_receive(:get_json)
.with('http://api.bukget.org/3/plugins/bukkit/resource/1.0.0')
.and_return(TWO_FILETYPES)

bukget = Bukin::Bukget.new
resource = bukget.find_resource('resource', '1.0.0')
resource = bukget.find_resource(@name, @version)

resource.download.should == 'http://download/resource.jar'
resource.download.should == 'http://dev.bukkit.org/media/files/739/931/worldedit-5.5.8.jar'
end
end

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 08278da

Please sign in to comment.