From ddd4b3af9fa95bb228c1dd40da8d9ea35072970a Mon Sep 17 00:00:00 2001 From: Aleksei Lipniagov Date: Thu, 14 Nov 2019 20:29:48 +0300 Subject: [PATCH 1/2] Fix ci_cd_settings Import, project_feature spec --- lib/gitlab/import_export/relation_factory.rb | 7 ++++++- .../fixtures/lib/gitlab/import_export/complex/project.json | 5 ++++- .../lib/gitlab/import_export/project_tree_restorer_spec.rb | 4 ++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/gitlab/import_export/relation_factory.rb b/lib/gitlab/import_export/relation_factory.rb index ae6b3c161cea08..5d907300d687b2 100644 --- a/lib/gitlab/import_export/relation_factory.rb +++ b/lib/gitlab/import_export/relation_factory.rb @@ -327,7 +327,12 @@ def legacy_trigger? end def find_or_create_object! - return relation_class.find_or_create_by(project_id: @project.id) if UNIQUE_RELATIONS.include?(@relation_name) + if UNIQUE_RELATIONS.include?(@relation_name) + unique_relation_object = relation_class.find_or_create_by(project_id: @project.id) + unique_relation_object.assign_attributes(parsed_relation_hash) + + return unique_relation_object + end # Can't use IDs as validation exists calling `group` or `project` attributes finder_hash = parsed_relation_hash.tap do |hash| diff --git a/spec/fixtures/lib/gitlab/import_export/complex/project.json b/spec/fixtures/lib/gitlab/import_export/complex/project.json index 31805a54f2f339..a973db380142a9 100644 --- a/spec/fixtures/lib/gitlab/import_export/complex/project.json +++ b/spec/fixtures/lib/gitlab/import_export/complex/project.json @@ -7209,7 +7209,7 @@ } ], "project_feature": { - "builds_access_level": 0, + "builds_access_level": 20, "created_at": "2014-12-26T09:26:45.000Z", "id": 2, "issues_access_level": 0, @@ -7257,6 +7257,9 @@ "image_url": "http://www.example.com" } ], + "ci_cd_settings": { + "group_runners_enabled": false + }, "boards": [ { "id": 29, diff --git a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb index 459b1eed1a73f3..333217e2929a5a 100644 --- a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb +++ b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb @@ -220,6 +220,10 @@ expect(award_emoji.map(&:name)).to contain_exactly('thumbsup', 'coffee') end + it 'restores `ci_cd_settings` : `group_runners_enabled` setting' do + expect(@project.ci_cd_settings.group_runners_enabled?).to eq(false) + end + it 'restores the correct service' do expect(CustomIssueTrackerService.first).not_to be_nil end -- GitLab From 1875991c0dbcd7f6d4384c15d1661b0928962a45 Mon Sep 17 00:00:00 2001 From: Aleksei Lipniagov Date: Mon, 18 Nov 2019 15:33:54 +0300 Subject: [PATCH 2/2] Improve Import/Export test for `project_feature` --- .../lib/gitlab/import_export/complex/project.json | 10 +++++----- .../gitlab/import_export/project_tree_restorer_spec.rb | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/spec/fixtures/lib/gitlab/import_export/complex/project.json b/spec/fixtures/lib/gitlab/import_export/complex/project.json index a973db380142a9..8dc91b05f4d24d 100644 --- a/spec/fixtures/lib/gitlab/import_export/complex/project.json +++ b/spec/fixtures/lib/gitlab/import_export/complex/project.json @@ -7209,15 +7209,15 @@ } ], "project_feature": { - "builds_access_level": 20, + "builds_access_level": 10, "created_at": "2014-12-26T09:26:45.000Z", "id": 2, - "issues_access_level": 0, - "merge_requests_access_level": 20, + "issues_access_level": 10, + "merge_requests_access_level": 10, "project_id": 4, - "snippets_access_level": 20, + "snippets_access_level": 10, "updated_at": "2016-09-23T11:58:28.000Z", - "wiki_access_level": 20 + "wiki_access_level": 10 }, "custom_attributes": [ { diff --git a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb index 333217e2929a5a..64a648ca1f84e9 100644 --- a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb +++ b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb @@ -48,11 +48,11 @@ it 'restore correct project features' do project = Project.find_by_path('project') - expect(project.project_feature.issues_access_level).to eq(ProjectFeature::DISABLED) - expect(project.project_feature.builds_access_level).to eq(ProjectFeature::ENABLED) - expect(project.project_feature.snippets_access_level).to eq(ProjectFeature::ENABLED) - expect(project.project_feature.wiki_access_level).to eq(ProjectFeature::ENABLED) - expect(project.project_feature.merge_requests_access_level).to eq(ProjectFeature::ENABLED) + expect(project.project_feature.issues_access_level).to eq(ProjectFeature::PRIVATE) + expect(project.project_feature.builds_access_level).to eq(ProjectFeature::PRIVATE) + expect(project.project_feature.snippets_access_level).to eq(ProjectFeature::PRIVATE) + expect(project.project_feature.wiki_access_level).to eq(ProjectFeature::PRIVATE) + expect(project.project_feature.merge_requests_access_level).to eq(ProjectFeature::PRIVATE) end it 'has the project description' do -- GitLab