85 lines
1.9 KiB
Ruby
85 lines
1.9 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'spec_helper'
|
||
|
|
||
|
describe ::Gitlab::Ci::Config::Entry::Needs do
|
||
|
subject(:needs) { described_class.new(config) }
|
||
|
|
||
|
before do
|
||
|
needs.metadata[:allowed_needs] = %i[job]
|
||
|
end
|
||
|
|
||
|
describe 'validations' do
|
||
|
before do
|
||
|
needs.compose!
|
||
|
end
|
||
|
|
||
|
context 'when entry config value is correct' do
|
||
|
let(:config) { ['job_name'] }
|
||
|
|
||
|
describe '#valid?' do
|
||
|
it { is_expected.to be_valid }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when config value has wrong type' do
|
||
|
let(:config) { 123 }
|
||
|
|
||
|
describe '#valid?' do
|
||
|
it { is_expected.not_to be_valid }
|
||
|
end
|
||
|
|
||
|
describe '#errors' do
|
||
|
it 'returns error about incorrect type' do
|
||
|
expect(needs.errors)
|
||
|
.to include('needs config can only be a hash or an array')
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when wrong needs type is used' do
|
||
|
let(:config) { [123] }
|
||
|
|
||
|
describe '#valid?' do
|
||
|
it { is_expected.not_to be_valid }
|
||
|
end
|
||
|
|
||
|
describe '#errors' do
|
||
|
it 'returns error about incorrect type' do
|
||
|
expect(needs.errors).to contain_exactly(
|
||
|
'need has an unsupported type')
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe '.compose!' do
|
||
|
context 'when valid job entries composed' do
|
||
|
let(:config) { %w[first_job_name second_job_name] }
|
||
|
|
||
|
before do
|
||
|
needs.compose!
|
||
|
end
|
||
|
|
||
|
describe '#value' do
|
||
|
it 'returns key value' do
|
||
|
expect(needs.value).to eq(
|
||
|
job: [
|
||
|
{ name: 'first_job_name' },
|
||
|
{ name: 'second_job_name' }
|
||
|
]
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe '#descendants' do
|
||
|
it 'creates valid descendant nodes' do
|
||
|
expect(needs.descendants.count).to eq 2
|
||
|
expect(needs.descendants)
|
||
|
.to all(be_an_instance_of(::Gitlab::Ci::Config::Entry::Need))
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|