Add specs for extracted git push class
This commit is contained in:
parent
76d9e29a65
commit
4abba28944
|
@ -3,6 +3,8 @@
|
||||||
module Gitlab
|
module Gitlab
|
||||||
module Git
|
module Git
|
||||||
class Push
|
class Push
|
||||||
|
include Gitlab::Utils::StrongMemoize
|
||||||
|
|
||||||
attr_reader :oldrev, :newrev
|
attr_reader :oldrev, :newrev
|
||||||
|
|
||||||
def initialize(project, oldrev, newrev, ref)
|
def initialize(project, oldrev, newrev, ref)
|
||||||
|
@ -13,7 +15,9 @@ module Gitlab
|
||||||
end
|
end
|
||||||
|
|
||||||
def branch_name
|
def branch_name
|
||||||
@branch_name ||= Gitlab::Git.ref_name(@ref)
|
strong_memoize(:branch_name) do
|
||||||
|
Gitlab::Git.branch_name(@ref)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def branch_added?
|
def branch_added?
|
||||||
|
@ -29,7 +33,9 @@ module Gitlab
|
||||||
end
|
end
|
||||||
|
|
||||||
def branch_push?
|
def branch_push?
|
||||||
Gitlab::Git.branch_ref?(@ref)
|
strong_memoize(:branch_push) do
|
||||||
|
Gitlab::Git.branch_ref?(@ref)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,83 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Gitlab::Git::Push do
|
||||||
|
set(:project) { create(:project, :repository) }
|
||||||
|
|
||||||
|
let(:oldrev) { project.commit('HEAD~10').id }
|
||||||
|
let(:newrev) { project.commit.id }
|
||||||
|
let(:ref) { 'refs/heads/some-branch' }
|
||||||
|
|
||||||
|
subject { described_class.new(project, oldrev, newrev, ref) }
|
||||||
|
|
||||||
|
describe '#branch_name' do
|
||||||
|
context 'when it is a branch push' do
|
||||||
|
let(:ref) { 'refs/heads/my-branch' }
|
||||||
|
|
||||||
|
it 'returns branch name' do
|
||||||
|
expect(subject.branch_name).to eq 'my-branch'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when it is a tag push' do
|
||||||
|
let(:ref) { 'refs/tags/my-branch' }
|
||||||
|
|
||||||
|
it 'returns nil' do
|
||||||
|
expect(subject.branch_name).to be_nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#branch_push?' do
|
||||||
|
context 'when pushing a branch ref' do
|
||||||
|
let(:ref) { 'refs/heads/my-branch' }
|
||||||
|
|
||||||
|
it { is_expected.to be_branch_push }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when it is a tag push' do
|
||||||
|
let(:ref) { 'refs/tags/my-branch' }
|
||||||
|
|
||||||
|
it { is_expected.not_to be_branch_push }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#force_push?' do
|
||||||
|
context 'when old revision is an ancestor of the new revision' do
|
||||||
|
let(:oldrev) { 'HEAD~3' }
|
||||||
|
let(:newrev) { 'HEAD~1' }
|
||||||
|
|
||||||
|
it { is_expected.not_to be_force_push }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when old revision is not an ancestor of the new revision' do
|
||||||
|
let(:oldrev) { 'HEAD~3' }
|
||||||
|
let(:newrev) { '123456' }
|
||||||
|
|
||||||
|
it { is_expected.to be_force_push }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#branch_added?' do
|
||||||
|
context 'when old revision is defined' do
|
||||||
|
it { is_expected.not_to be_branch_added }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when old revision is not defined' do
|
||||||
|
let(:oldrev) { Gitlab::Git::BLANK_SHA }
|
||||||
|
|
||||||
|
it { is_expected.to be_branch_added }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#branch_removed?' do
|
||||||
|
context 'when new revision is defined' do
|
||||||
|
it { is_expected.not_to be_branch_removed }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when new revision is not defined' do
|
||||||
|
let(:newrev) { Gitlab::Git::BLANK_SHA }
|
||||||
|
|
||||||
|
it { is_expected.to be_branch_removed }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue