diff options
author | Robert Speicher <rspeicher@gmail.com> | 2016-10-25 15:05:23 +0100 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2016-10-25 15:05:23 +0100 |
commit | e396fef2b444db353b398213d205a404e3a92da0 (patch) | |
tree | 80a993630b6e42f3aa24e6da4b9186dab3ab73bf | |
parent | 9a6770388c0e93f98952a40cc88bb7f5ecd23631 (diff) | |
download | gitlab-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.rb | 23 | ||||
-rw-r--r-- | app/models/merge_request.rb | 20 | ||||
-rw-r--r-- | app/views/projects/merge_requests/show/_mr_title.html.haml | 4 | ||||
-rw-r--r-- | spec/helpers/merge_requests_helper_spec.rb | 49 |
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 } |