diff options
author | drew cimino <dcimino@gitlab.com> | 2019-06-18 23:22:38 +0300 |
---|---|---|
committer | drew cimino <dcimino@gitlab.com> | 2019-06-21 23:32:58 +0300 |
commit | d3962bf9198d386b4c662f7b184cc53346854834 (patch) | |
tree | ba30a2622c7d31f2ef0bdff4d213283809f5603e /spec/lib/gitlab/ci/pipeline/seed/build_spec.rb | |
parent | 76f49de4e772c4101bcb8df801ad9b7a78adcea7 (diff) |
RSpec::Parameterized syntax for CI pipeline build seed specs
Diffstat (limited to 'spec/lib/gitlab/ci/pipeline/seed/build_spec.rb')
-rw-r--r-- | spec/lib/gitlab/ci/pipeline/seed/build_spec.rb | 90 |
1 files changed, 43 insertions, 47 deletions
diff --git a/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb b/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb index fae8add6453..7991e2f48b5 100644 --- a/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb +++ b/spec/lib/gitlab/ci/pipeline/seed/build_spec.rb @@ -153,76 +153,72 @@ describe Gitlab::Ci::Pipeline::Seed::Build do end end - context 'when keywords and pipeline source policy matches' do - possibilities = [%w[pushes push], - %w[web web], - %w[triggers trigger], - %w[schedules schedule], - %w[api api], - %w[external external]] - - context 'when using only' do - possibilities.each do |keyword, source| - context "when using keyword `#{keyword}` and source `#{source}`" do - let(:pipeline) do - build(:ci_empty_pipeline, ref: 'deploy', tag: false, source: source) - end + context 'with source-keyword policy' do + using RSpec::Parameterized + + let(:pipeline) { build(:ci_empty_pipeline, ref: 'deploy', tag: false, source: source) } + + context 'matches' do + where(:keyword, :source) do + [ + %w(pushes push), + %w(web web), + %w(triggers trigger), + %w(schedules schedule), + %w(api api), + %w(external external) + ] + end + with_them do + context 'using an only policy' do let(:attributes) { { name: 'rspec', only: { refs: [keyword] } } } it { is_expected.to be_included } end - end - end - - context 'when using except' do - possibilities.each do |keyword, source| - context "when using keyword `#{keyword}` and source `#{source}`" do - let(:pipeline) do - build(:ci_empty_pipeline, ref: 'deploy', tag: false, source: source) - end + context 'using an except policy' do let(:attributes) { { name: 'rspec', except: { refs: [keyword] } } } it { is_expected.not_to be_included } end + + context 'using both only and except policies' do + let(:attributes) { { name: 'rspec', only: { refs: [keyword] }, except: { refs: [keyword] } } } + + it { is_expected.not_to be_included } + end end end - end - context 'when keywords and pipeline source does not match' do - possibilities = [%w[pushes web], - %w[web push], - %w[triggers schedule], - %w[schedules external], - %w[api trigger], - %w[external api]] - - context 'when using only' do - possibilities.each do |keyword, source| - context "when using keyword `#{keyword}` and source `#{source}`" do - let(:pipeline) do - build(:ci_empty_pipeline, ref: 'deploy', tag: false, source: source) - end + context 'non-matches' do + where(:keyword, :source) do + %w(web trigger schedule api external).map { |source| ['pushes', source] } + + %w(push trigger schedule api external).map { |source| ['web', source] } + + %w(push web schedule api external).map { |source| ['triggers', source] } + + %w(push web trigger api external).map { |source| ['schedules', source] } + + %w(push web trigger schedule external).map { |source| ['api', source] } + + %w(push web trigger schedule api).map { |source| ['external', source] } + end + with_them do + context 'using an only policy' do let(:attributes) { { name: 'rspec', only: { refs: [keyword] } } } it { is_expected.not_to be_included } end - end - end - - context 'when using except' do - possibilities.each do |keyword, source| - context "when using keyword `#{keyword}` and source `#{source}`" do - let(:pipeline) do - build(:ci_empty_pipeline, ref: 'deploy', tag: false, source: source) - end + context 'using an except policy' do let(:attributes) { { name: 'rspec', except: { refs: [keyword] } } } it { is_expected.to be_included } end + + context 'using both only and except policies' do + let(:attributes) { { name: 'rspec', only: { refs: [keyword] }, except: { refs: [keyword] } } } + + it { is_expected.not_to be_included } + end end end end |