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

require 'spec_helper'

RSpec.describe Gitlab::GithubImport::ObjectCounter, :clean_gitlab_redis_cache do
  let_it_be(:project) { create(:project) }

  it 'validates the operation being incremented' do
    expect { described_class.increment(project, :issue, :unknown) }
      .to raise_error(ArgumentError, 'operation must be fetched or imported')
  end

  it 'increments the counter and saves the key to be listed in the summary later' do
    expect(Gitlab::Metrics)
      .to receive(:counter)
      .twice
      .with(:github_importer_fetched_issue, 'The number of fetched Github Issue')
      .and_return(double(increment: true))

    expect(Gitlab::Metrics)
      .to receive(:counter)
      .twice
      .with(:github_importer_imported_issue, 'The number of imported Github Issue')
      .and_return(double(increment: true))

    described_class.increment(project, :issue, :fetched)
    described_class.increment(project, :issue, :fetched)
    described_class.increment(project, :issue, :imported)
    described_class.increment(project, :issue, :imported)

    expect(described_class.summary(project)).to eq({
      'fetched' => { 'issue' => 2 },
      'imported' => { 'issue' => 2 }
    })
  end

  it 'does not increment the counter if the given value is <= 0' do
    expect(Gitlab::Metrics)
      .not_to receive(:counter)

    expect(Gitlab::Metrics)
      .not_to receive(:counter)

    described_class.increment(project, :issue, :fetched, value: 0)
    described_class.increment(project, :issue, :imported, value: nil)

    expect(described_class.summary(project)).to eq({
      'fetched' => {},
      'imported' => {}
    })
  end
end