diff options
Diffstat (limited to 'spec/services/auto_merge/base_service_spec.rb')
-rw-r--r-- | spec/services/auto_merge/base_service_spec.rb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/spec/services/auto_merge/base_service_spec.rb b/spec/services/auto_merge/base_service_spec.rb index be5b753f484..8cd33f8ff1e 100644 --- a/spec/services/auto_merge/base_service_spec.rb +++ b/spec/services/auto_merge/base_service_spec.rb @@ -301,4 +301,45 @@ RSpec.describe AutoMerge::BaseService, feature_category: :code_review_workflow d specify { expect(service).to respond_to :process } specify { expect { service.process(nil) }.to raise_error NotImplementedError } end + + describe '#available_for?' do + using RSpec::Parameterized::TableSyntax + + subject(:available_for) { service.available_for?(merge_request) { true } } + + let(:merge_request) { create(:merge_request) } + + where(:can_be_merged, :open, :broken, :discussions, :blocked, :draft, :skip_draft, :skip_blocked, + :skip_discussions, :result) do + true | true | false | true | false | false | false | false | false | true + true | true | false | true | false | false | true | true | false | true + true | true | false | true | false | true | true | false | false | true + true | true | false | true | true | false | false | true | false | true + true | true | false | false | false | false | false | false | true | true + true | true | false | true | false | true | false | false | false | false + false | true | false | true | false | false | false | false | false | false + true | false | false | true | false | false | false | false | false | false + true | true | true | true | false | false | false | false | false | false + true | true | false | false | false | false | false | false | false | false + true | true | false | true | true | false | false | false | false | false + end + + with_them do + before do + allow(service).to receive(:skip_draft_check).and_return(skip_draft) + allow(service).to receive(:skip_blocked_check).and_return(skip_blocked) + allow(service).to receive(:skip_discussions_check).and_return(skip_discussions) + allow(merge_request).to receive(:can_be_merged_by?).and_return(can_be_merged) + allow(merge_request).to receive(:open?).and_return(open) + allow(merge_request).to receive(:broken?).and_return(broken) + allow(merge_request).to receive(:draft?).and_return(draft) + allow(merge_request).to receive(:mergeable_discussions_state?).and_return(discussions) + allow(merge_request).to receive(:merge_blocked_by_other_mrs?).and_return(blocked) + end + + it 'returns the expected results' do + expect(available_for).to eq(result) + end + end + end end |