debian-mirror-gitlab/spec/services/packages/rpm/repository_metadata/build_filelist_xml_service_spec.rb
2023-01-12 18:35:48 +00:00

55 lines
1.4 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Packages::Rpm::RepositoryMetadata::BuildFilelistXmlService do
describe '#execute' do
subject { described_class.new(data).execute }
include_context 'with rpm package data'
let(:data) { xml_update_params }
let(:file_xpath) { "//package/file" }
it 'adds all file nodes' do
result = subject
expect(result.xpath(file_xpath).count).to eq(data[:files].count)
end
describe 'setting type attribute' do
context 'when all files are directories' do
let(:dirs) do
3.times.map { generate_directory } # rubocop:disable Performance/TimesMap
end
let(:files) do
5.times.map { FFaker::Filesystem.file_name(dirs.sample) } # rubocop:disable Performance/TimesMap
end
let(:data) do
{
directories: dirs.map { "#{_1}/" }, # Add trailing slash as in original package
files: dirs + files
}
end
it 'set dir type attribute for directories only' do
result = subject
result.xpath(file_xpath).each do |tag|
if dirs.include?(tag.content)
expect(tag.attributes['type']&.value).to eq('dir')
else
expect(tag.attributes['type']).to be_nil
end
end
end
end
def generate_directory
FFaker::Lorem.words(3).join('/')
end
end
end
end