diff options
Diffstat (limited to 'spec/services/packages/debian/find_or_create_package_service_spec.rb')
-rw-r--r-- | spec/services/packages/debian/find_or_create_package_service_spec.rb | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/spec/services/packages/debian/find_or_create_package_service_spec.rb b/spec/services/packages/debian/find_or_create_package_service_spec.rb index 36f96008582..c2ae3d56864 100644 --- a/spec/services/packages/debian/find_or_create_package_service_spec.rb +++ b/spec/services/packages/debian/find_or_create_package_service_spec.rb @@ -4,13 +4,17 @@ require 'spec_helper' RSpec.describe Packages::Debian::FindOrCreatePackageService, feature_category: :package_registry do let_it_be(:distribution) { create(:debian_project_distribution, :with_suite) } + let_it_be(:distribution2) { create(:debian_project_distribution, :with_suite) } + let_it_be(:project) { distribution.project } let_it_be(:user) { create(:user) } let(:service) { described_class.new(project, user, params) } + let(:params2) { params } + let(:service2) { described_class.new(project, user, params2) } let(:package) { subject.payload[:package] } - let(:package2) { service.execute.payload[:package] } + let(:package2) { service2.execute.payload[:package] } shared_examples 'find or create Debian package' do it 'returns the same object' do @@ -55,11 +59,24 @@ RSpec.describe Packages::Debian::FindOrCreatePackageService, feature_category: : it_behaves_like 'find or create Debian package' end + context 'with existing package in another distribution' do + let(:params) { { name: 'foo', version: '1.0+debian', distribution_name: distribution.codename } } + let(:params2) { { name: 'foo', version: '1.0+debian', distribution_name: distribution2.codename } } + + it 'raises ArgumentError' do + expect { subject }.to change { ::Packages::Package.count }.by(1) + + expect { package2 }.to raise_error(ArgumentError, "Debian package #{package.name} #{package.version} exists " \ + "in distribution #{distribution.codename}") + end + end + context 'with non-existing distribution' do let(:params) { { name: 'foo', version: '1.0+debian', distribution_name: 'not-existing' } } it 'raises ActiveRecord::RecordNotFound' do - expect { package }.to raise_error(ActiveRecord::RecordNotFound) + expect { package }.to raise_error(ActiveRecord::RecordNotFound, + /^Couldn't find Packages::Debian::ProjectDistribution/) end end end |