Next round

This commit is contained in:
Kamil Trzcinski 2017-04-06 15:35:40 +02:00
parent 93f9e71b0d
commit 227a664e5e
No known key found for this signature in database
GPG Key ID: 4505F5C7E12C6A5A
2 changed files with 11 additions and 13 deletions

View File

@ -13,18 +13,15 @@ class PipelineSerializer < BaseSerializer
def represent(resource, opts = {})
if resource.is_a?(ActiveRecord::Relation)
project_includes = [ { namespace: :route }, :route ]
resource = resource.includes(
resource = resource.includes([
:retryable_builds,
:cancelable_statuses,
:trigger_requests
)
resource = resource.includes(
project: project_includes,
pending_builds: [:project],
manual_actions: { project: project_includes },
artifacts: { project: project_includes }
)
:trigger_requests,
:project,
{ pending_builds: :project },
{ manual_actions: :project },
{ artifacts: :project }
])
end
if paginated?

View File

@ -96,6 +96,7 @@ describe PipelineSerializer do
context 'number of queries' do
let(:resource) { Ci::Pipeline.all }
let(:project) { create(:empty_project) }
before do
Ci::Pipeline::AVAILABLE_STATUSES.each do |status|
@ -112,12 +113,12 @@ describe PipelineSerializer do
it "verifies number of queries" do
recorded = ActiveRecord::QueryRecorder.new { subject }
expect(recorded.count).to be_within(10).of(93)
expect(recorded.cached_count).to be_within(5).of(5)
expect(recorded.count).to be_within(1).of(50)
expect(recorded.cached_count).to eq(0)
end
def create_pipeline(status)
create(:ci_empty_pipeline, status: status).tap do |pipeline|
create(:ci_empty_pipeline, project: project, status: status).tap do |pipeline|
Ci::Build::AVAILABLE_STATUSES.each do |status|
create_build(pipeline, status, status)
end