diff options
Diffstat (limited to 'spec/models/packages/package_file_spec.rb')
-rw-r--r-- | spec/models/packages/package_file_spec.rb | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/spec/models/packages/package_file_spec.rb b/spec/models/packages/package_file_spec.rb new file mode 100644 index 00000000000..7758ed4a500 --- /dev/null +++ b/spec/models/packages/package_file_spec.rb @@ -0,0 +1,69 @@ +# frozen_string_literal: true +require 'spec_helper' + +RSpec.describe Packages::PackageFile, type: :model do + describe 'relationships' do + it { is_expected.to belong_to(:package) } + it { is_expected.to have_one(:conan_file_metadatum) } + end + + describe 'validations' do + it { is_expected.to validate_presence_of(:package) } + end + + context 'with package filenames' do + let_it_be(:package_file1) { create(:package_file, :xml, file_name: 'FooBar') } + let_it_be(:package_file2) { create(:package_file, :xml, file_name: 'ThisIsATest') } + + describe '.with_file_name' do + let(:filename) { 'FooBar' } + + subject { described_class.with_file_name(filename) } + + it { is_expected.to match_array([package_file1]) } + end + + describe '.with_file_name_like' do + let(:filename) { 'foobar' } + + subject { described_class.with_file_name_like(filename) } + + it { is_expected.to match_array([package_file1]) } + end + end + + it_behaves_like 'UpdateProjectStatistics' do + subject { build(:package_file, :jar, size: 42) } + + before do + allow_any_instance_of(Packages::PackageFileUploader).to receive(:size).and_return(42) + end + end + + describe '.with_conan_package_reference' do + let_it_be(:non_matching_package_file) { create(:package_file, :nuget) } + let_it_be(:metadatum) { create(:conan_file_metadatum, :package_file) } + let_it_be(:reference) { metadatum.conan_package_reference} + + it 'returns matching packages' do + expect(described_class.with_conan_package_reference(reference)) + .to eq([metadatum.package_file]) + end + end + + describe '#update_file_metadata callback' do + let_it_be(:package_file) { build(:package_file, :nuget, file_store: nil, size: nil) } + + subject { package_file.save! } + + it 'updates metadata columns' do + expect(package_file) + .to receive(:update_file_metadata) + .and_call_original + + expect { subject } + .to change { package_file.file_store }.from(nil).to(::Packages::PackageFileUploader::Store::LOCAL) + .and change { package_file.size }.from(nil).to(3513) + end + end +end |