diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index ca3a1806ee8b1b43673a44faf4b7ef1fe8c3a1ef..7a817eedec2447354ef598ffa45aff384b12cfab 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -605,6 +605,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 0000000000000000000000000000000000000000..ec5fb6ac079324b0aa7f5319354cc46b12ac68b1 --- /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 09f3b97ec587a01905d9024d5eb5f624fed8d0b8..f5d079c27c4044398df1683140ced04ab6cd632c 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