Make "merge ongoing" check more consistent

This commit is contained in:
Oswaldo Ferreira 2017-10-11 18:21:25 +02:00
parent efeaf3bd41
commit 9ab0254085
3 changed files with 27 additions and 2 deletions

View File

@ -396,7 +396,7 @@ class MergeRequest < ActiveRecord::Base
end
def merge_ongoing?
!!merge_jid && !merged?
!!merge_jid && !merged? && Gitlab::SidekiqStatus.num_running([merge_jid]) > 0
end
def closed_without_fork?

View File

@ -0,0 +1,5 @@
---
title: Make "merge ongoing" check more consistent
merge_request:
author:
type: fixed

View File

@ -1460,11 +1460,31 @@ describe MergeRequest do
end
describe '#merge_ongoing?' do
it 'returns true when merge_id is present and MR is not merged' do
it 'returns true when merge_id, MR is not merged and it has no running job' do
merge_request = build_stubbed(:merge_request, state: :open, merge_jid: 'foo')
allow(Gitlab::SidekiqStatus).to receive(:num_running).with(['foo']) { 1 }
expect(merge_request.merge_ongoing?).to be(true)
end
it 'returns false when merge_jid is nil' do
merge_request = build_stubbed(:merge_request, state: :open, merge_jid: nil)
expect(merge_request.merge_ongoing?).to be(false)
end
it 'returns false if MR is merged' do
merge_request = build_stubbed(:merge_request, state: :merged, merge_jid: 'foo')
expect(merge_request.merge_ongoing?).to be(false)
end
it 'returns false if there is no merge job running' do
merge_request = build_stubbed(:merge_request, state: :open, merge_jid: 'foo')
allow(Gitlab::SidekiqStatus).to receive(:num_running).with(['foo']) { 0 }
expect(merge_request.merge_ongoing?).to be(false)
end
end
describe "#closed_without_fork?" do