diff options
Diffstat (limited to 'spec/support/shared_examples/bulk_imports/visibility_level_examples.rb')
-rw-r--r-- | spec/support/shared_examples/bulk_imports/visibility_level_examples.rb | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/spec/support/shared_examples/bulk_imports/visibility_level_examples.rb b/spec/support/shared_examples/bulk_imports/visibility_level_examples.rb new file mode 100644 index 00000000000..40e9726f89c --- /dev/null +++ b/spec/support/shared_examples/bulk_imports/visibility_level_examples.rb @@ -0,0 +1,124 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'visibility level settings' do + context 'when public' do + let(:data) { { 'visibility' => 'public' } } + + context 'when destination is a public group' do + let(:destination_group) { create(:group, :public) } + + it 'sets visibility level to public' do + expect(transformed_data[:visibility_level]).to eq(Gitlab::VisibilityLevel::PUBLIC) + end + end + + context 'when destination is a internal group' do + let(:destination_group) { create(:group, :internal) } + + it 'sets visibility level to internal' do + expect(transformed_data[:visibility_level]).to eq(Gitlab::VisibilityLevel::INTERNAL) + end + end + + context 'when destination is a private group' do + let(:destination_group) { create(:group, :private) } + + it 'sets visibility level to private' do + expect(transformed_data[:visibility_level]).to eq(Gitlab::VisibilityLevel::PRIVATE) + end + end + + context 'when destination is blank' do + let(:destination_namespace) { '' } + + it 'sets visibility level to public' do + expect(transformed_data[:visibility_level]).to eq(Gitlab::VisibilityLevel::PUBLIC) + end + end + end + + context 'when internal' do + let(:data) { { 'visibility' => 'internal' } } + + context 'when destination is a public group' do + let(:destination_group) { create(:group, :public) } + + it 'sets visibility level to internal' do + expect(transformed_data[:visibility_level]).to eq(Gitlab::VisibilityLevel::INTERNAL) + end + end + + context 'when destination is a internal group' do + let(:destination_group) { create(:group, :internal) } + + it 'sets visibility level to internal' do + expect(transformed_data[:visibility_level]).to eq(Gitlab::VisibilityLevel::INTERNAL) + end + end + + context 'when destination is a private group' do + let(:destination_group) { create(:group, :private) } + + it 'sets visibility level to private' do + expect(transformed_data[:visibility_level]).to eq(Gitlab::VisibilityLevel::PRIVATE) + end + end + + context 'when destination is blank' do + let(:destination_namespace) { '' } + + it 'sets visibility level to internal' do + expect(transformed_data[:visibility_level]).to eq(Gitlab::VisibilityLevel::INTERNAL) + end + + context 'when visibility level is restricted' do + it 'sets visibility level to private' do + stub_application_setting( + restricted_visibility_levels: [ + Gitlab::VisibilityLevel::INTERNAL, + Gitlab::VisibilityLevel::PUBLIC + ] + ) + + expect(transformed_data[:visibility_level]).to eq(Gitlab::VisibilityLevel::PRIVATE) + end + end + end + end + + context 'when private' do + let(:data) { { 'visibility' => 'private' } } + + context 'when destination is a public group' do + let(:destination_group) { create(:group, :public) } + + it 'sets visibility level to private' do + expect(transformed_data[:visibility_level]).to eq(Gitlab::VisibilityLevel::PRIVATE) + end + end + + context 'when destination is a internal group' do + let(:destination_group) { create(:group, :internal) } + + it 'sets visibility level to private' do + expect(transformed_data[:visibility_level]).to eq(Gitlab::VisibilityLevel::PRIVATE) + end + end + + context 'when destination is a private group' do + let(:destination_group) { create(:group, :private) } + + it 'sets visibility level to private' do + expect(transformed_data[:visibility_level]).to eq(Gitlab::VisibilityLevel::PRIVATE) + end + end + + context 'when destination is blank' do + let(:destination_namespace) { '' } + + it 'sets visibility level to private' do + expect(transformed_data[:visibility_level]).to eq(Gitlab::VisibilityLevel::PRIVATE) + end + end + end +end |