Commit b43fc4b6 authored by Samuel E. Giddins's avatar Samuel E. Giddins

[Downloader::Request] Add specs

parent ff593f96
......@@ -45,7 +45,7 @@ module Pod
def initialize(spec: nil, released: false, name: nil, params: false, head: false)
@released_pod = released
@spec = spec
@params = spec ? spec.source.dup : params
@params = spec ? (spec.source && spec.source.dup) : params
@name = spec ? spec.name : name
@head = head
......@@ -63,7 +63,7 @@ module Pod
#
def slug(name: self.name, params: self.params)
if released_pod?
checksum = spec.checksum && '-' << spec.checksum.limit(5)
checksum = spec.checksum && '-' << spec.checksum[0, 5]
"Release/#{name}/#{spec.version}#{checksum}"
else
opts = params.to_a.sort_by(&:first).map { |k, v| "#{k}=#{v}" }.join('-').gsub(/(#{Regexp.escape File::SEPARATOR})+/, '+')
......@@ -79,9 +79,9 @@ module Pod
#
def validate!
raise ArgumentError, 'Requires a name' unless name
raise ArgumentError, 'Must give a spec for a released download request' if released_pod? && !spec
raise ArgumentError, 'Requires a version if released' if released_pod? && !spec.version
raise ArgumentError, 'Requires params' unless params
raise ArgumentError, 'Must give a spec for a released download request' if released_pod? && !spec
end
end
end
......
require File.expand_path('../../../spec_helper', __FILE__)
module Pod
describe Downloader::Request do
before do
@spec = fixture_spec('banana-lib/BananaLib.podspec')
end
#--------------------------------------#
describe 'Validation' do
it "validates request initialization" do
options = [
{ :spec => nil, :name => nil },
{ :spec => nil, :released => true },
{ :spec => @spec.dup.tap { |s| s.source = nil }, :released => true },
]
options.each do |params|
should.raise(ArgumentError) { Downloader::Request.new(params) }
end
end
end
#--------------------------------------#
describe 'when released_pod? == true' do
before do
@request = Downloader::Request.new(:spec => @spec, :released => true)
end
it 'returns the spec' do
@request.spec.should == @spec
end
it 'returns whether the pod is released' do
@request.released_pod?.should == true
end
it 'returns the name of the spec' do
@request.name.should == @spec.name
end
it 'returns the source of the spec' do
@request.params.should == @spec.source
end
it 'returns the slug' do
@request.slug.should == 'Release/BananaLib/1.0-e2fb5'
end
end
#--------------------------------------#
describe 'when released_pod? == false' do
before do
@request = Downloader::Request.new(:name => 'BananaLib', :params => @spec.source)
end
it 'returns the spec' do
@request.spec.should.be.nil?
end
it 'returns whether the pod is released' do
@request.released_pod?.should == false
end
it 'returns the name of the spec' do
@request.name.should == 'BananaLib'
end
it 'returns the source of the spec' do
@request.params.should == @spec.source
end
it 'returns the slug' do
@request.slug.should == 'External/BananaLib/git=http:+banana-corp.local+banana-lib.git-tag=v1.0'
end
end
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment