59 lines
1.5 KiB
Ruby
59 lines
1.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Projects
|
|
module Pipelines
|
|
class TestsController < Projects::Pipelines::ApplicationController
|
|
before_action :validate_feature_flag!
|
|
before_action :authorize_read_build!
|
|
before_action :builds, only: [:show]
|
|
|
|
def summary
|
|
respond_to do |format|
|
|
format.json do
|
|
render json: TestReportSummarySerializer
|
|
.new(project: project, current_user: @current_user)
|
|
.represent(pipeline.test_report_summary)
|
|
end
|
|
end
|
|
end
|
|
|
|
def show
|
|
respond_to do |format|
|
|
format.json do
|
|
render json: TestSuiteSerializer
|
|
.new(project: project, current_user: @current_user)
|
|
.represent(test_suite, details: true)
|
|
end
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def validate_feature_flag!
|
|
render_404 unless Feature.enabled?(:build_report_summary, project)
|
|
end
|
|
|
|
# rubocop: disable CodeReuse/ActiveRecord
|
|
def builds
|
|
pipeline.latest_builds.where(id: build_params)
|
|
end
|
|
|
|
def build_params
|
|
return [] unless params[:build_ids]
|
|
|
|
params[:build_ids].split(",")
|
|
end
|
|
|
|
def test_suite
|
|
if builds.present?
|
|
builds.map do |build|
|
|
build.collect_test_reports!(Gitlab::Ci::Reports::TestReports.new)
|
|
end.sum
|
|
else
|
|
render_404
|
|
end
|
|
end
|
|
# rubocop: enable CodeReuse/ActiveRecord
|
|
end
|
|
end
|
|
end
|