Skip to content

Commit

Permalink
Add spec for BukkitDl
Browse files Browse the repository at this point in the history
  • Loading branch information
Nullreff committed Nov 22, 2013
1 parent 2571fdf commit 71397b5
Show file tree
Hide file tree
Showing 9 changed files with 554 additions and 7 deletions.
14 changes: 8 additions & 6 deletions lib/bukin/bukkit_dl.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,20 @@ class BukkitDl
VERSION = 'latest-rb'
URL = 'http://dl.bukkit.org'
GOOD_VERSIONS = "'latest', 'latest-rb', 'latest-beta', 'latest-dev', "\
"'git-0fd25c4' or 'build-2912'"
"'git-0fd25c4' or 'build-2912'"

def initialize(url = URL)
@url = url
end

def find_resource(name, version = VERSION)
unless self.class.correct_version_format?(version)
def find_resource(name, version = nil)
version ||= VERSION

unless correct_version_format?(version)
raise VersionError.new(name, version, GOOD_VERSIONS)
end

info = Bukget.try_get_json(
info = Bukin.try_get_json(
"#{@url}/api/1.0/downloads/projects/"\
"#{CGI.escape(name)}/view/#{CGI.escape(version)}/")

Expand All @@ -30,9 +32,9 @@ def find_resource(name, version = VERSION)
Resource.new(name, "build-#{info['build_number']}", download)
end

def self.correct_version_format?(version)
def correct_version_format?(version)
'latest' == version ||
/^latest-{rb|beta|dev}$/ =~ version ||
/^latest-(rb|beta|dev)$/ =~ version ||
/^git-[0-9a-f]{7,40}$/ =~ version ||
/^build-[0-9]+$/ =~ version
end
Expand Down
3 changes: 2 additions & 1 deletion spec/bukget_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
before do
@name = 'worldedit'
@version = '5.5.8'
@download = 'http://dev.bukkit.org/media/files/739/931/worldedit-5.5.8.jar'
@missing_name = 'missing-name'
@missing_version = '0.0.0'
@missing_file = 'missing-file.jar'
Expand Down Expand Up @@ -52,6 +53,6 @@
provider = Bukin::Bukget.new
resource = provider.find_resource(@name, @version)

resource.download.should == 'http://dev.bukkit.org/media/files/739/931/worldedit-5.5.8.jar'
resource.download.should == @download
end
end
52 changes: 52 additions & 0 deletions spec/bukkit_dl_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
require 'spec_helper'
require 'bukin'

describe Bukin::BukkitDl, :vcr do
before do
@name = 'craftbukkit'
@version = 'build-2912'
@download = 'http://dl.bukkit.org/downloads/craftbukkit/get/'\
'02381_1.6.4-R1.0/craftbukkit.jar'
@missing_name = 'missing-name'
@missing_version = 'build-0000'
@missing_file = 'missing-file.jar'
@latest_version = 'build-2918'
end

it 'installs the latest version of a resource' do
provider = Bukin::BukkitDl.new
resource = provider.find_resource(@name)

resource.name.should == @name
resource.version.should == @latest_version
end

it 'installs a specific version of a resource' do
provider = Bukin::BukkitDl.new
resource = provider.find_resource(@name, @version)

resource.name.should == @name
resource.version.should == @version
end

it 'returns an error when asked for a resource that doese not exist' do
provider = Bukin::BukkitDl.new
expect do
provider.find_resource(@missing_name)
end.to raise_error(Bukin::NoDownloadError)
end

it 'returns an error when asked for a version that doese not exist' do
provider = Bukin::BukkitDl.new
expect do
provider.find_resource(@name, @missing_version)
end.to raise_error(Bukin::NoDownloadError)
end

it 'chooses the first file when there are multiple files' do
provider = Bukin::BukkitDl.new
resource = provider.find_resource(@name, @version)

resource.download.should == @download
end
end

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

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

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

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

Loading

0 comments on commit 71397b5

Please sign in to comment.