diff options
Diffstat (limited to 'spec/support/shared_examples/services/packages_shared_examples.rb')
-rw-r--r-- | spec/support/shared_examples/services/packages_shared_examples.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/spec/support/shared_examples/services/packages_shared_examples.rb b/spec/support/shared_examples/services/packages_shared_examples.rb index fa307d2a9a6..4e34c191306 100644 --- a/spec/support/shared_examples/services/packages_shared_examples.rb +++ b/spec/support/shared_examples/services/packages_shared_examples.rb @@ -40,6 +40,19 @@ RSpec.shared_examples 'assigns the package creator' do end end +RSpec.shared_examples 'assigns status to package' do + context 'with status param' do + let_it_be(:status) { 'hidden' } + let(:params) { super().merge(status: status) } + + it 'assigns the status to the package' do + package = subject + + expect(package.status).to eq(status) + end + end +end + RSpec.shared_examples 'returns packages' do |container_type, user_type| context "for #{user_type}" do before do @@ -190,6 +203,7 @@ RSpec.shared_examples 'filters on each package_type' do |is_project: false| let_it_be(:package7) { create(:generic_package, project: project) } let_it_be(:package8) { create(:golang_package, project: project) } let_it_be(:package9) { create(:debian_package, project: project) } + let_it_be(:package9) { create(:rubygems_package, project: project) } Packages::Package.package_types.keys.each do |package_type| context "for package type #{package_type}" do @@ -262,3 +276,41 @@ RSpec.shared_examples 'with versionless packages' do end end end + +RSpec.shared_examples 'with status param' do + context 'hidden packages' do + let!(:hidden_package) { create(:maven_package, :hidden, project: project) } + + shared_examples 'not including the hidden package' do + it 'does not return the package' do + subject + + expect(json_response.map { |package| package['id'] }).not_to include(hidden_package.id) + end + end + + context 'no status param' do + it_behaves_like 'not including the hidden package' + end + + context 'with hidden status param' do + let(:params) { super().merge(status: 'hidden') } + + it 'returns the package' do + subject + + expect(json_response.map { |package| package['id'] }).to include(hidden_package.id) + end + end + end + + context 'bad status param' do + let(:params) { super().merge(status: 'invalid') } + + it 'returns the package' do + subject + + expect(response).to have_gitlab_http_status(:bad_request) + end + end +end |