diff options
-rw-r--r-- | app/models/merge_request.rb | 2 | ||||
-rw-r--r-- | changelogs/unreleased/issue_36820.yml | 5 | ||||
-rw-r--r-- | spec/models/merge_request_spec.rb | 2 |
3 files changed, 9 insertions, 0 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index e83b11f7668..9fc526ec3ef 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -598,6 +598,8 @@ class MergeRequest < ActiveRecord::Base self.merge_requests_closing_issues.delete_all closes_issues(current_user).each do |issue| + next if issue.is_a?(ExternalIssue) + self.merge_requests_closing_issues.create!(issue: issue) end end diff --git a/changelogs/unreleased/issue_36820.yml b/changelogs/unreleased/issue_36820.yml new file mode 100644 index 00000000000..ec5fb6ac079 --- /dev/null +++ b/changelogs/unreleased/issue_36820.yml @@ -0,0 +1,5 @@ +--- +title: Remove closing external issues by reference error +merge_request: +author: +type: fixed diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index a1a3e70a7d2..5baa7c81ecc 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -159,6 +159,7 @@ describe MergeRequest do before do subject.project.has_external_issue_tracker = true subject.project.save! + create(:jira_service, project: subject.project) end it 'does not cache issues from external trackers' do @@ -166,6 +167,7 @@ describe MergeRequest do commit = double('commit1', safe_message: "Fixes #{issue.to_reference}") allow(subject).to receive(:commits).and_return([commit]) + expect { subject.cache_merge_request_closes_issues!(subject.author) }.not_to raise_error expect { subject.cache_merge_request_closes_issues!(subject.author) }.not_to change(subject.merge_requests_closing_issues, :count) end |