diff --git a/lib/bulk_imports/projects/graphql/get_project_query.rb b/lib/bulk_imports/projects/graphql/get_project_query.rb index a2d7094d570b3f490885e9f859ef9fcd7f97b80f..a2cba2fcfc0fda055befed7027086a1cafee3162 100644 --- a/lib/bulk_imports/projects/graphql/get_project_query.rb +++ b/lib/bulk_imports/projects/graphql/get_project_query.rb @@ -11,6 +11,7 @@ def to_s query($full_path: ID!) { project(fullPath: $full_path) { id + name visibility created_at: createdAt } diff --git a/lib/bulk_imports/projects/transformers/project_attributes_transformer.rb b/lib/bulk_imports/projects/transformers/project_attributes_transformer.rb index d36b0af88291e3ffcf7bb648a38a7aadb2e288bf..72b32ad5b3b90009d32314eb0e308e030c2f4bd2 100644 --- a/lib/bulk_imports/projects/transformers/project_attributes_transformer.rb +++ b/lib/bulk_imports/projects/transformers/project_attributes_transformer.rb @@ -16,7 +16,7 @@ def transform(context, data) namespace = Namespace.find_by_full_path(entity.destination_namespace) path = normalize_path(entity.destination_slug) - project[:name] = uniquify(namespace, entity.destination_slug, :name) + project[:name] = uniquify(namespace, data['name'], :name) project[:path] = uniquify(namespace, path, :path) project[:created_at] = data['created_at'] project[:import_type] = PROJECT_IMPORT_TYPE diff --git a/spec/lib/bulk_imports/projects/transformers/project_attributes_transformer_spec.rb b/spec/lib/bulk_imports/projects/transformers/project_attributes_transformer_spec.rb index d64a0114f7b424894a6cffa547e86d33fff01b94..40ad4ee8be52f98fdeecda98d5ab0b919504b10c 100644 --- a/spec/lib/bulk_imports/projects/transformers/project_attributes_transformer_spec.rb +++ b/spec/lib/bulk_imports/projects/transformers/project_attributes_transformer_spec.rb @@ -5,7 +5,6 @@ RSpec.describe BulkImports::Projects::Transformers::ProjectAttributesTransformer, feature_category: :importers do describe '#transform' do let_it_be(:user) { create(:user) } - let_it_be(:project) { create(:project, name: 'My Source Project') } let_it_be(:bulk_import) { create(:bulk_import, user: user) } let(:entity) do @@ -25,6 +24,7 @@ let(:context) { BulkImports::Pipeline::Context.new(tracker) } let(:data) do { + 'name' => 'My Project', 'visibility' => 'private', 'created_at' => '2016-11-18T09:29:42.634Z' } @@ -32,8 +32,9 @@ subject(:transformed_data) { described_class.new.transform(context, data) } - it 'transforms name to destination slug' do - expect(transformed_data[:name]).to eq(entity.destination_slug) + it 'uniquifies project name' do + create(:project, group: destination_group, name: 'My Project') + expect(transformed_data[:name]).to eq('My Project_1') end it 'adds path as normalized name' do @@ -110,6 +111,12 @@ end it 'makes the name unique by appending a counter' do + data = { + 'visibility' => 'private', + 'created_at' => '2016-11-18T09:29:42.634Z', + 'name' => 'Destination-Project-Name' + } + transformed_data = described_class.new.transform(context, data) expect(transformed_data['name']).to eq('Destination-Project-Name_2') end