From 17b9128b305aefc29fddae3b51d13c61ae7dfef9 Mon Sep 17 00:00:00 2001
From: Shinya Maeda <gitlab.shinyamaeda@gmail.com>
Date: Wed, 17 May 2017 22:58:23 +0900
Subject: [PATCH] includes last_pipeline

---
 lib/api/entities.rb                          | 4 +---
 lib/api/pipeline_schedules.rb                | 2 +-
 spec/requests/api/pipeline_schedules_spec.rb | 3 +++
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 93f28e39f82..b2bc0a17142 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -690,9 +690,7 @@ module API
       expose :id
       expose :description, :ref, :cron, :cron_timezone, :next_run_at, :active
       expose :created_at, :updated_at, :deleted_at
-      expose :last_pipeline, using: Entities::Pipeline do |pipeline_schedule|
-        pipeline_schedule.pipelines&.last
-      end
+      expose :last_pipeline, using: Entities::Pipeline
       expose :owner, using: Entities::UserBasic
     end
 
diff --git a/lib/api/pipeline_schedules.rb b/lib/api/pipeline_schedules.rb
index 58888417888..27be796356c 100644
--- a/lib/api/pipeline_schedules.rb
+++ b/lib/api/pipeline_schedules.rb
@@ -17,7 +17,7 @@ module API
       get ':id/pipeline_schedules' do
         authorize! :read_pipeline_schedule, user_project
 
-        pipeline_schedules = user_project.pipeline_schedules.preload(:pipelines)
+        pipeline_schedules = user_project.pipeline_schedules.includes(last_pipeline: {statuses: :latest})
 
         present paginate(pipeline_schedules), with: Entities::PipelineSchedule
       end
diff --git a/spec/requests/api/pipeline_schedules_spec.rb b/spec/requests/api/pipeline_schedules_spec.rb
index 34c4fcfcae1..1b44043907b 100644
--- a/spec/requests/api/pipeline_schedules_spec.rb
+++ b/spec/requests/api/pipeline_schedules_spec.rb
@@ -31,6 +31,9 @@ describe API::PipelineSchedules do
         end.count
 
         create_list(:ci_pipeline_schedule, 10, project: project, owner: developer)
+          .each do |pipeline_schedule|
+          pipeline_schedule.pipelines << build(:ci_pipeline, project: project)
+        end
 
         expect do
           get api("/projects/#{project.id}/pipeline_schedules", developer)
-- 
GitLab