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 | 42 |
1 files changed, 42 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 70d29b4bc99..fa307d2a9a6 100644 --- a/spec/support/shared_examples/services/packages_shared_examples.rb +++ b/spec/support/shared_examples/services/packages_shared_examples.rb @@ -220,3 +220,45 @@ RSpec.shared_examples 'package workhorse uploads' do end end end + +RSpec.shared_examples 'with versionless packages' do + context 'with versionless package' do + let!(:versionless_package) { create(:maven_package, project: project, version: nil) } + + shared_examples 'not including the package' do + it 'does not return the package' do + subject + + expect(json_response.map { |package| package['id'] }).not_to include(versionless_package.id) + end + end + + it_behaves_like 'not including the package' + + context 'with include_versionless param' do + context 'with true include_versionless param' do + [true, 'true', 1, '1'].each do |param| + context "for param #{param}" do + let(:params) { super().merge(include_versionless: param) } + + it 'returns the package' do + subject + + expect(json_response.map { |package| package['id'] }).to include(versionless_package.id) + end + end + end + end + + context 'with falsy include_versionless param' do + [false, '', nil, 'false', 0, '0'].each do |param| + context "for param #{param}" do + let(:params) { super().merge(include_versionless: param) } + + it_behaves_like 'not including the package' + end + end + end + end + end +end |