summaryrefslogtreecommitdiff
path: root/spec/services
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2016-04-04 15:37:08 +0000
committerDouwe Maan <douwe@gitlab.com>2016-04-04 15:37:08 +0000
commitf505c753b02a7a0b41cc42a85ac15017af4ed86f (patch)
treed1ea34378c2fcf74db0c0b1937f14d3df84d4ff4 /spec/services
parent5e8740eef01ff5263a8b75a96d2109dfae2c63c0 (diff)
parenta6b5b50e14885a82530794c6ea35c940305244dd (diff)
downloadgitlab-ce-f505c753b02a7a0b41cc42a85ac15017af4ed86f.tar.gz
Merge branch 'fix_remove_fork_link' into 'master'
Remove fork link closes all merge requests opened on source project Currently, if you: - create a fork - open a merge request on the source project - remove the fork link The created MR cannot be closed. With this MR, all pending MR is closed when the fork link is removed. See merge request !3189
Diffstat (limited to 'spec/services')
-rw-r--r--spec/services/projects/unlink_fork_service_spec.rb32
1 files changed, 32 insertions, 0 deletions
diff --git a/spec/services/projects/unlink_fork_service_spec.rb b/spec/services/projects/unlink_fork_service_spec.rb
new file mode 100644
index 00000000000..23f5555d3e0
--- /dev/null
+++ b/spec/services/projects/unlink_fork_service_spec.rb
@@ -0,0 +1,32 @@
+require 'spec_helper'
+
+describe Projects::UnlinkForkService, services: true do
+ subject { Projects::UnlinkForkService.new(fork_project, user) }
+
+ let(:fork_link) { create(:forked_project_link) }
+ let(:fork_project) { fork_link.forked_to_project }
+ let(:user) { create(:user) }
+
+ context 'with opened merge request on the source project' do
+ let(:merge_request) { create(:merge_request, source_project: fork_project, target_project: fork_link.forked_from_project) }
+ let(:mr_close_service) { MergeRequests::CloseService.new(fork_project, user) }
+
+ before do
+ allow(MergeRequests::CloseService).to receive(:new).
+ with(fork_project, user).
+ and_return(mr_close_service)
+ end
+
+ it 'close all pending merge requests' do
+ expect(mr_close_service).to receive(:execute).with(merge_request)
+
+ subject.execute
+ end
+ end
+
+ it 'remove fork relation' do
+ expect(fork_project.forked_project_link).to receive(:destroy)
+
+ subject.execute
+ end
+end