From c351b9f599aa1af693435738d2c897cc2a954fe7 Mon Sep 17 00:00:00 2001
From: Kamil Trzcinski <ayufan@ayufan.eu>
Date: Wed, 13 Apr 2016 16:51:52 +0200
Subject: [PATCH] Improve rendered CI statuses

---
 app/helpers/ci_status_helper.rb               | 27 ++++++++++++-------
 app/views/projects/commits/_commit.html.haml  |  2 +-
 .../projects/issues/_merge_requests.html.haml |  2 +-
 .../issues/_related_branches.html.haml        |  2 +-
 .../merge_requests/_merge_request.html.haml   |  2 +-
 app/views/shared/projects/_project.html.haml  |  2 +-
 6 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/app/helpers/ci_status_helper.rb b/app/helpers/ci_status_helper.rb
index 417050b4132..acc01b008bf 100644
--- a/app/helpers/ci_status_helper.rb
+++ b/app/helpers/ci_status_helper.rb
@@ -38,15 +38,24 @@ module CiStatusHelper
     icon(icon_name + ' fw')
   end
 
-  def render_ci_status(ci_commit, tooltip_placement: 'auto left')
-    # TODO: split this method into
-    # - render_commit_status
-    # - render_pipeline_status
-    link_to ci_icon_for_status(ci_commit.status),
-      ci_status_path(ci_commit),
-      class: "ci-status-link ci-status-icon-#{ci_commit.status.dasherize}",
-      title: "Build #{ci_label_for_status(ci_commit.status)}",
-      data: { toggle: 'tooltip', placement: tooltip_placement }
+  def render_commit_status(commit, tooltip_placement: 'auto left')
+    project = commit.project
+    path = builds_namespace_project_commit_path(project.namespace, project, commit)
+    render_status_with_link('commit', commit.status, path, tooltip_placement)
+  end
+
+  def render_pipeline_status(pipeline, tooltip_placement: 'auto left')
+    project = pipeline.project
+    path = namespace_project_pipeline_path(project.namespace, project, pipeline)
+    render_status_with_link('pipeline', pipeline.status, path, tooltip_placement)
+  end
+
+  def render_status_with_link(type, status, path, tooltip_placement)
+    link_to ci_icon_for_status(status),
+            path,
+            class: "ci-status-link ci-status-icon-#{status.dasherize}",
+            title: "#{type.titleize}: #{ci_label_for_status(status)}",
+            data: { toggle: 'tooltip', placement: tooltip_placement }
   end
 
   def no_runners_for_project?(project)
diff --git a/app/views/projects/commits/_commit.html.haml b/app/views/projects/commits/_commit.html.haml
index f7c8647ac0e..b231b584eab 100644
--- a/app/views/projects/commits/_commit.html.haml
+++ b/app/views/projects/commits/_commit.html.haml
@@ -17,7 +17,7 @@
 
       .pull-right
         - if commit.status
-          = render_ci_status(commit)
+          = render_commit_status(commit)
         = clipboard_button(clipboard_text: commit.id)
         = link_to commit.short_id, namespace_project_commit_path(project.namespace, project, commit), class: "commit_short_id"
 
diff --git a/app/views/projects/issues/_merge_requests.html.haml b/app/views/projects/issues/_merge_requests.html.haml
index d6b38b327ff..e953353567e 100644
--- a/app/views/projects/issues/_merge_requests.html.haml
+++ b/app/views/projects/issues/_merge_requests.html.haml
@@ -7,7 +7,7 @@
       %li
         %span.merge-request-ci-status
           - if merge_request.ci_commit
-            = render_ci_status(merge_request.ci_commit)
+            = render_pipeline_status(merge_request.ci_commit)
           - elsif has_any_ci
             = icon('blank fw')
         %span.merge-request-id
diff --git a/app/views/projects/issues/_related_branches.html.haml b/app/views/projects/issues/_related_branches.html.haml
index bdfa0c7009e..5f9d2919982 100644
--- a/app/views/projects/issues/_related_branches.html.haml
+++ b/app/views/projects/issues/_related_branches.html.haml
@@ -8,7 +8,7 @@
         - ci_commit = @project.ci_commit(sha, branch) if sha
         - if ci_commit
           %span.related-branch-ci-status
-            = render_ci_status(ci_commit)
+            = render_pipeline_status(ci_commit)
         %span.related-branch-info
           %strong
             = link_to namespace_project_compare_path(@project.namespace, @project, from: @project.default_branch, to: branch), class: "label-branch" do
diff --git a/app/views/projects/merge_requests/_merge_request.html.haml b/app/views/projects/merge_requests/_merge_request.html.haml
index 391193eed6c..7bfde8b1c57 100644
--- a/app/views/projects/merge_requests/_merge_request.html.haml
+++ b/app/views/projects/merge_requests/_merge_request.html.haml
@@ -13,7 +13,7 @@
 
       - if merge_request.ci_commit
         %li
-          = render_ci_status(merge_request.ci_commit)
+          = render_pipeline_status(merge_request.ci_commit)
 
       - if merge_request.open? && merge_request.broken?
         %li
diff --git a/app/views/shared/projects/_project.html.haml b/app/views/shared/projects/_project.html.haml
index ab8b022411d..9ef021747a5 100644
--- a/app/views/shared/projects/_project.html.haml
+++ b/app/views/shared/projects/_project.html.haml
@@ -17,7 +17,7 @@
           = project.main_language
       - if project.commit.try(:status)
         %span
-          = render_ci_status(project.commit)
+          = render_commit_status(project.commit)
       - if forks
         %span
           = icon('code-fork')
-- 
GitLab