From 609328a283b6e101f11f1189dbfe88486499113a Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Wed, 3 Apr 2019 11:56:06 +0200 Subject: [PATCH 1/4] Add a unit test for serializing pipelines with bridges --- .../serializers/pipeline_serializer_spec.rb | 31 +++++++++++++++++++ spec/factories/ci/bridge.rb | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 ee/spec/serializers/pipeline_serializer_spec.rb diff --git a/ee/spec/serializers/pipeline_serializer_spec.rb b/ee/spec/serializers/pipeline_serializer_spec.rb new file mode 100644 index 00000000000000..e1edc0602d03c8 --- /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 bridge jobs' do + let(:pipeline) do + create(:ci_empty_pipeline, + project: project, + status: :success, + ref: :master) + end + + before do + create(:ci_bridge, pipeline: pipeline) + 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 b1d82b9841198d..7cb5900f2b7490 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' -- GitLab From 99fe9870dbc1242e5a1172929a3a05e00eed89e4 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Wed, 3 Apr 2019 12:20:11 +0200 Subject: [PATCH 2/4] Check only failed bridge jobs in serialization specs --- ee/spec/serializers/pipeline_serializer_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ee/spec/serializers/pipeline_serializer_spec.rb b/ee/spec/serializers/pipeline_serializer_spec.rb index e1edc0602d03c8..9dd59fd38200df 100644 --- a/ee/spec/serializers/pipeline_serializer_spec.rb +++ b/ee/spec/serializers/pipeline_serializer_spec.rb @@ -10,7 +10,7 @@ subject { serializer.represent(pipeline, details: true) } - context 'when pipeline contains bridge jobs' do + context 'when pipeline contains failed bridge jobs' do let(:pipeline) do create(:ci_empty_pipeline, project: project, @@ -19,7 +19,7 @@ end before do - create(:ci_bridge, pipeline: pipeline) + create(:ci_bridge, pipeline: pipeline, status: :failed) end it 'serializes bridge job correctly' do -- GitLab From e585aa15db3753e020a00a2d50555545504d4f04 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Wed, 3 Apr 2019 12:20:26 +0200 Subject: [PATCH 3/4] Add pipeline bridge presenter --- app/presenters/ci/bridge_presenter.rb | 9 +++++++++ spec/presenters/ci/bridge_presenter_spec.rb | 15 +++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 app/presenters/ci/bridge_presenter.rb create mode 100644 spec/presenters/ci/bridge_presenter_spec.rb diff --git a/app/presenters/ci/bridge_presenter.rb b/app/presenters/ci/bridge_presenter.rb new file mode 100644 index 00000000000000..ee11cffe3552e7 --- /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/spec/presenters/ci/bridge_presenter_spec.rb b/spec/presenters/ci/bridge_presenter_spec.rb new file mode 100644 index 00000000000000..986818a7b9eedc --- /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 -- GitLab From 971153d3ba959d708d2463458fb8e3c79d048f98 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Wed, 3 Apr 2019 12:23:10 +0200 Subject: [PATCH 4/4] Add changelog for pipeline bridge serialization fix --- .../unreleased/fix-gb-fix-bridge-jobs-serialization.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 ee/changelogs/unreleased/fix-gb-fix-bridge-jobs-serialization.yml 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 00000000000000..e019ad92d03eed --- /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 -- GitLab