diff options
Diffstat (limited to 'spec/finders/packages')
-rw-r--r-- | spec/finders/packages/pypi/packages_finder_spec.rb | 94 |
1 files changed, 63 insertions, 31 deletions
diff --git a/spec/finders/packages/pypi/packages_finder_spec.rb b/spec/finders/packages/pypi/packages_finder_spec.rb index 1a44fb99009..3957eb188da 100644 --- a/spec/finders/packages/pypi/packages_finder_spec.rb +++ b/spec/finders/packages/pypi/packages_finder_spec.rb @@ -12,59 +12,91 @@ RSpec.describe Packages::Pypi::PackagesFinder do let_it_be(:package3) { create(:pypi_package, name: package2.name, project: project) } let_it_be(:package4) { create(:pypi_package, name: package2.name, project: project2) } - let(:package_name) { package2.name } + shared_examples 'when no package is found' do + context 'non-existing package' do + let(:package_name) { 'none' } - describe 'execute' do - subject { described_class.new(user, scope, package_name: package_name).execute } + it { expect(subject).to be_empty } + end + end - shared_examples 'when no package is found' do - context 'non-existing package' do - let(:package_name) { 'none' } + shared_examples 'when package_name param is a non-normalized name' do + context 'non-existing package' do + let(:package_name) { package2.name.upcase.tr('-', '.') } - it { expect(subject).to be_empty } - end + it { expect(subject).to be_empty } end + end - shared_examples 'when package_name param is a non-normalized name' do - context 'non-existing package' do - let(:package_name) { package2.name.upcase.tr('-', '.') } + describe '#execute' do + subject { described_class.new(user, scope, package_name: package_name).execute } - it { expect(subject).to be_empty } + context 'with package name param' do + let(:package_name) { package2.name } + + context 'within a project' do + let(:scope) { project } + + it { is_expected.to contain_exactly(package2, package3) } + + it_behaves_like 'when no package is found' + it_behaves_like 'when package_name param is a non-normalized name' end - end - context 'within a project' do - let(:scope) { project } + context 'within a group' do + let(:scope) { group } - it { is_expected.to contain_exactly(package2, package3) } + it { expect(subject).to be_empty } - it_behaves_like 'when no package is found' - it_behaves_like 'when package_name param is a non-normalized name' - end + context 'user with access to only one project' do + before do + project2.add_developer(user) + end - context 'within a group' do - let(:scope) { group } + it { is_expected.to contain_exactly(package4) } - it { expect(subject).to be_empty } + it_behaves_like 'when no package is found' + it_behaves_like 'when package_name param is a non-normalized name' - context 'user with access to only one project' do - before do - project2.add_developer(user) + context 'user with access to multiple projects' do + before do + project.add_developer(user) + end + + it { is_expected.to contain_exactly(package2, package3, package4) } + end end + end + end - it { is_expected.to contain_exactly(package4) } + context 'without package_name param' do + let(:package_name) { nil } - it_behaves_like 'when no package is found' - it_behaves_like 'when package_name param is a non-normalized name' + context 'within a group' do + let(:scope) { group } - context ' user with access to multiple projects' do + context 'user with access to only one project' do before do - project.add_developer(user) + project2.add_developer(user) end - it { is_expected.to contain_exactly(package2, package3, package4) } + it { is_expected.to contain_exactly(package4) } + + context 'user with access to multiple projects' do + before do + project.add_developer(user) + end + + it { is_expected.to contain_exactly(package1, package2, package3, package4) } + end end end + + context 'within a project' do + let(:scope) { project } + + it { is_expected.to contain_exactly(package1, package2, package3) } + end end end end |