summaryrefslogtreecommitdiff
path: root/spec/services/issues/fetch_referenced_merge_requests_service_spec.rb
blob: 4e58179f45fe19c14498342faeca8abaa107e460 (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
require 'spec_helper.rb'

describe Issues::FetchReferencedMergeRequestsService do
  let(:project) { create(:project) }
  let(:issue) { create(:issue, project: project) }
  let(:other_project) { create(:project) }

  let(:mr) { create(:merge_request, source_project: project, target_project: project, id: 2)}
  let(:other_mr) { create(:merge_request, source_project: other_project, target_project: other_project, id: 1)}

  let(:user) { create(:user) }
  let(:service) { described_class.new(project, user) }

  context 'with mentioned merge requests' do
    it 'returns a list of sorted merge requests' do
      allow(issue).to receive(:referenced_merge_requests).with(user).and_return([other_mr, mr])

      mrs, closed_by_mrs = service.execute(issue)

      expect(mrs).to match_array([mr, other_mr])
      expect(closed_by_mrs).to match_array([])
    end
  end

  context 'with closed-by merge requests' do
    it 'returns a list of sorted merge requests' do
      allow(issue).to receive(:closed_by_merge_requests).with(user).and_return([other_mr, mr])

      mrs, closed_by_mrs = service.execute(issue)

      expect(mrs).to match_array([])
      expect(closed_by_mrs).to match_array([mr, other_mr])
    end
  end
end