98 lines
3.5 KiB
Ruby
98 lines
3.5 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe CreateEmptyMetadataJob do
|
|
|
|
before { stub_symlink_methods }
|
|
subject { BuildLists::CleanBuildrootJob }
|
|
|
|
context 'create_empty_metadata' do
|
|
let(:job) { CreateEmptyMetadataJob.new }
|
|
let(:platform) { FactoryGirl.build(:platform) }
|
|
let(:path) { platform.path }
|
|
|
|
it 'creates metadata for rhel platform' do
|
|
platform.distrib_type = 'rhel'
|
|
job.send :create_empty_metadata, platform, path.dup
|
|
|
|
expect(Dir["#{ path }/repodata/*"]).to be_present
|
|
expect(Dir["#{ path }/media_info/*"]).to be_empty
|
|
end
|
|
|
|
it 'creates metadata for mdv platform' do
|
|
platform.distrib_type = 'mdv'
|
|
job.send :create_empty_metadata, platform, path.dup
|
|
|
|
expect(Dir["#{ path }/media_info/*"]).to be_present
|
|
expect(Dir["#{ path }/repodata/*"]).to be_empty
|
|
end
|
|
|
|
it 'does nothing for other platforms' do
|
|
platform.distrib_type = 'test'
|
|
job.send :create_empty_metadata, platform, path.dup
|
|
|
|
expect(Dir["#{ path }/media_info/*"]).to be_empty
|
|
expect(Dir["#{ path }/repodata/*"]).to be_empty
|
|
end
|
|
end
|
|
|
|
context 'create_empty_metadata_for_repository' do
|
|
let(:job) { CreateEmptyMetadataJob.new }
|
|
let(:repository) { FactoryGirl.build(:repository) }
|
|
let(:platform) { repository.platform }
|
|
|
|
before do
|
|
allow(job).to receive(:arch_names).and_return(%w(i586 x86_64))
|
|
end
|
|
|
|
it 'repository of main platform' do
|
|
paths = <<-STR
|
|
#{ platform.path }/repository/i586/#{ repository.name }/release
|
|
#{ platform.path }/repository/i586/#{ repository.name }/updates
|
|
#{ platform.path }/repository/x86_64/#{ repository.name }/release
|
|
#{ platform.path }/repository/x86_64/#{ repository.name }/updates
|
|
STR
|
|
paths.split("\n").each do |path|
|
|
expect(job).to receive(:create_empty_metadata).with(platform, path.strip)
|
|
end
|
|
|
|
job.send :create_empty_metadata_for_repository, repository
|
|
end
|
|
|
|
it 'repository of personal platform' do
|
|
platform.platform_type = Platform::TYPE_PERSONAL
|
|
Platform.stub_chain(:main, :opened).and_return([platform])
|
|
paths = <<-STR
|
|
#{ platform.path }/repository/#{ platform.name }/i586/#{ repository.name }/release
|
|
#{ platform.path }/repository/#{ platform.name }/i586/#{ repository.name }/updates
|
|
#{ platform.path }/repository/#{ platform.name }/x86_64/#{ repository.name }/release
|
|
#{ platform.path }/repository/#{ platform.name }/x86_64/#{ repository.name }/updates
|
|
STR
|
|
paths.split("\n").each do |path|
|
|
expect(job).to receive(:create_empty_metadata).with(platform, path.strip)
|
|
end
|
|
|
|
job.send :create_empty_metadata_for_repository, repository
|
|
end
|
|
end
|
|
|
|
context 'create_empty_metadata_for_platform' do
|
|
let(:platform) { FactoryGirl.build(:platform, id: 123) }
|
|
let(:repository1) { FactoryGirl.build(:personal_repository) }
|
|
let(:repository2) { FactoryGirl.build(:personal_repository) }
|
|
let(:job) { CreateEmptyMetadataJob.new('Platform', 123) }
|
|
|
|
before do
|
|
Platform.stub_chain(:main, :opened, :find).and_return(platform)
|
|
Repository.stub_chain(:joins, :where, :find_each).and_yield(repository1).and_yield(repository2)
|
|
end
|
|
|
|
it 'creates metadata for all personal repositories' do
|
|
expect(job).to receive(:create_empty_metadata_for_repository).with(repository1)
|
|
expect(job).to receive(:create_empty_metadata_for_repository).with(repository2)
|
|
|
|
job.send :create_empty_metadata_for_platform
|
|
end
|
|
end
|
|
|
|
end
|