diff --git a/app/presenters/ci/bridge_presenter.rb b/app/presenters/ci/bridge_presenter.rb new file mode 100644 index 0000000000000000000000000000000000000000..ee11cffe3552e790976b34933614c359e4621f29 --- /dev/null +++ b/app/presenters/ci/bridge_presenter.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Ci + class BridgePresenter < CommitStatusPresenter + def detailed_status + @detailed_status ||= subject.detailed_status(user) + end + end +end diff --git a/ee/changelogs/unreleased/fix-gb-fix-bridge-jobs-serialization.yml b/ee/changelogs/unreleased/fix-gb-fix-bridge-jobs-serialization.yml new file mode 100644 index 0000000000000000000000000000000000000000..e019ad92d03eedadae32ef45508d553f88ab743a --- /dev/null +++ b/ee/changelogs/unreleased/fix-gb-fix-bridge-jobs-serialization.yml @@ -0,0 +1,5 @@ +--- +title: Fix pipeline bridge serialization error +merge_request: 10565 +author: +type: fixed diff --git a/ee/spec/serializers/pipeline_serializer_spec.rb b/ee/spec/serializers/pipeline_serializer_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..9dd59fd38200dfcf4d7a9526750efc1aebb85b2a --- /dev/null +++ b/ee/spec/serializers/pipeline_serializer_spec.rb @@ -0,0 +1,31 @@ +require 'spec_helper' + +describe PipelineSerializer do + set(:project) { create(:project, :repository) } + set(:user) { create(:user) } + + let(:serializer) do + described_class.new(current_user: user) + end + + subject { serializer.represent(pipeline, details: true) } + + context 'when pipeline contains failed bridge jobs' do + let(:pipeline) do + create(:ci_empty_pipeline, + project: project, + status: :success, + ref: :master) + end + + before do + create(:ci_bridge, pipeline: pipeline, status: :failed) + end + + it 'serializes bridge job correctly' do + name = subject.dig(:details, :stages, 0, :latest_statuses, 0, :name) + + expect(name).to eq 'bridge' + end + end +end diff --git a/spec/factories/ci/bridge.rb b/spec/factories/ci/bridge.rb index b1d82b9841198d45f8ff87c262627a5c43b1749c..7cb5900f2b7490184de83282fd55b2d9f8db1a7b 100644 --- a/spec/factories/ci/bridge.rb +++ b/spec/factories/ci/bridge.rb @@ -1,6 +1,6 @@ FactoryBot.define do factory :ci_bridge, class: Ci::Bridge do - name ' bridge' + name 'bridge' stage 'test' stage_idx 0 ref 'master' diff --git a/spec/presenters/ci/bridge_presenter_spec.rb b/spec/presenters/ci/bridge_presenter_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..986818a7b9eedc67db8f66e426348bbe9952b5d9 --- /dev/null +++ b/spec/presenters/ci/bridge_presenter_spec.rb @@ -0,0 +1,15 @@ +require 'spec_helper' + +describe Ci::BridgePresenter do + set(:project) { create(:project) } + set(:pipeline) { create(:ci_pipeline, project: project) } + set(:bridge) { create(:ci_bridge, pipeline: pipeline, status: :failed) } + + subject(:presenter) do + described_class.new(bridge) + end + + it 'presents information about recoverable state' do + expect(presenter).to be_recoverable + end +end