File: jobs_shared_examples.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (34 lines) | stat: -rw-r--r-- 1,592 bytes parent folder | download
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
# frozen_string_literal: true

RSpec.shared_examples 'a job with artifacts and trace' do |result_is_array: true|
  context 'with artifacts and trace' do
    let!(:second_job) { create(:ci_build, :trace_artifact, :artifacts, :test_reports, pipeline: pipeline) }

    it 'returns artifacts and trace data', :skip_before_request do
      get api(api_endpoint, api_user)
      json_job = json_response.is_a?(Array) ? json_response.find { |job| job['id'] == second_job.id } : json_response

      expect(json_job['artifacts_file']).not_to be_nil
      expect(json_job['artifacts_file']).not_to be_empty
      expect(json_job['artifacts_file']['filename']).to eq(second_job.artifacts_file.filename)
      expect(json_job['artifacts_file']['size']).to eq(second_job.artifacts_file.size)
      expect(json_job['artifacts']).not_to be_nil
      expect(json_job['artifacts']).to be_an Array
      expect(json_job['artifacts'].size).to eq(second_job.job_artifacts.length)
      json_job['artifacts'].each do |artifact|
        expect(artifact).not_to be_nil
        file_type = Ci::JobArtifact.file_types[artifact['file_type']]
        expect(artifact['size']).to eq(second_job.job_artifacts.find_by(file_type: file_type).size)
        expect(artifact['filename']).to eq(second_job.job_artifacts.find_by(file_type: file_type).filename)
        expect(artifact['file_format']).to eq(second_job.job_artifacts.find_by(file_type: file_type).file_format)
      end
    end
  end
end

RSpec.shared_context 'when canceling support' do
  before do
    job.metadata.set_cancel_gracefully
    job.save!
  end
end