with_status to represent_status
This commit is contained in:
parent
3b63500297
commit
a5b96417f3
5 changed files with 31 additions and 34 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue