summaryrefslogtreecommitdiff
path: root/spec/support/shared_examples/bulk_imports/visibility_level_examples.rb
diff options
context:
space:
mode:
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.rb124
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