diff options
author | Bob Van Landuyt <bob@gitlab.com> | 2017-03-29 13:52:09 +0200 |
---|---|---|
committer | Bob Van Landuyt <bob@gitlab.com> | 2017-03-29 14:32:35 +0200 |
commit | a13d4a607ba70e14b508dec83e4358c93efa5a02 (patch) | |
tree | 67c581140a6fca701c01befade33a933c444cf7e | |
parent | 8dd5735a184ce0c080b67ada5eddebdd962890f6 (diff) | |
download | gitlab-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.rb | 4 | ||||
-rw-r--r-- | app/views/shared/projects/_list.html.haml | 1 | ||||
-rw-r--r-- | spec/helpers/projects_helper_spec.rb | 12 |
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) } |