blob: b388d52133e68c8f64bd96edf4f1170c377ba6ad [file] [log] [blame]
require File.expand_path('../../../spec_helper', __FILE__)
module Pod
describe Command::Update do
it 'tells the user that no Podfile was found in the project dir' do
exception = lambda { run_command('update', '--no-repo-update') }.should.raise Informative
exception.message.should.include "No `Podfile' found in the project directory."
end
describe 'with Podfile' do
extend SpecHelper::TemporaryRepos
before do
file = temporary_directory + 'Podfile'
File.open(file, 'w') do |f|
f.puts('platform :ios')
f.puts('pod "BananaLib", "1.0"')
end
end
def generate_lockfile
podfile = Podfile.new do
platform :ios
pod 'BananaLib', '1.0'
end
specs = [
Specification.new do |s|
s.name = 'BananaLib'
s.version = '1.0'
end,
]
external_sources = {}
Lockfile.generate(podfile, specs, external_sources).write_to_disk(temporary_directory + 'Podfile.lock')
end
describe 'updates of the spec repos' do
before do
Installer.any_instance.expects(:install!)
end
it 'updates the spec repos by default' do
Installer.any_instance.expects(:repo_update=).with(true)
run_command('update')
end
it "doesn't update the spec repos if that option was given" do
Installer.any_instance.expects(:repo_update=).with(false)
run_command('update', '--no-repo-update')
end
end
describe 'installs the updates' do
before do
Installer.any_instance.expects(:install!)
end
describe 'all pods' do
it 'updates all pods' do
Installer.any_instance.expects(:update=).with(true)
run_command('update')
end
end
describe 'selected pods' do
before do
generate_lockfile
end
it 'updates selected pods' do
Installer.any_instance.expects(:update=).with(:pods => ['BananaLib'])
run_command('update', 'BananaLib')
end
end
describe 'selected repo' do
before do
generate_lockfile
set_up_test_repo
config.repos_dir = SpecHelper.tmp_repos_path
spec1 = (fixture('spec-repos') + 'test_repo/JSONKit/1.4/JSONKit.podspec').read
spec2 = (fixture('spec-repos') + 'test_repo/BananaLib/1.0/BananaLib.podspec').read
File.open(temporary_directory + 'JSONKit.podspec', 'w') { |f| f.write(spec1) }
File.open(temporary_directory + 'BananaLib.podspec', 'w') { |f| f.write(spec2) }
end
it 'updates pods in repo and in lockfile' do
Installer.any_instance.expects(:update=).with(:pods => ['BananaLib'])
run_command('update', '--sources=master')
end
end
end
it 'tells the user that no Lockfile was found in the project dir' do
exception = lambda { run_command('update', 'BananaLib', '--no-repo-update') }.should.raise Informative
exception.message.should.include "No `Podfile.lock' found in the project directory"
end
describe 'tells the user that the Pods cannot be updated unless they are installed' do
before do
generate_lockfile
end
it 'for a single missing Pod' do
should.raise Informative do
run_command('update', 'Reachability', '--no-repo-update')
end.message.should.include 'The `Reachability` Pod is not ' \
'installed and cannot be updated'
end
it 'for multiple missing Pods' do
exception = lambda { run_command('update', 'Reachability', 'BananaLib2', '--no-repo-update') }.should.raise Informative
exception.message.should.include 'Pods `Reachability`, `BananaLib2` are not installed and cannot be updated'
end
end
end
end
end