summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/noteable_metadata_spec.rb
blob: b12a1825f041f1d763789a1e34f384a9c83dd2e4 (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
# frozen_string_literal: true

require 'spec_helper'

describe Gitlab::NoteableMetadata do
  subject { Class.new { include Gitlab::NoteableMetadata }.new }

  it 'returns an empty Hash if an empty collection is provided' do
    expect(subject.noteable_meta_data(Snippet.none, 'Snippet')).to eq({})
  end

  it 'raises an error when given a collection with no limit' do
    expect { subject.noteable_meta_data(Snippet.all, 'Snippet') }.to raise_error(/must have a limit/)
  end

  context 'snippets' do
    let!(:snippet) { create(:personal_snippet) }
    let!(:other_snippet) { create(:personal_snippet) }
    let!(:note) { create(:note, noteable: snippet) }

    it 'aggregates stats on snippets' do
      data = subject.noteable_meta_data(Snippet.all.limit(10), 'Snippet')

      expect(data.count).to eq(2)
      expect(data[snippet.id].user_notes_count).to eq(1)
      expect(data[other_snippet.id].user_notes_count).to eq(0)
    end
  end
end