From 9ab0254085cc4eed5cda322b6d5998c320ceef2c Mon Sep 17 00:00:00 2001 From: Oswaldo Ferreira Date: Wed, 11 Oct 2017 18:21:25 +0200 Subject: Make "merge ongoing" check more consistent --- app/models/merge_request.rb | 2 +- ...032-improve-merge-ongoing-check-consistency.yml | 5 +++++ spec/models/merge_request_spec.rb | 22 +++++++++++++++++++++- 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 changelogs/unreleased/39032-improve-merge-ongoing-check-consistency.yml 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 -- cgit v1.2.1