summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/branch_push_merge_commit_analyzer_spec.rb
blob: 45e182358dfeb36164087b9661c8a32b0f237dc8 (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
42
43
# frozen_string_literal: true

require 'spec_helper'

describe Gitlab::BranchPushMergeCommitAnalyzer do
  let(:project) { create(:project, :repository) }
  let(:oldrev) { 'merge-commit-analyze-before' }
  let(:newrev) { 'merge-commit-analyze-after' }
  let(:commits) { project.repository.commits_between(oldrev, newrev).reverse }

  subject { described_class.new(commits) }

  describe '#get_merge_commit' do
    let(:expected_merge_commits) do
      {
        '646ece5cfed840eca0a4feb21bcd6a81bb19bda3' => '646ece5cfed840eca0a4feb21bcd6a81bb19bda3',
        '29284d9bcc350bcae005872d0be6edd016e2efb5' => '29284d9bcc350bcae005872d0be6edd016e2efb5',
        '5f82584f0a907f3b30cfce5bb8df371454a90051' => '29284d9bcc350bcae005872d0be6edd016e2efb5',
        '8a994512e8c8f0dfcf22bb16df6e876be7a61036' => '29284d9bcc350bcae005872d0be6edd016e2efb5',
        '689600b91aabec706e657e38ea706ece1ee8268f' => '29284d9bcc350bcae005872d0be6edd016e2efb5',
        'db46a1c5a5e474aa169b6cdb7a522d891bc4c5f9' => 'db46a1c5a5e474aa169b6cdb7a522d891bc4c5f9'
      }
    end

    it 'returns correct merge commit SHA for each commit' do
      expected_merge_commits.each do |commit, merge_commit|
        expect(subject.get_merge_commit(commit)).to eq(merge_commit)
      end
    end

    context 'when relevant_commit_ids is provided' do
      let(:relevant_commit_id) { '8a994512e8c8f0dfcf22bb16df6e876be7a61036' }
      subject { described_class.new(commits, relevant_commit_ids: [relevant_commit_id]) }

      it 'returns correct merge commit' do
        expected_merge_commits.each do |commit, merge_commit|
          subject = described_class.new(commits, relevant_commit_ids: [commit])
          expect(subject.get_merge_commit(commit)).to eq(merge_commit)
        end
      end
    end
  end
end