Commit 31b6ca50 authored by Rémy Coutable's avatar Rémy Coutable

Merge branch '24137-issuable-permalink' into 'master'

link issuable reference to itself in header

Closes #24137

See merge request !9641
parents 23d7bd8b ac669df5
module IssuablesHelper module IssuablesHelper
include GitlabRoutingHelper
def sidebar_gutter_toggle_icon def sidebar_gutter_toggle_icon
sidebar_gutter_collapsed? ? icon('angle-double-left', { 'aria-hidden': 'true' }) : icon('angle-double-right', { 'aria-hidden': 'true' }) sidebar_gutter_collapsed? ? icon('angle-double-left', { 'aria-hidden': 'true' }) : icon('angle-double-right', { 'aria-hidden': 'true' })
end end
...@@ -95,8 +97,23 @@ module IssuablesHelper ...@@ -95,8 +97,23 @@ module IssuablesHelper
h(milestone_title.presence || default_label) h(milestone_title.presence || default_label)
end end
def to_url_reference(issuable)
case issuable
when Issue
link_to issuable.to_reference, issue_url(issuable)
when MergeRequest
link_to issuable.to_reference, merge_request_url(issuable)
else
issuable.to_reference
end
end
def issuable_meta(issuable, project, text) def issuable_meta(issuable, project, text)
output = content_tag :strong, "#{text} #{issuable.to_reference}", class: "identifier" output = content_tag(:strong, class: "identifier") do
concat("#{text} ")
concat(to_url_reference(issuable))
end
output << " opened #{time_ago_with_tooltip(issuable.created_at)} by ".html_safe output << " opened #{time_ago_with_tooltip(issuable.created_at)} by ".html_safe
output << content_tag(:strong) do output << content_tag(:strong) do
author_output = link_to_member(project, issuable.author, size: 24, mobile_classes: "hidden-xs", tooltip: true) author_output = link_to_member(project, issuable.author, size: 24, mobile_classes: "hidden-xs", tooltip: true)
......
---
title: Link issuable reference to itself in meta-header
merge_request: 9641
author: mhasbini
require 'rails_helper' require 'rails_helper'
describe 'New/edit issue', feature: true, js: true do describe 'New/edit issue', feature: true, js: true do
include GitlabRoutingHelper
let!(:project) { create(:project) } let!(:project) { create(:project) }
let!(:user) { create(:user)} let!(:user) { create(:user)}
let!(:user2) { create(:user)} let!(:user2) { create(:user)}
...@@ -78,6 +80,14 @@ describe 'New/edit issue', feature: true, js: true do ...@@ -78,6 +80,14 @@ describe 'New/edit issue', feature: true, js: true do
expect(page).to have_content label2.title expect(page).to have_content label2.title
end end
end end
page.within '.issuable-meta' do
issue = Issue.find_by(title: 'title')
expect(page).to have_text("Issue #{issue.to_reference}")
# compare paths because the host differ in test
expect(find_link(issue.to_reference)[:href]).to end_with(issue_path(issue))
end
end end
it 'correctly updates the dropdown toggle when removing a label' do it 'correctly updates the dropdown toggle when removing a label' do
......
require 'rails_helper' require 'rails_helper'
describe 'New/edit merge request', feature: true, js: true do describe 'New/edit merge request', feature: true, js: true do
include GitlabRoutingHelper
let!(:project) { create(:project, visibility_level: Gitlab::VisibilityLevel::PUBLIC) } let!(:project) { create(:project, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
let(:fork_project) { create(:project, forked_from_project: project) } let(:fork_project) { create(:project, forked_from_project: project) }
let!(:user) { create(:user)} let!(:user) { create(:user)}
...@@ -84,6 +86,15 @@ describe 'New/edit merge request', feature: true, js: true do ...@@ -84,6 +86,15 @@ describe 'New/edit merge request', feature: true, js: true do
expect(page).to have_content label2.title expect(page).to have_content label2.title
end end
end end
page.within '.issuable-meta' do
merge_request = MergeRequest.find_by(source_branch: 'fix')
expect(page).to have_text("Merge Request #{merge_request.to_reference}")
# compare paths because the host differ in test
expect(find_link(merge_request.to_reference)[:href])
.to end_with(merge_request_path(merge_request))
end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment