diff options
Diffstat (limited to 'spec/services/packages/nuget/sync_metadatum_service_spec.rb')
-rw-r--r-- | spec/services/packages/nuget/sync_metadatum_service_spec.rb | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/spec/services/packages/nuget/sync_metadatum_service_spec.rb b/spec/services/packages/nuget/sync_metadatum_service_spec.rb new file mode 100644 index 00000000000..32093c48b76 --- /dev/null +++ b/spec/services/packages/nuget/sync_metadatum_service_spec.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Packages::Nuget::SyncMetadatumService do + let_it_be(:package, reload: true) { create(:nuget_package) } + let_it_be(:metadata) do + { + project_url: 'https://test.org/test', + license_url: 'https://test.org/MIT', + icon_url: 'https://test.org/icon.png' + } + end + + let(:service) { described_class.new(package, metadata) } + let(:nuget_metadatum) { package.nuget_metadatum } + + describe '#execute' do + subject { service.execute } + + RSpec.shared_examples 'saving metadatum attributes' do + it 'saves nuget metadatum' do + subject + + metadata.each do |attribute, expected_value| + expect(nuget_metadatum.send(attribute)).to eq(expected_value) + end + end + end + + it 'creates a nuget metadatum' do + expect { subject } + .to change { package.nuget_metadatum.present? }.from(false).to(true) + end + + it_behaves_like 'saving metadatum attributes' + + context 'with exisiting nuget metadatum' do + let_it_be(:package) { create(:nuget_package, :with_metadatum) } + + it 'does not create a nuget metadatum' do + expect { subject }.to change { ::Packages::Nuget::Metadatum.count }.by(0) + end + + it_behaves_like 'saving metadatum attributes' + + context 'with empty metadata' do + let_it_be(:metadata) { {} } + + it 'destroys the nuget metadatum' do + expect { subject } + .to change { package.reload.nuget_metadatum.present? }.from(true).to(false) + end + end + end + end +end |