25 lines
956 B
Ruby
25 lines
956 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
RSpec.shared_examples 'model with Debian distributions' do
|
||
|
let(:container_type) { subject.class.name.downcase }
|
||
|
let!(:distributions) { create_list("debian_#{container_type}_distribution", 2, :with_file, container: subject) }
|
||
|
let!(:components) { create_list("debian_#{container_type}_component", 5, distribution: distributions[0]) }
|
||
|
let!(:component_files) { create_list("debian_#{container_type}_component_file", 3, component: components[0]) }
|
||
|
|
||
|
it 'removes distribution files on removal' do
|
||
|
distribution_file_paths = distributions.map do |distribution|
|
||
|
[distribution.file.path] +
|
||
|
distribution.component_files.map do |component_file|
|
||
|
component_file.file.path
|
||
|
end
|
||
|
end.flatten
|
||
|
|
||
|
expect { subject.destroy! }
|
||
|
.to change {
|
||
|
distribution_file_paths.select do |path|
|
||
|
File.exist? path
|
||
|
end.length
|
||
|
}.from(distribution_file_paths.length).to(0)
|
||
|
end
|
||
|
end
|