diff options
Diffstat (limited to 'spec/services/packages/nuget/search_service_spec.rb')
-rw-r--r-- | spec/services/packages/nuget/search_service_spec.rb | 150 |
1 files changed, 93 insertions, 57 deletions
diff --git a/spec/services/packages/nuget/search_service_spec.rb b/spec/services/packages/nuget/search_service_spec.rb index d163e7087e4..db758dc6672 100644 --- a/spec/services/packages/nuget/search_service_spec.rb +++ b/spec/services/packages/nuget/search_service_spec.rb @@ -1,8 +1,12 @@ # frozen_string_literal: true + require 'spec_helper' RSpec.describe Packages::Nuget::SearchService do - let_it_be(:project) { create(:project) } + let_it_be(:user) { create(:user) } + let_it_be(:group) { create(:group) } + let_it_be(:subgroup) { create(:group, parent: group) } + let_it_be(:project) { create(:project, namespace: subgroup) } let_it_be(:package_a) { create(:nuget_package, project: project, name: 'DummyPackageA') } let_it_be(:packages_b) { create_list(:nuget_package, 5, project: project, name: 'DummyPackageB') } let_it_be(:packages_c) { create_list(:nuget_package, 5, project: project, name: 'DummyPackageC') } @@ -16,94 +20,126 @@ RSpec.describe Packages::Nuget::SearchService do let(:options) { { include_prerelease_versions: include_prerelease_versions, per_page: per_page, padding: padding } } describe '#execute' do - subject { described_class.new(project, search_term, options).execute } + subject { described_class.new(user, target, search_term, options).execute } - it { expect_search_results 3, package_a, packages_b, packages_c } + shared_examples 'handling all the conditions' do + it { expect_search_results 3, package_a, packages_b, packages_c } - context 'with a smaller per page count' do - let(:per_page) { 2 } + context 'with a smaller per page count' do + let(:per_page) { 2 } - it { expect_search_results 3, package_a, packages_b } - end + it { expect_search_results 3, package_a, packages_b } + end - context 'with 0 per page count' do - let(:per_page) { 0 } + context 'with 0 per page count' do + let(:per_page) { 0 } - it { expect_search_results 3, [] } - end + it { expect_search_results 3, [] } + end - context 'with a negative per page count' do - let(:per_page) { -1 } + context 'with a negative per page count' do + let(:per_page) { -1 } - it { expect { subject }.to raise_error(ArgumentError, 'negative per_page') } - end + it { expect { subject }.to raise_error(ArgumentError, 'negative per_page') } + end - context 'with a padding' do - let(:padding) { 2 } + context 'with a padding' do + let(:padding) { 2 } - it { expect_search_results 3, packages_c } - end + it { expect_search_results 3, packages_c } + end - context 'with a too big padding' do - let(:padding) { 5 } + context 'with a too big padding' do + let(:padding) { 5 } - it { expect_search_results 3, [] } - end + it { expect_search_results 3, [] } + end - context 'with a negative padding' do - let(:padding) { -1 } + context 'with a negative padding' do + let(:padding) { -1 } - it { expect { subject }.to raise_error(ArgumentError, 'negative padding') } - end + it { expect { subject }.to raise_error(ArgumentError, 'negative padding') } + end - context 'with search term' do - let(:search_term) { 'umm' } + context 'with search term' do + let(:search_term) { 'umm' } - it { expect_search_results 3, package_a, packages_b, packages_c } - end + it { expect_search_results 3, package_a, packages_b, packages_c } + end - context 'with nil search term' do - let(:search_term) { nil } + context 'with nil search term' do + let(:search_term) { nil } - it { expect_search_results 4, package_a, packages_b, packages_c, package_d } - end + it { expect_search_results 4, package_a, packages_b, packages_c, package_d } + end - context 'with empty search term' do - let(:search_term) { '' } + context 'with empty search term' do + let(:search_term) { '' } - it { expect_search_results 4, package_a, packages_b, packages_c, package_d } - end + it { expect_search_results 4, package_a, packages_b, packages_c, package_d } + end - context 'with prefix search term' do - let(:search_term) { 'dummy' } + context 'with prefix search term' do + let(:search_term) { 'dummy' } - it { expect_search_results 3, package_a, packages_b, packages_c } - end + it { expect_search_results 3, package_a, packages_b, packages_c } + end + + context 'with suffix search term' do + let(:search_term) { 'packagec' } + + it { expect_search_results 1, packages_c } + end + + context 'with pre release packages' do + let_it_be(:package_e) { create(:nuget_package, project: project, name: 'DummyPackageE', version: '3.2.1-alpha') } + + context 'including them' do + it { expect_search_results 4, package_a, packages_b, packages_c, package_e } + end + + context 'excluding them' do + let(:include_prerelease_versions) { false } - context 'with suffix search term' do - let(:search_term) { 'packagec' } + it { expect_search_results 3, package_a, packages_b, packages_c } - it { expect_search_results 1, packages_c } + context 'when mixed with release versions' do + let_it_be(:package_e_release) { create(:nuget_package, project: project, name: 'DummyPackageE', version: '3.2.1') } + + it { expect_search_results 4, package_a, packages_b, packages_c, package_e_release } + end + end + end end - context 'with pre release packages' do - let_it_be(:package_e) { create(:nuget_package, project: project, name: 'DummyPackageE', version: '3.2.1-alpha') } + context 'with project' do + let(:target) { project } - context 'including them' do - it { expect_search_results 4, package_a, packages_b, packages_c, package_e } + before do + project.add_developer(user) end - context 'excluding them' do - let(:include_prerelease_versions) { false } + it_behaves_like 'handling all the conditions' + end - it { expect_search_results 3, package_a, packages_b, packages_c } + context 'with subgroup' do + let(:target) { subgroup } - context 'when mixed with release versions' do - let_it_be(:package_e_release) { create(:nuget_package, project: project, name: 'DummyPackageE', version: '3.2.1') } + before do + subgroup.add_developer(user) + end - it { expect_search_results 4, package_a, packages_b, packages_c, package_e_release } - end + it_behaves_like 'handling all the conditions' + end + + context 'with group' do + let(:target) { group } + + before do + group.add_developer(user) end + + it_behaves_like 'handling all the conditions' end def expect_search_results(total_count, *results) |