Commit a5b96417 authored by Shinya Maeda's avatar Shinya Maeda

with_status to represent_status

parent 3b635002
...@@ -18,10 +18,7 @@ class BuildEntity < Grape::Entity ...@@ -18,10 +18,7 @@ class BuildEntity < Grape::Entity
expose :created_at expose :created_at
expose :updated_at expose :updated_at
expose :detailed_status, as: :status, with: StatusEntity
expose :details do
expose :detailed_status, as: :status, with: StatusEntity
end
private private
......
class BuildSerializer < BaseSerializer class BuildSerializer < BaseSerializer
entity BuildEntity entity BuildEntity
def only_status
tap { @status_only = { only: [{ details: [:status] }] } }
end
def represent(resource, opts = {}) def represent(resource, opts = {})
if @status_only.present?
opts.merge!(@status_only)
end
super(resource, opts) super(resource, opts)
end end
def represent_status(resource)
data = represent(resource, { only: [:status] })
data[:status]
end
end end
...@@ -11,23 +11,20 @@ class PipelineSerializer < BaseSerializer ...@@ -11,23 +11,20 @@ class PipelineSerializer < BaseSerializer
@paginator.present? @paginator.present?
end end
def only_status
tap { @status_only = { only: [{ details: [:status] }] } }
end
def represent(resource, opts = {}) def represent(resource, opts = {})
if resource.is_a?(ActiveRecord::Relation) if resource.is_a?(ActiveRecord::Relation)
resource = resource.includes(project: :namespace) resource = resource.includes(project: :namespace)
end end
if @status_only.present?
opts.merge!(@status_only)
end
if paginated? if paginated?
super(@paginator.paginate(resource), opts) super(@paginator.paginate(resource), opts)
else else
super(resource, opts) super(resource, opts)
end end
end end
def represent_status(resource)
data = represent(resource, { only: [{ details: [:status] }] })
data[:details][:status]
end
end end
...@@ -10,16 +10,20 @@ describe BuildSerializer do ...@@ -10,16 +10,20 @@ describe BuildSerializer do
subject { serializer.represent(resource) } subject { serializer.represent(resource) }
describe '#represent' do describe '#represent' do
context 'when used with status' do # TODO:
let(:serializer) do end
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 end
let(:resource) { create(:ci_build) } let(:resource) { create(:ci_build, status: :success) }
subject { serializer.represent_status(resource) }
it 'serializes only status' do it 'serializes only status' do
expect(subject[:details][:status]).not_to be_empty expect(subject[:favicon]).to eq(status.favicon)
expect(subject[:details].keys.count).to eq 1
end end
end end
end end
......
...@@ -93,17 +93,19 @@ describe PipelineSerializer do ...@@ -93,17 +93,19 @@ describe PipelineSerializer do
end end
end end
end end
end
context 'when used with status' do describe '#represent_status' do
let(:serializer) do context 'when represents only status' do
described_class.new(user: user) let(:status) do
.only_status Gitlab::Ci::Status::Success.new(double('object'), double('user'))
end end
let(:resource) { create(:ci_empty_pipeline) } let(:resource) { create(:ci_pipeline, status: :success) }
subject { serializer.represent_status(resource) }
it 'serializes only status' do it 'serializes only status' do
expect(subject[:details][:status]).not_to be_empty expect(subject[:favicon]).to eq(status.favicon)
expect(subject[:details].keys.count).to eq 1
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment