spec/lib/release_tools/branch_spec.rb (61 lines of code) (raw):
# frozen_string_literal: true
require 'spec_helper'
describe ReleaseTools::Branch do
subject(:branch) do
described_class.new(name: branch_name, project: project)
end
let(:branch_name) { 'release-tools-create-branch' }
let(:client) { stub_const('ReleaseTools::GitlabClient', spy) }
let(:project) { ReleaseTools::Project::GitlabCe }
describe '#create', vcr: { cassette_name: 'branches/create' } do
it 'creates a new branch in the given project' do
without_dry_run do
expect(branch.create(ref: '9-4-stable')).to be_truthy
end
end
it 'points the branch to the correct ref' do
without_dry_run do
response = branch.create(ref: '9-4-stable')
expect(response.commit.short_id).to eq 'b125d211'
end
end
end
describe '#exist?' do
it 'returns the status of the branch' do
allow(client)
.to receive(:find_branch)
.and_return(create(:branch))
expect(branch).to exist
end
context 'when the branch does not exist' do
it 'returns the status of the branch' do
allow(client)
.to receive(:find_branch)
.and_return(nil)
expect(branch).not_to exist
end
end
end
describe '#last_commit' do
it 'return the lastest commit of a branch' do
# Set values for branch name and project
allow(client)
.to receive(:commit)
.with(project, ref: branch_name)
.and_return(create(:commit, short_id: 'b125d211'))
expect(branch.last_commit.short_id).to eq 'b125d211'
end
end
describe '#version' do
context 'with a regular branch' do
it 'returns nil' do
expect(branch.version).to be_nil
end
end
context 'with a stable branch' do
let(:branch_name) { '16-10-stable-ee' }
it 'returns a version object' do
expect(branch.version).to eq('16.10.0')
expect(branch.version).to be_an_instance_of(ReleaseTools::Version)
end
end
end
end