Commit 9144dbc3 authored by Dylan Griffith's avatar Dylan Griffith

Merge branch 'refactor-ci-processable-validation-specs' into 'master'

Refactor Ci::Processable validation specs

See merge request gitlab-org/gitlab!29626
parents ba453d1c 9684084f
......@@ -52,69 +52,34 @@ describe Ci::Processable do
end
describe 'validate presence of scheduling_type' do
context 'on create' do
let(:processable) do
build(
:ci_build, :created, project: project, pipeline: pipeline,
importing: importing, scheduling_type: nil
)
end
using RSpec::Parameterized::TableSyntax
context 'when importing' do
let(:importing) { true }
context 'when validate_scheduling_type_of_processables is true' do
before do
stub_feature_flags(validate_scheduling_type_of_processables: true)
end
it 'does not validate' do
expect(processable).to be_valid
end
end
subject { build(:ci_build, project: project, pipeline: pipeline, importing: importing) }
context 'when validate_scheduling_type_of_processables is false' do
before do
stub_feature_flags(validate_scheduling_type_of_processables: false)
end
where(:importing, :validate_scheduling_type_flag, :should_validate) do
false | true | true
false | false | false
true | true | false
true | false | false
end
it 'does not validate' do
expect(processable).to be_valid
end
end
with_them do
before do
stub_feature_flags(validate_scheduling_type_of_processables: validate_scheduling_type_flag)
end
context 'when not importing' do
let(:importing) { false }
context 'when validate_scheduling_type_of_processables is true' do
before do
stub_feature_flags(validate_scheduling_type_of_processables: true)
end
it 'validates' do
expect(processable).not_to be_valid
end
end
context 'when validate_scheduling_type_of_processables is false' do
before do
stub_feature_flags(validate_scheduling_type_of_processables: false)
end
it 'does not validate' do
expect(processable).to be_valid
context 'on create' do
it 'validates presence' do
if should_validate
is_expected.to validate_presence_of(:scheduling_type).on(:create)
else
is_expected.not_to validate_presence_of(:scheduling_type).on(:create)
end
end
end
end
context 'on update' do
let(:processable) { create(:ci_build, :created, project: project, pipeline: pipeline) }
it 'does not validate' do
processable.scheduling_type = nil
expect(processable).to be_valid
context 'on update' do
it { is_expected.not_to validate_presence_of(:scheduling_type).on(:update) }
end
end
end
......@@ -147,6 +112,8 @@ describe Ci::Processable do
describe '#needs_attributes' do
let(:build) { create(:ci_build, :created, project: project, pipeline: pipeline) }
subject { build.needs_attributes }
context 'with needs' do
before do
create(:ci_build_need, build: build, name: 'test1')
......@@ -154,7 +121,7 @@ describe Ci::Processable do
end
it 'returns all needs attributes' do
expect(build.needs_attributes).to contain_exactly(
is_expected.to contain_exactly(
{ 'artifacts' => true, 'name' => 'test1' },
{ 'artifacts' => true, 'name' => 'test2' }
)
......@@ -162,9 +129,7 @@ describe Ci::Processable do
end
context 'without needs' do
it 'returns all needs attributes' do
expect(build.needs_attributes).to be_empty
end
it { is_expected.to be_empty }
end
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment