spec/lib/release_tools/merge_request_spec.rb (70 lines of code) (raw):

# frozen_string_literal: true require 'spec_helper' describe ReleaseTools::MergeRequest do it_behaves_like 'issuable #initialize' it_behaves_like 'merge_request #accept' it_behaves_like 'issuable #url' it_behaves_like 'issuable #create', :create_merge_request do let(:project_path) { subject.project.path } end describe '#source_branch' do it 'raises if source_branch is not set' do expect { described_class.new.source_branch }.to raise_error(ArgumentError, 'Please set a `source_branch`!') end it 'can be set' do expect(described_class.new(source_branch: 'foo').source_branch).to eq('foo') end end describe '#target_branch' do it 'defaults to `master`' do expect(described_class.new.target_branch).to eq('master') end it 'can be set' do expect(described_class.new(target_branch: 'foo').target_branch).to eq('foo') end end describe '#to_reference' do it 'returns the valid reference string' do merge_request = described_class.new allow(merge_request).to receive(:iid).and_return(1234) expect(merge_request.to_reference).to eq('gitlab-org/gitlab!1234') end end describe '#conflicts' do it 'returns nil if no conflicts are given' do expect(described_class.new.conflicts).to be_nil end it 'returns array of conflicts if given' do expect(described_class.new(conflicts: %i[a b c]).conflicts).to eq(%i[a b c]) end end describe '#conflicts?' do it 'returns false if conflicts are nil' do expect(described_class.new.conflicts?).to be_falsey end it 'returns false if conflicts are empty' do expect(described_class.new(conflicts: %i[]).conflicts?).to be_falsey end it 'returns true of conflicts are given' do expect(described_class.new(conflicts: %i[a b c]).conflicts?).to be_truthy end end describe '#remote_issuable' do it 'searches by source_branch' do expect(ReleaseTools::GitlabClient) .to receive(:merge_requests) .with(subject.project.path, { state: 'opened', source_branch: 'foo' }) .and_return([]) described_class.new(source_branch: 'foo').remote_issuable end end describe '#web_url' do it 'return web_url attribute' do expect(described_class.new(web_url: 'foo').web_url).to eq('foo') end it 'calls #url method when there is no web_url attribute' do mr = described_class.new expect(mr).to receive(:url).and_return(nil) mr.web_url end end end