summaryrefslogtreecommitdiff
path: root/spec/lib/banzai/filter/abstract_link_filter_spec.rb
blob: 1ee31a603e470f09654db0c53e1ffb9fec28e44f (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
require 'spec_helper'

describe Banzai::Filter::AbstractReferenceFilter do
  let(:project) { create(:empty_project) }

  describe '#references_per_project' do
    it 'returns a Hash containing references grouped per project paths' do
      doc = Nokogiri::HTML.fragment("#1 #{project.to_reference}#2")
      filter = described_class.new(doc, project: project)

      expect(filter).to receive(:object_class).exactly(4).times.and_return(Issue)
      expect(filter).to receive(:object_sym).twice.and_return(:issue)

      refs = filter.references_per_project

      expect(refs).to be_an_instance_of(Hash)
      expect(refs[project.to_reference]).to eq(Set.new(%w[1 2]))
    end
  end

  describe '#projects_per_reference' do
    it 'returns a Hash containing projects grouped per project paths' do
      doc = Nokogiri::HTML.fragment('')
      filter = described_class.new(doc, project: project)

      expect(filter).to receive(:references_per_project).
        and_return({ project.path_with_namespace => Set.new(%w[1]) })

      expect(filter.projects_per_reference).
        to eq({ project.path_with_namespace => project })
    end
  end

  describe '#find_projects_for_paths' do
    it 'returns a list of Projects for a list of paths' do
      doc = Nokogiri::HTML.fragment('')
      filter = described_class.new(doc, project: project)

      expect(filter.find_projects_for_paths([project.path_with_namespace])).
        to eq([project])
    end
  end

  describe '#current_project_path' do
    it 'returns the path of the current project' do
      doc = Nokogiri::HTML.fragment('')
      filter = described_class.new(doc, project: project)

      expect(filter.current_project_path).to eq(project.path_with_namespace)
    end
  end
end