summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/github_import/importer/pull_request_merged_by_importer_spec.rb
blob: 2999dc5bb417ad765c2dda83d8f714e14657a433 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 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) }
  let(:project) { merge_request.project }
  let(:created_at) { Time.new(2017, 1, 1, 12, 00).utc }
  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,
      created_at: created_at,
      merged_by: double(id: 999, login: 'merger')
    )
  end

  subject { described_class.new(pull_request, project, client_double) }

  it 'assigns the merged by user when mapped' do
    merge_user = create(:user, email: 'merger@email.com')

    subject.execute

    expect(merge_request.metrics.reload.merged_by).to eq(merge_user)
  end

  it 'adds a note referencing the merger user when the user cannot be mapped' do
    expect { subject.execute }
      .to change(Note, :count).by(1)
      .and not_change(merge_request, :updated_at)

    last_note = merge_request.notes.last

    expect(last_note.note).to eq("*Merged by: merger*")
    expect(last_note.created_at).to eq(created_at)
    expect(last_note.author).to eq(project.creator)
  end
end