diff options
author | Oswaldo Ferreira <oswaldo@gitlab.com> | 2017-10-11 18:21:25 +0200 |
---|---|---|
committer | Oswaldo Ferreira <oswaldo@gitlab.com> | 2017-10-11 18:48:39 +0200 |
commit | 9ab0254085cc4eed5cda322b6d5998c320ceef2c (patch) | |
tree | 10d431117f17496aa9ea0bb448504fbca4590038 | |
parent | efeaf3bd41e60be1405b7e3ccfcfb6cb4747518c (diff) | |
download | gitlab-ce-9ab0254085cc4eed5cda322b6d5998c320ceef2c.tar.gz |
Make "merge ongoing" check more consistent
-rw-r--r-- | app/models/merge_request.rb | 2 | ||||
-rw-r--r-- | changelogs/unreleased/39032-improve-merge-ongoing-check-consistency.yml | 5 | ||||
-rw-r--r-- | spec/models/merge_request_spec.rb | 22 |
3 files changed, 27 insertions, 2 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 972a35dde4d..e34714e3f9e 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -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? diff --git a/changelogs/unreleased/39032-improve-merge-ongoing-check-consistency.yml b/changelogs/unreleased/39032-improve-merge-ongoing-check-consistency.yml new file mode 100644 index 00000000000..361b6af196a --- /dev/null +++ b/changelogs/unreleased/39032-improve-merge-ongoing-check-consistency.yml @@ -0,0 +1,5 @@ +--- +title: Make "merge ongoing" check more consistent +merge_request: +author: +type: fixed diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index 17c9f15b021..09d7d0dbbe6 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -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 |