2021-02-22 17:27:13 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
RSpec.describe Gitlab::GithubImport::Importer::PullRequestMergedByImporter, :clean_gitlab_redis_cache do
|
|
|
|
let_it_be(:merge_request) { create(:merged_merge_request) }
|
2021-04-29 21:17:54 +05:30
|
|
|
|
2021-02-22 17:27:13 +05:30
|
|
|
let(:project) { merge_request.project }
|
2021-04-17 20:07:23 +05:30
|
|
|
let(:merged_at) { Time.new(2017, 1, 1, 12, 00).utc }
|
2021-02-22 17:27:13 +05:30
|
|
|
let(:client_double) { double(user: double(id: 999, login: 'merger', email: 'merger@email.com')) }
|
|
|
|
|
|
|
|
let(:pull_request) do
|
|
|
|
instance_double(
|
|
|
|
Gitlab::GithubImport::Representation::PullRequest,
|
|
|
|
iid: merge_request.iid,
|
2021-04-17 20:07:23 +05:30
|
|
|
merged_at: merged_at,
|
2021-02-22 17:27:13 +05:30
|
|
|
merged_by: double(id: 999, login: 'merger')
|
|
|
|
)
|
|
|
|
end
|
|
|
|
|
|
|
|
subject { described_class.new(pull_request, project, client_double) }
|
|
|
|
|
2021-04-17 20:07:23 +05:30
|
|
|
context 'when the merger user can be mapped' do
|
|
|
|
it 'assigns the merged by user when mapped' do
|
|
|
|
merge_user = create(:user, email: 'merger@email.com')
|
2021-02-22 17:27:13 +05:30
|
|
|
|
2021-04-17 20:07:23 +05:30
|
|
|
subject.execute
|
2021-02-22 17:27:13 +05:30
|
|
|
|
2021-04-17 20:07:23 +05:30
|
|
|
metrics = merge_request.metrics.reload
|
|
|
|
expect(metrics.merged_by).to eq(merge_user)
|
|
|
|
expect(metrics.merged_at).to eq(merged_at)
|
|
|
|
end
|
2021-02-22 17:27:13 +05:30
|
|
|
end
|
|
|
|
|
2021-04-17 20:07:23 +05:30
|
|
|
context 'when the merger user cannot be mapped to a gitlab user' do
|
|
|
|
it 'adds a note referencing the merger user' do
|
|
|
|
expect { subject.execute }
|
|
|
|
.to change(Note, :count).by(1)
|
|
|
|
.and not_change(merge_request, :updated_at)
|
|
|
|
|
|
|
|
metrics = merge_request.metrics.reload
|
|
|
|
expect(metrics.merged_by).to be_nil
|
|
|
|
expect(metrics.merged_at).to eq(merged_at)
|
|
|
|
|
|
|
|
last_note = merge_request.notes.last
|
|
|
|
expect(last_note.note).to eq("*Merged by: merger at 2017-01-01 12:00:00 UTC*")
|
|
|
|
expect(last_note.created_at).to eq(merged_at)
|
|
|
|
expect(last_note.author).to eq(project.creator)
|
|
|
|
end
|
2021-02-22 17:27:13 +05:30
|
|
|
end
|
|
|
|
end
|