Commit 926002fd authored by Stan Hu's avatar Stan Hu

Fix Error 500s creating merge requests with external issue tracker

When JIRA or Redmine were enabled and the branch name did not match the
matching regular expression, the `issue_iid` would be `nil`, preventing
users from creating merge requests.

Closes #43193
parent 498ade48
...@@ -160,10 +160,12 @@ module MergeRequests ...@@ -160,10 +160,12 @@ module MergeRequests
merge_request.title = "Resolve \"#{issue.title}\"" if issue.is_a?(Issue) merge_request.title = "Resolve \"#{issue.title}\"" if issue.is_a?(Issue)
unless merge_request.title return if merge_request.title.present?
branch_title = source_branch.downcase.remove(issue_iid.downcase).titleize.humanize
if issue_iid.present?
merge_request.title = "Resolve #{issue_iid}" merge_request.title = "Resolve #{issue_iid}"
merge_request.title += " \"#{branch_title}\"" unless branch_title.empty? branch_title = source_branch.downcase.remove(issue_iid.downcase).titleize.humanize
merge_request.title += " \"#{branch_title}\"" if branch_title.present?
end end
end end
......
...@@ -286,15 +286,24 @@ describe MergeRequests::BuildService do ...@@ -286,15 +286,24 @@ describe MergeRequests::BuildService do
end end
end end
context 'branch starts with JIRA-formatted external issue IID' do describe 'with JIRA enabled' do
let(:source_branch) { 'EXMPL-12345' }
before do before do
allow(project).to receive(:external_issue_tracker).and_return(true) allow(project).to receive(:external_issue_tracker).and_return(true)
allow(project).to receive(:issues_enabled?).and_return(false) allow(project).to receive(:issues_enabled?).and_return(false)
allow(project).to receive(:external_issue_reference_pattern).and_return(IssueTrackerService.reference_pattern) allow(project).to receive(:external_issue_reference_pattern).and_return(IssueTrackerService.reference_pattern)
end end
context 'branch does not start with JIRA-formatted external issue IID' do
let(:source_branch) { 'test-branch' }
it 'sets the title to the humanized branch title' do
expect(merge_request.title).to eq('Test branch')
end
end
context 'branch starts with JIRA-formatted external issue IID' do
let(:source_branch) { 'EXMPL-12345' }
it 'sets the title to the humanized branch title' do it 'sets the title to the humanized branch title' do
expect(merge_request.title).to eq('Resolve EXMPL-12345') expect(merge_request.title).to eq('Resolve EXMPL-12345')
end end
...@@ -316,6 +325,7 @@ describe MergeRequests::BuildService do ...@@ -316,6 +325,7 @@ describe MergeRequests::BuildService do
end end
end end
end end
end
context 'source branch does not exist' do context 'source branch does not exist' do
before do before do
......
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