diff options
Diffstat (limited to 'spec/models/merge_request_spec.rb')
-rw-r--r-- | spec/models/merge_request_spec.rb | 66 |
1 files changed, 56 insertions, 10 deletions
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index 50bb194ef71..52cd31ee65f 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -2335,6 +2335,21 @@ describe MergeRequest do end end + describe "#public_merge_status" do + using RSpec::Parameterized::TableSyntax + subject { build(:merge_request, merge_status: status) } + + where(:status, :public_status) do + 'cannot_be_merged_rechecking' | 'checking' + 'checking' | 'checking' + 'cannot_be_merged' | 'cannot_be_merged' + end + + with_them do + it { expect(subject.public_merge_status).to eq(public_status) } + end + end + describe "#head_pipeline_active? " do it do is_expected @@ -3226,20 +3241,51 @@ describe MergeRequest do expect(notification_service).to receive(:merge_request_unmergeable).with(subject).once expect(todo_service).to receive(:merge_request_became_unmergeable).with(subject).once - subject.mark_as_unmergeable - subject.mark_as_unchecked - subject.mark_as_unmergeable + subject.mark_as_unmergeable! + + subject.mark_as_unchecked! + subject.mark_as_unmergeable! + end + + it 'notifies conflict, but does not notify again if rechecking still results in cannot_be_merged with async mergeability check' do + expect(notification_service).to receive(:merge_request_unmergeable).with(subject).once + expect(todo_service).to receive(:merge_request_became_unmergeable).with(subject).once + + subject.mark_as_checking! + subject.mark_as_unmergeable! + + subject.mark_as_unchecked! + subject.mark_as_checking! + subject.mark_as_unmergeable! end it 'notifies conflict, whenever newly unmergeable' do expect(notification_service).to receive(:merge_request_unmergeable).with(subject).twice expect(todo_service).to receive(:merge_request_became_unmergeable).with(subject).twice - subject.mark_as_unmergeable - subject.mark_as_unchecked - subject.mark_as_mergeable - subject.mark_as_unchecked - subject.mark_as_unmergeable + subject.mark_as_unmergeable! + + subject.mark_as_unchecked! + subject.mark_as_mergeable! + + subject.mark_as_unchecked! + subject.mark_as_unmergeable! + end + + it 'notifies conflict, whenever newly unmergeable with async mergeability check' do + expect(notification_service).to receive(:merge_request_unmergeable).with(subject).twice + expect(todo_service).to receive(:merge_request_became_unmergeable).with(subject).twice + + subject.mark_as_checking! + subject.mark_as_unmergeable! + + subject.mark_as_unchecked! + subject.mark_as_checking! + subject.mark_as_mergeable! + + subject.mark_as_unchecked! + subject.mark_as_checking! + subject.mark_as_unmergeable! end it 'does not notify whenever merge request is newly unmergeable due to other reasons' do @@ -3248,7 +3294,7 @@ describe MergeRequest do expect(notification_service).not_to receive(:merge_request_unmergeable) expect(todo_service).not_to receive(:merge_request_became_unmergeable) - subject.mark_as_unmergeable + subject.mark_as_unmergeable! end end end @@ -3261,7 +3307,7 @@ describe MergeRequest do expect(notification_service).not_to receive(:merge_request_unmergeable) expect(todo_service).not_to receive(:merge_request_became_unmergeable) - subject.mark_as_unmergeable + subject.mark_as_unmergeable! end end end |