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

issue_link_spec.rb « models « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: d69a3f2954c77457bba27a3ec32ed0be71dff728 (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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe IssueLink do
  it_behaves_like 'issuable link' do
    let_it_be_with_reload(:issuable_link) { create(:issue_link) }
    let_it_be(:issuable) { create(:issue) }
    let(:issuable_class) { 'Issue' }
    let(:issuable_link_factory) { :issue_link }
  end

  describe '.issuable_type' do
    it { expect(described_class.issuable_type).to eq(:issue) }
  end

  describe 'Scopes' do
    let_it_be(:issue1) { create(:issue) }
    let_it_be(:issue2) { create(:issue) }

    describe '.for_source_issue' do
      it 'includes linked issues for source issue' do
        source_issue = create(:issue)
        issue_link_1 = create(:issue_link, source: source_issue, target: issue1)
        issue_link_2 = create(:issue_link, source: source_issue, target: issue2)

        result = described_class.for_source_issue(source_issue)

        expect(result).to contain_exactly(issue_link_1, issue_link_2)
      end
    end

    describe '.for_target_issue' do
      it 'includes linked issues for target issue' do
        target_issue = create(:issue)
        issue_link_1 = create(:issue_link, source: issue1, target: target_issue)
        issue_link_2 = create(:issue_link, source: issue2, target: target_issue)

        result = described_class.for_target_issue(target_issue)

        expect(result).to contain_exactly(issue_link_1, issue_link_2)
      end
    end

    describe '.for_issues' do
      let_it_be(:issue) { create(:issue) }
      let_it_be(:source_link) { create(:issue_link, source: issue, target: issue1) }
      let_it_be(:target_link) { create(:issue_link, source: issue2, target: issue) }

      it 'includes links when issue is source' do
        expect(described_class.for_issues(issue, issue1)).to contain_exactly(source_link)
      end

      it 'includes links when issue is target' do
        expect(described_class.for_issues(issue, issue2)).to contain_exactly(target_link)
      end
    end
  end
end