Merge branch '24333-close-issues-with-merge-request-title-ui' into 'master'

Show mentioned/issues being closed from a Merge Requests title

Closes #24333

See merge request !9194
This commit is contained in:
Rémy Coutable 2017-02-13 18:30:56 +00:00
commit b35378a938
3 changed files with 36 additions and 5 deletions

View file

@ -561,7 +561,7 @@ class MergeRequest < ActiveRecord::Base
# Return the set of issues that will be closed if this merge request is accepted. # Return the set of issues that will be closed if this merge request is accepted.
def closes_issues(current_user = self.author) def closes_issues(current_user = self.author)
if target_branch == project.default_branch if target_branch == project.default_branch
messages = [description] messages = [title, description]
messages.concat(commits.map(&:safe_message)) if merge_request_diff messages.concat(commits.map(&:safe_message)) if merge_request_diff
Gitlab::ClosingIssueExtractor.new(project, current_user). Gitlab::ClosingIssueExtractor.new(project, current_user).
@ -575,7 +575,7 @@ class MergeRequest < ActiveRecord::Base
return [] unless target_branch == project.default_branch return [] unless target_branch == project.default_branch
ext = Gitlab::ReferenceExtractor.new(project, current_user) ext = Gitlab::ReferenceExtractor.new(project, current_user)
ext.analyze(description) ext.analyze("#{title}\n#{description}")
ext.issues - closes_issues(current_user) ext.issues - closes_issues(current_user)
end end

View file

@ -0,0 +1,5 @@
---
title: Show Issues mentioned / being closed from a Merge Requests title below the
'Accept Merge Request' button
merge_request: 9194
author: Jan Christophersen

View file

@ -10,10 +10,12 @@ feature 'Merge Request closing issues message', feature: true do
:merge_request, :merge_request,
:simple, :simple,
source_project: project, source_project: project,
description: merge_request_description description: merge_request_description,
title: merge_request_title
) )
end end
let(:merge_request_description) { 'Merge Request Description' } let(:merge_request_description) { 'Merge Request Description' }
let(:merge_request_title) { 'Merge Request Title' }
before do before do
project.team << [user, :master] project.team << [user, :master]
@ -45,8 +47,32 @@ feature 'Merge Request closing issues message', feature: true do
end end
end end
context 'closing some issues and mentioning, but not closing, others' do context 'closing some issues in title and mentioning, but not closing, others' do
let(:merge_request_description) { "Description\n\ncloses #{issue_1.to_reference}\n\n refers to #{issue_2.to_reference}" } let(:merge_request_title) { "closes #{issue_1.to_reference}\n\n refers to #{issue_2.to_reference}" }
it 'does not display closing issue message' do
expect(page).to have_content("Accepting this merge request will close issue #{issue_1.to_reference}. Issue #{issue_2.to_reference} is mentioned but will not be closed.")
end
end
context 'closing issues using title but not mentioning any other issue' do
let(:merge_request_title) { "closing #{issue_1.to_reference}, #{issue_2.to_reference}" }
it 'does not display closing issue message' do
expect(page).to have_content("Accepting this merge request will close issues #{issue_1.to_reference} and #{issue_2.to_reference}")
end
end
context 'mentioning issues using title but not closing them' do
let(:merge_request_title) { "Refers to #{issue_1.to_reference} and #{issue_2.to_reference}" }
it 'does not display closing issue message' do
expect(page).to have_content("Issues #{issue_1.to_reference} and #{issue_2.to_reference} are mentioned but will not be closed.")
end
end
context 'closing some issues using title and mentioning, but not closing, others' do
let(:merge_request_title) { "closes #{issue_1.to_reference}\n\n refers to #{issue_2.to_reference}" }
it 'does not display closing issue message' do it 'does not display closing issue message' do
expect(page).to have_content("Accepting this merge request will close issue #{issue_1.to_reference}. Issue #{issue_2.to_reference} is mentioned but will not be closed.") expect(page).to have_content("Accepting this merge request will close issue #{issue_1.to_reference}. Issue #{issue_2.to_reference} is mentioned but will not be closed.")