summaryrefslogtreecommitdiff
path: root/spec/services/packages/debian/find_or_create_package_service_spec.rb
diff options
context:
space:
mode:
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.rb21
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