summaryrefslogtreecommitdiff
path: root/spec/services/merge_requests/merge_service_spec.rb
diff options
context:
space:
mode:
authorFelipe Artur <felipefac@gmail.com>2016-09-30 11:53:44 -0300
committerFelipe Artur <felipefac@gmail.com>2016-10-03 19:58:49 -0300
commit45bfadbcbf0eec5bf7c691b13751f684e3c62c5c (patch)
tree43d22923083a11c4395cde44629b242b38df50fc /spec/services/merge_requests/merge_service_spec.rb
parenta1aea3266e4b90869d5a9bcc334272996ab80fda (diff)
downloadgitlab-ce-45bfadbcbf0eec5bf7c691b13751f684e3c62c5c.tar.gz
Fix bug when trying to cache closed issues from external issue trackersissue_22446
Diffstat (limited to 'spec/services/merge_requests/merge_service_spec.rb')
-rw-r--r--spec/services/merge_requests/merge_service_spec.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/spec/services/merge_requests/merge_service_spec.rb b/spec/services/merge_requests/merge_service_spec.rb
index 31167675d07..e49a0d5e553 100644
--- a/spec/services/merge_requests/merge_service_spec.rb
+++ b/spec/services/merge_requests/merge_service_spec.rb
@@ -38,6 +38,42 @@ describe MergeRequests::MergeService, services: true do
end
end
+ context 'closes related issues' do
+ let(:service) { described_class.new(project, user, commit_message: 'Awesome message') }
+
+ before do
+ allow(project).to receive(:default_branch).and_return(merge_request.target_branch)
+ end
+
+ it 'closes GitLab issue tracker issues' do
+ issue = create :issue, project: project
+ commit = double('commit', safe_message: "Fixes #{issue.to_reference}")
+ allow(merge_request).to receive(:commits).and_return([commit])
+
+ service.execute(merge_request)
+
+ expect(issue.reload.closed?).to be_truthy
+ end
+
+ context 'with JIRA integration' do
+ include JiraServiceHelper
+
+ let(:jira_tracker) { project.create_jira_service }
+
+ before { jira_service_settings }
+
+ it 'closes issues on JIRA issue tracker' do
+ jira_issue = ExternalIssue.new('JIRA-123', project)
+ commit = double('commit', safe_message: "Fixes #{jira_issue.to_reference}")
+ allow(merge_request).to receive(:commits).and_return([commit])
+
+ expect_any_instance_of(JiraService).to receive(:close_issue).with(merge_request, jira_issue).once
+
+ service.execute(merge_request)
+ end
+ end
+ end
+
context 'closes related todos' do
let(:merge_request) { create(:merge_request, assignee: user, author: user) }
let(:project) { merge_request.project }