Welcome to mirror list, hosted at ThFree Co, Russian Federation.

pipeline_helper_spec.rb « projects « helpers « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: a69da91599021d18af4b1d3b1ea66e9e09af4b92 (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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe Projects::PipelineHelper do
  include Ci::BuildsHelper

  let_it_be(:user) { create(:user) }
  let_it_be(:project) { create(:project, :repository) }
  let_it_be(:raw_pipeline) { create(:ci_pipeline, project: project, ref: 'master', sha: project.commit.id) }
  let_it_be(:pipeline) { Ci::PipelinePresenter.new(raw_pipeline, current_user: user) }

  before do
    project.add_developer(user)
  end

  describe '#js_pipeline_tabs_data' do
    subject(:pipeline_tabs_data) { helper.js_pipeline_tabs_data(project, pipeline, user) }

    it 'returns pipeline tabs data' do
      expect(pipeline_tabs_data).to include({
        failed_jobs_count: pipeline.failed_builds.count,
        project_path: project.full_path,
        graphql_resource_etag: graphql_etag_pipeline_path(pipeline),
        metrics_path: namespace_project_ci_prometheus_metrics_histograms_path(namespace_id: project.namespace, project_id: project, format: :json),
        pipeline_iid: pipeline.iid,
        pipeline_path: pipeline_path(pipeline),
        pipeline_project_path: project.full_path,
        total_job_count: pipeline.total_size,
        summary_endpoint: summary_project_pipeline_tests_path(project, pipeline, format: :json),
        suite_endpoint: project_pipeline_test_path(project, pipeline, suite_name: 'suite', format: :json),
        blob_path: project_blob_path(project, pipeline.sha),
        has_test_report: pipeline.complete_and_has_reports?(Ci::JobArtifact.of_report_type(:test)),
        empty_dag_svg_path: match_asset_path('illustrations/empty-state/empty-dag-md.svg'),
        empty_state_image_path: match_asset_path('illustrations/empty-state/empty-test-cases-lg.svg'),
        artifacts_expired_image_path: match_asset_path('illustrations/pipeline.svg'),
        tests_count: pipeline.test_report_summary.total[:count]
      })
    end
  end

  describe '#js_pipeline_details_header_data' do
    subject(:pipeline_details_header_data) { helper.js_pipeline_details_header_data(project, pipeline) }

    it 'returns pipeline details header data' do
      expect(pipeline_details_header_data).to include({
        full_path: project.full_path,
        graphql_resource_etag: graphql_etag_pipeline_path(pipeline),
        pipeline_iid: pipeline.iid,
        pipelines_path: project_pipelines_path(project),
        name: pipeline.name,
        total_jobs: pipeline.total_size,
        yaml_errors: pipeline.yaml_errors,
        failure_reason: pipeline.failure_reason,
        triggered_by_path: '',
        schedule: pipeline.schedule?.to_s,
        child: pipeline.child?.to_s,
        latest: pipeline.latest?.to_s,
        merge_train_pipeline: pipeline.merge_train_pipeline?.to_s,
        invalid: pipeline.has_yaml_errors?.to_s,
        failed: pipeline.failure_reason?.to_s,
        auto_devops: pipeline.auto_devops_source?.to_s,
        detached: pipeline.detached_merge_request_pipeline?.to_s,
        stuck: pipeline.stuck?,
        ref_text: pipeline.ref_text
      })
    end
  end
end