diff options
Diffstat (limited to 'app/controllers/projects/pipelines/tests_controller.rb')
-rw-r--r-- | app/controllers/projects/pipelines/tests_controller.rb | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/app/controllers/projects/pipelines/tests_controller.rb b/app/controllers/projects/pipelines/tests_controller.rb index 6e4b5155a4f..f03274bf32e 100644 --- a/app/controllers/projects/pipelines/tests_controller.rb +++ b/app/controllers/projects/pipelines/tests_controller.rb @@ -2,35 +2,58 @@ module Projects module Pipelines - class TestsController < Projects::ApplicationController - before_action :pipeline - before_action :authorize_read_pipeline! - before_action :authorize_read_build! + 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: TestReportSerializer + 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 - def pipeline - project.all_pipelines.find(tests_params[:id]) + # 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 tests_params - params.permit(:id) + 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 |