diff --git a/app/serializers/build_entity.rb b/app/serializers/build_entity.rb index 35566c55950..fadd6c5c597 100644 --- a/app/serializers/build_entity.rb +++ b/app/serializers/build_entity.rb @@ -18,10 +18,7 @@ class BuildEntity < Grape::Entity expose :created_at expose :updated_at - - expose :details do - expose :detailed_status, as: :status, with: StatusEntity - end + expose :detailed_status, as: :status, with: StatusEntity private diff --git a/app/serializers/build_serializer.rb b/app/serializers/build_serializer.rb index e0096dc7b4a..2c9cf99811e 100644 --- a/app/serializers/build_serializer.rb +++ b/app/serializers/build_serializer.rb @@ -1,15 +1,12 @@ class BuildSerializer < BaseSerializer entity BuildEntity - def only_status - tap { @status_only = { only: [{ details: [:status] }] } } - end - def represent(resource, opts = {}) - if @status_only.present? - opts.merge!(@status_only) - end - super(resource, opts) end + + def represent_status(resource) + data = represent(resource, { only: [:status] }) + data[:status] + end end diff --git a/app/serializers/pipeline_serializer.rb b/app/serializers/pipeline_serializer.rb index c667fc840b2..62f31d4c5ad 100644 --- a/app/serializers/pipeline_serializer.rb +++ b/app/serializers/pipeline_serializer.rb @@ -11,23 +11,20 @@ class PipelineSerializer < BaseSerializer @paginator.present? end - def only_status - tap { @status_only = { only: [{ details: [:status] }] } } - end - def represent(resource, opts = {}) if resource.is_a?(ActiveRecord::Relation) resource = resource.includes(project: :namespace) end - if @status_only.present? - opts.merge!(@status_only) - end - if paginated? super(@paginator.paginate(resource), opts) else super(resource, opts) end end + + def represent_status(resource) + data = represent(resource, { only: [{ details: [:status] }] }) + data[:details][:status] + end end diff --git a/spec/serializers/build_serializer_spec.rb b/spec/serializers/build_serializer_spec.rb index e6437538328..a8069004e7b 100644 --- a/spec/serializers/build_serializer_spec.rb +++ b/spec/serializers/build_serializer_spec.rb @@ -10,16 +10,20 @@ describe BuildSerializer do subject { serializer.represent(resource) } describe '#represent' do - context 'when used with status' do - let(:serializer) do - described_class.new(user: user) - .only_status + # TODO: + end + + describe '#represent_status' do + context 'when represents only status' do + let(:status) do + Gitlab::Ci::Status::Success.new(double('object'), double('user')) end - let(:resource) { create(:ci_build) } + let(:resource) { create(:ci_build, status: :success) } + + subject { serializer.represent_status(resource) } it 'serializes only status' do - expect(subject[:details][:status]).not_to be_empty - expect(subject[:details].keys.count).to eq 1 + expect(subject[:favicon]).to eq(status.favicon) end end end diff --git a/spec/serializers/pipeline_serializer_spec.rb b/spec/serializers/pipeline_serializer_spec.rb index 0e043e980ac..a668d9df11a 100644 --- a/spec/serializers/pipeline_serializer_spec.rb +++ b/spec/serializers/pipeline_serializer_spec.rb @@ -93,17 +93,19 @@ describe PipelineSerializer do end end end + end - context 'when used with status' do - let(:serializer) do - described_class.new(user: user) - .only_status + describe '#represent_status' do + context 'when represents only status' do + let(:status) do + Gitlab::Ci::Status::Success.new(double('object'), double('user')) end - let(:resource) { create(:ci_empty_pipeline) } + let(:resource) { create(:ci_pipeline, status: :success) } + + subject { serializer.represent_status(resource) } it 'serializes only status' do - expect(subject[:details][:status]).not_to be_empty - expect(subject[:details].keys.count).to eq 1 + expect(subject[:favicon]).to eq(status.favicon) end end end