summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Speicher <rspeicher@gmail.com>2016-10-25 15:05:23 +0100
committerRobert Speicher <rspeicher@gmail.com>2016-10-25 15:05:23 +0100
commite396fef2b444db353b398213d205a404e3a92da0 (patch)
tree80a993630b6e42f3aa24e6da4b9186dab3ab73bf
parent9a6770388c0e93f98952a40cc88bb7f5ecd23631 (diff)
downloadgitlab-ce-rs-merge-request-helpers.tar.gz
Move `MergeRequest#state_icon_name` and `#state_human_name` to helpersrs-merge-request-helpers
These are entirely view-related and should therefore be view helpers.
-rw-r--r--app/helpers/merge_requests_helper.rb23
-rw-r--r--app/models/merge_request.rb20
-rw-r--r--app/views/projects/merge_requests/show/_mr_title.html.haml4
-rw-r--r--spec/helpers/merge_requests_helper_spec.rb49
4 files changed, 74 insertions, 22 deletions
diff --git a/app/helpers/merge_requests_helper.rb b/app/helpers/merge_requests_helper.rb
index a6659ea2fd1..41b07b4dfc2 100644
--- a/app/helpers/merge_requests_helper.rb
+++ b/app/helpers/merge_requests_helper.rb
@@ -26,6 +26,29 @@ module MergeRequestsHelper
classes
end
+ def merge_request_state_icon(merge_request, icon_options = {})
+ icon_name =
+ if merge_request.merged?
+ 'check'
+ elsif merge_request.closed?
+ 'times'
+ else
+ 'circle-o'
+ end
+
+ icon(icon_name, icon_options)
+ end
+
+ def merge_request_state(merge_request)
+ if merge_request.merged?
+ 'Merged'
+ elsif merge_request.closed?
+ 'Closed'
+ else
+ 'Open'
+ end
+ end
+
def ci_build_details_path(merge_request)
build_url = merge_request.source_project.ci_service.build_page(merge_request.diff_head_sha, merge_request.source_branch)
return nil unless build_url
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 4872f8b8649..73cf8b1ebde 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -694,26 +694,6 @@ class MergeRequest < ActiveRecord::Base
end
end
- def state_human_name
- if merged?
- "Merged"
- elsif closed?
- "Closed"
- else
- "Open"
- end
- end
-
- def state_icon_name
- if merged?
- "check"
- elsif closed?
- "times"
- else
- "circle-o"
- end
- end
-
def fetch_ref
target_project.repository.fetch_ref(
source_project.repository.path_to_repo,
diff --git a/app/views/projects/merge_requests/show/_mr_title.html.haml b/app/views/projects/merge_requests/show/_mr_title.html.haml
index e7c5bca6a37..43842409852 100644
--- a/app/views/projects/merge_requests/show/_mr_title.html.haml
+++ b/app/views/projects/merge_requests/show/_mr_title.html.haml
@@ -5,9 +5,9 @@
.clearfix.detail-page-header
.issuable-header
.issuable-status-box.status-box{ class: status_box_class(@merge_request) }
- = icon(@merge_request.state_icon_name, class: "hidden-sm hidden-md hidden-lg")
+ = merge_request_state_icon(@merge_request, class: "hidden-sm hidden-md hidden-lg")
%span.hidden-xs
- = @merge_request.state_human_name
+ = merge_request_state(@merge_request)
%a.btn.btn-default.pull-right.visible-xs-block.gutter-toggle.issuable-gutter-toggle.js-sidebar-toggle{ href: "#" }
= icon('angle-double-left')
diff --git a/spec/helpers/merge_requests_helper_spec.rb b/spec/helpers/merge_requests_helper_spec.rb
index 903224589dd..ff67754b658 100644
--- a/spec/helpers/merge_requests_helper_spec.rb
+++ b/spec/helpers/merge_requests_helper_spec.rb
@@ -1,6 +1,55 @@
require 'spec_helper'
describe MergeRequestsHelper do
+ describe 'merge_request_state_icon' do
+ it 'returns the correct icon for merged' do
+ merge = double(merged?: true)
+ icon = helper.merge_request_state_icon(merge)
+
+ expect(icon).to include('check')
+ end
+
+ it 'returns the correct icon for closed' do
+ merge = double(merged?: false, closed?: true)
+ icon = helper.merge_request_state_icon(merge)
+
+ expect(icon).to include('times')
+ end
+
+ it 'returns the correct icon for other' do
+ merge = double(merged?: false, closed?: false)
+ icon = helper.merge_request_state_icon(merge)
+
+ expect(icon).to include('circle-o')
+ end
+
+ it 'passes options to the icon helper' do
+ icon = helper.merge_request_state_icon(spy, class: 'foo bar')
+
+ expect(icon).to include('foo bar')
+ end
+ end
+
+ describe 'merge_request_state' do
+ it 'returns the correct state for merged' do
+ merge = double(merged?: true)
+
+ expect(helper.merge_request_state(merge)).to eq 'Merged'
+ end
+
+ it 'returns the correct state for closed' do
+ merge = double(merged?: false, closed?: true)
+
+ expect(helper.merge_request_state(merge)).to eq 'Closed'
+ end
+
+ it 'returns the correc state for other' do
+ merge = double(merged?: false, closed?: false)
+
+ expect(helper.merge_request_state(merge)).to eq 'Open'
+ end
+ end
+
describe 'ci_build_details_path' do
let(:project) { create :project }
let(:merge_request) { MergeRequest.new }