diff options
author | Katarzyna Kobierska <kkobierska@gmail.com> | 2016-09-08 13:25:16 +0200 |
---|---|---|
committer | Katarzyna Kobierska <kkobierska@gmail.com> | 2016-09-13 14:40:05 +0200 |
commit | 34c146a17dbb66322bc57b0755c979c05e7d4340 (patch) | |
tree | 94c876b4047f7cdff99a2a1f176891c7c39cd52e /spec | |
parent | 554baec9e8d2d077afff5502fdfa4ab78036499c (diff) | |
download | gitlab-ce-34c146a17dbb66322bc57b0755c979c05e7d4340.tar.gz |
Add #can_reopen? and tests
Diffstat (limited to 'spec')
-rw-r--r-- | spec/models/merge_request_spec.rb | 64 |
1 files changed, 45 insertions, 19 deletions
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index 4780d9fb3fe..d58156ba045 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -1039,24 +1039,24 @@ describe MergeRequest, models: true do end end - describe "#closed_without_source_project?" do + describe '#closed_without_source_project?' do let(:project) { create(:project) } let(:fork_project) { create(:project, forked_from_project: project) } let(:user) { create(:user) } let(:destroy_project) { Projects::DestroyService.new(fork_project, user, {}) } - context "when the merge request is closed" do + context 'when the merge request is closed' do let(:closed_merge_request) do create(:closed_merge_request, source_project: fork_project, target_project: project) end - it "returns false if the source project exist" do + it 'returns false if the source project exists' do expect(closed_merge_request.closed_without_source_project?).to be_falsey end - it "returns true if the source project does not exist" do + it 'returns true if the source project does not exist' do destroy_project.async_execute closed_merge_request.reload @@ -1064,29 +1064,55 @@ describe MergeRequest, models: true do end end - context "when the merge request is open" do - let(:open_merge_request) do - create(:merge_request, - source_project: fork_project, - target_project: project) - end - - it "returns false" do - expect(open_merge_request.closed_without_source_project?).to be_falsey + context 'when the merge request is open' do + it 'returns false' do + expect(subject.closed_without_source_project?).to be_falsey end end end describe '#can_reopen?' do - it "returns true" do - subject.close - binding.pry + context 'when the merge request is closed' do + it 'returns true' do + subject.close - expect(subject.can_reopen?).to be_truthy + expect(subject.can_reopen?).to be_truthy + end + + context 'forked project' do + let(:project) { create(:project) } + let(:fork_project) { create(:project, forked_from_project: project) } + let(:user) { create(:user) } + let(:merge_request) do + create(:closed_merge_request, + source_project: fork_project, + target_project: project) + end + + it 'returns false if unforked' do + Projects::UnlinkForkService.new(fork_project, user).execute + + expect(merge_request.reload.can_reopen?).to be_falsey + end + + it 'returns false if the source project is deleted' do + Projects::DestroyService.new(fork_project, user, {}).async_execute + + expect(merge_request.reload.can_reopen?).to be_falsey + end + + it 'returnes false if the merge request is merged' do + merge_request.update_attributes(state: 'merged') + + expect(merge_request.reload.can_reopen?).to be_falsey + end + end end - it "returns false" do - expect(subject.can_reopen?).to be_falsey + context 'when merge request is opened' do + it 'returns false' do + expect(subject.can_reopen?).to be_falsey + end end end end |