summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@gitlab.com>2017-03-29 13:52:09 +0200
committerBob Van Landuyt <bob@gitlab.com>2017-03-29 14:32:35 +0200
commita13d4a607ba70e14b508dec83e4358c93efa5a02 (patch)
tree67c581140a6fca701c01befade33a933c444cf7e
parent8dd5735a184ce0c080b67ada5eddebdd962890f6 (diff)
downloadgitlab-ce-bvl-load-pipeline-status-in-batch.tar.gz
Preload pipeline status when rendering a project listbvl-load-pipeline-status-in-batch
-rw-r--r--app/helpers/projects_helper.rb4
-rw-r--r--app/views/shared/projects/_list.html.haml1
-rw-r--r--spec/helpers/projects_helper_spec.rb12
3 files changed, 17 insertions, 0 deletions
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index bd0c2cd661e..010ca3a5167 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -436,4 +436,8 @@ module ProjectsHelper
end
options_for_select(levels_options_array, selected_level)
end
+
+ def load_pipeline_status(projects)
+ Ci::PipelineStatus.load_in_batch_for_projects(projects)
+ end
end
diff --git a/app/views/shared/projects/_list.html.haml b/app/views/shared/projects/_list.html.haml
index c0699b13719..aaffc0927eb 100644
--- a/app/views/shared/projects/_list.html.haml
+++ b/app/views/shared/projects/_list.html.haml
@@ -7,6 +7,7 @@
- skip_namespace = false unless local_assigns[:skip_namespace] == true
- show_last_commit_as_description = false unless local_assigns[:show_last_commit_as_description] == true
- remote = false unless local_assigns[:remote] == true
+- load_pipeline_status(projects)
.js-projects-list-holder
- if projects.any?
diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb
index fc6ad6419ac..c80fdab09b4 100644
--- a/spec/helpers/projects_helper_spec.rb
+++ b/spec/helpers/projects_helper_spec.rb
@@ -103,6 +103,18 @@ describe ProjectsHelper do
end
end
+ describe '#load_pipeline_status' do
+ it 'loads the pipeline status in batch' do
+ project = build(:empty_project)
+
+ helper.load_pipeline_status([project])
+ # Skip lazy loading of the `pipeline_status` attribute
+ pipeline_status = project.instance_variable_get('@pipeline_status')
+
+ expect(pipeline_status).to be_a(Ci::PipelineStatus)
+ end
+ end
+
describe 'link_to_member' do
let(:group) { create(:group) }
let(:project) { create(:empty_project, group: group) }