reference_unfolder_spec.rb 1.52 KB
Newer Older
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
require 'spec_helper'

describe Gitlab::Gfm::ReferenceUnfolder do
  let(:text) { 'some text' }
  let(:old_project) { create(:project) }
  let(:new_project) { create(:project) }

  describe '#unfold' do
    subject { described_class.new(text, old_project).unfold(new_project) }

    context 'multiple issues and merge requests referenced' do
      let!(:issue_first) { create(:issue, project: old_project) }
      let!(:issue_second) { create(:issue, project: old_project) }
      let!(:merge_request) { create(:merge_request, source_project: old_project) }

      context 'plain text description' do
        let(:text) { 'Description that references #1, #2 and !1' }

        it { is_expected.to include issue_first.to_reference(new_project) }
        it { is_expected.to include issue_second.to_reference(new_project) }
        it { is_expected.to include merge_request.to_reference(new_project) }
      end

      context 'description with ignored elements' do
        let(:text) do
          "Hi. This references #1, but not `#2`\n" +
          '<pre>and not !1</pre>'
        end

        it { is_expected.to include issue_first.to_reference(new_project) }
        it { is_expected.to_not include issue_second.to_reference(new_project) }
        it { is_expected.to_not include merge_request.to_reference(new_project) }
      end

      context 'description ambigous elements' do
        let(:url) { 'http://gitlab.com/#1' }
        let(:text) { "This references #1, but not #{url}" }

        it { is_expected.to include url }
      end
    end
  end
end