87 lines
2 KiB
Ruby
87 lines
2 KiB
Ruby
|
require 'spec_helper'
|
||
|
|
||
|
describe Gitlab::Ci::Config::Node::Job do
|
||
|
let(:entry) { described_class.new(config, name: :rspec) }
|
||
|
|
||
|
before { entry.process! }
|
||
|
|
||
|
describe 'validations' do
|
||
|
context 'when entry config value is correct' do
|
||
|
let(:config) { { script: 'rspec' } }
|
||
|
|
||
|
describe '#valid?' do
|
||
|
it 'is valid' do
|
||
|
expect(entry).to be_valid
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when job name is empty' do
|
||
|
let(:entry) { described_class.new(config, name: ''.to_sym) }
|
||
|
|
||
|
it 'reports error' do
|
||
|
expect(entry.errors)
|
||
|
.to include "job name can't be blank"
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when entry value is not correct' do
|
||
|
context 'incorrect config value type' do
|
||
|
let(:config) { ['incorrect'] }
|
||
|
|
||
|
describe '#errors' do
|
||
|
it 'reports error about a config type' do
|
||
|
expect(entry.errors)
|
||
|
.to include 'job config should be a hash'
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when config is empty' do
|
||
|
let(:config) { {} }
|
||
|
|
||
|
describe '#valid' do
|
||
|
it 'is invalid' do
|
||
|
expect(entry).not_to be_valid
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'when unknown keys detected' do
|
||
|
let(:config) { { unknown: true } }
|
||
|
|
||
|
describe '#valid' do
|
||
|
it 'is not valid' do
|
||
|
expect(entry).not_to be_valid
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe '#value' do
|
||
|
context 'when entry is correct' do
|
||
|
let(:config) do
|
||
|
{ before_script: %w[ls pwd],
|
||
|
script: 'rspec',
|
||
|
after_script: %w[cleanup] }
|
||
|
end
|
||
|
|
||
|
it 'returns correct value' do
|
||
|
expect(entry.value)
|
||
|
.to eq(name: :rspec,
|
||
|
before_script: %w[ls pwd],
|
||
|
script: %w[rspec],
|
||
|
stage: 'test',
|
||
|
after_script: %w[cleanup])
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe '#relevant?' do
|
||
|
it 'is a relevant entry' do
|
||
|
expect(entry).to be_relevant
|
||
|
end
|
||
|
end
|
||
|
end
|