summaryrefslogtreecommitdiff
path: root/spec/workers/gitlab/import/stuck_import_job_spec.rb
blob: 3a1463e98a0b527cf80e1310ddafc6c1447d0520 (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
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe Gitlab::Import::StuckImportJob do
  let_it_be(:project) { create(:project, :import_started, import_source: 'foo/bar') }

  let(:worker) do
    Class.new do
      def self.name
        'MyStuckProjectImportsWorker'
      end

      include(Gitlab::Import::StuckImportJob)

      def track_metrics(...)
        nil
      end

      def enqueued_import_states
        ProjectImportState.with_status([:scheduled, :started])
      end
    end.new
  end

  it 'marks the stuck import project as failed and track the error on import_failures' do
    worker.perform

    expect(project.import_state.reload.status).to eq('failed')
    expect(project.import_state.last_error).to eq('Import timed out. Import took longer than 86400 seconds')

    expect(project.import_failures).not_to be_empty
    expect(project.import_failures.last.exception_class).to eq('Gitlab::Import::StuckImportJob::StuckImportJobError')
    expect(project.import_failures.last.exception_message).to eq('Import timed out. Import took longer than 86400 seconds')
  end
end