Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-01-06 21:08:01 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-01-06 21:08:01 +0300
commit5eb11b697d7ee280b0b5c2ff9a1850a3b5e9b7e3 (patch)
tree78f8dceccd65aec28bb4cb130cac3ff7e3a75c87 /spec/lib/gitlab/github_import
parent506159637da758f448818b834f8482238a9eb4eb (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib/gitlab/github_import')
-rw-r--r--spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb174
1 files changed, 79 insertions, 95 deletions
diff --git a/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb b/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb
index 877b4d4bbaf..bffae9e2ba0 100644
--- a/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb
+++ b/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb
@@ -50,6 +50,10 @@ describe Gitlab::GithubImport::Importer::PullRequestImporter, :clean_gitlab_redi
.and_return([mr, false])
expect(importer)
+ .to receive(:set_merge_request_assignees)
+ .with(mr)
+
+ expect(importer)
.to receive(:insert_git_data)
.with(mr, false)
@@ -75,11 +79,6 @@ describe Gitlab::GithubImport::Importer::PullRequestImporter, :clean_gitlab_redi
.to receive(:author_id_for)
.with(pull_request)
.and_return([user.id, true])
-
- allow(importer.user_finder)
- .to receive(:assignee_id_for)
- .with(pull_request)
- .and_return(user.id)
end
it 'imports the pull request with the pull request author as the merge request author' do
@@ -97,7 +96,6 @@ describe Gitlab::GithubImport::Importer::PullRequestImporter, :clean_gitlab_redi
state_id: 3,
milestone_id: milestone.id,
author_id: user.id,
- assignee_id: user.id,
created_at: created_at,
updated_at: updated_at
},
@@ -114,20 +112,72 @@ describe Gitlab::GithubImport::Importer::PullRequestImporter, :clean_gitlab_redi
expect(mr).to be_instance_of(MergeRequest)
expect(exists).to eq(false)
end
+
+ context 'when the source and target branch are identical' do
+ before do
+ allow(pull_request).to receive_messages(
+ source_repository_id: pull_request.target_repository_id,
+ source_branch: 'master'
+ )
+ end
+
+ it 'uses a generated source branch name for the merge request' do
+ expect(importer)
+ .to receive(:insert_and_return_id)
+ .with(
+ {
+ iid: 42,
+ title: 'My Pull Request',
+ description: 'This is my pull request',
+ source_project_id: project.id,
+ target_project_id: project.id,
+ source_branch: 'master-42',
+ target_branch: 'master',
+ state_id: 3,
+ milestone_id: milestone.id,
+ author_id: user.id,
+ created_at: created_at,
+ updated_at: updated_at
+ },
+ project.merge_requests
+ )
+ .and_call_original
+
+ importer.create_merge_request
+ end
+ end
+
+ context 'when the import fails due to a foreign key error' do
+ it 'does not raise any errors' do
+ expect(importer)
+ .to receive(:insert_and_return_id)
+ .and_raise(ActiveRecord::InvalidForeignKey, 'invalid foreign key')
+
+ expect { importer.create_merge_request }.not_to raise_error
+ end
+ end
+
+ context 'when the merge request already exists' do
+ it 'returns the existing merge request' do
+ mr1, exists1 = importer.create_merge_request
+ mr2, exists2 = importer.create_merge_request
+
+ expect(mr2).to eq(mr1)
+ expect(exists1).to eq(false)
+ expect(exists2).to eq(true)
+ end
+ end
end
context 'when the author could not be found' do
- it 'imports the pull request with the project creator as the merge request author' do
+ before do
allow(importer.user_finder)
.to receive(:author_id_for)
.with(pull_request)
.and_return([project.creator_id, false])
+ end
- allow(importer.user_finder)
- .to receive(:assignee_id_for)
- .with(pull_request)
- .and_return(user.id)
-
+ it 'imports the pull request with the project creator as the merge request author' do
expect(importer)
.to receive(:insert_and_return_id)
.with(
@@ -142,7 +192,6 @@ describe Gitlab::GithubImport::Importer::PullRequestImporter, :clean_gitlab_redi
state_id: 3,
milestone_id: milestone.id,
author_id: project.creator_id,
- assignee_id: user.id,
created_at: created_at,
updated_at: updated_at
},
@@ -153,93 +202,33 @@ describe Gitlab::GithubImport::Importer::PullRequestImporter, :clean_gitlab_redi
importer.create_merge_request
end
end
+ end
- context 'when the source and target branch are identical' do
- it 'uses a generated source branch name for the merge request' do
- allow(importer.user_finder)
- .to receive(:author_id_for)
- .with(pull_request)
- .and_return([user.id, true])
-
- allow(importer.user_finder)
- .to receive(:assignee_id_for)
- .with(pull_request)
- .and_return(user.id)
-
- allow(pull_request)
- .to receive(:source_repository_id)
- .and_return(pull_request.target_repository_id)
-
- allow(pull_request)
- .to receive(:source_branch)
- .and_return('master')
+ describe '#set_merge_request_assignees' do
+ let_it_be(:merge_request) { create(:merge_request) }
- expect(importer)
- .to receive(:insert_and_return_id)
- .with(
- {
- iid: 42,
- title: 'My Pull Request',
- description: 'This is my pull request',
- source_project_id: project.id,
- target_project_id: project.id,
- source_branch: 'master-42',
- target_branch: 'master',
- state_id: 3,
- milestone_id: milestone.id,
- author_id: user.id,
- assignee_id: user.id,
- created_at: created_at,
- updated_at: updated_at
- },
- project.merge_requests
- )
- .and_call_original
+ before do
+ allow(importer.user_finder)
+ .to receive(:assignee_id_for)
+ .with(pull_request)
+ .and_return(user_id)
- importer.create_merge_request
- end
+ importer.set_merge_request_assignees(merge_request)
end
- context 'when the import fails due to a foreign key error' do
- it 'does not raise any errors' do
- allow(importer.user_finder)
- .to receive(:author_id_for)
- .with(pull_request)
- .and_return([user.id, true])
-
- allow(importer.user_finder)
- .to receive(:assignee_id_for)
- .with(pull_request)
- .and_return(user.id)
-
- expect(importer)
- .to receive(:insert_and_return_id)
- .and_raise(ActiveRecord::InvalidForeignKey, 'invalid foreign key')
+ context 'when pull request has an assignee' do
+ let(:user_id) { user.id }
- expect { importer.create_merge_request }.not_to raise_error
+ it 'sets merge request assignees' do
+ expect(merge_request.assignee_ids).to eq [user.id]
end
end
- context 'when the merge request already exists' do
- before do
- allow(importer.user_finder)
- .to receive(:author_id_for)
- .with(pull_request)
- .and_return([user.id, true])
-
- allow(importer.user_finder)
- .to receive(:assignee_id_for)
- .with(pull_request)
- .and_return(user.id)
- end
-
- it 'returns the existing merge request' do
- mr1, exists1 = importer.create_merge_request
- mr2, exists2 = importer.create_merge_request
+ context 'when pull request does not have any assignees' do
+ let(:user_id) { nil }
- expect(mr2).to eq(mr1)
- expect(exists1).to eq(false)
- expect(exists2).to eq(true)
+ it 'does not set merge request assignees' do
+ expect(merge_request.assignee_ids).to eq []
end
end
end
@@ -255,11 +244,6 @@ describe Gitlab::GithubImport::Importer::PullRequestImporter, :clean_gitlab_redi
.to receive(:author_id_for)
.with(pull_request)
.and_return([user.id, true])
-
- allow(importer.user_finder)
- .to receive(:assignee_id_for)
- .with(pull_request)
- .and_return(user.id)
end
it 'does not create the source branch if merge request is merged' do