gitlab-org--gitlab-foss/spec/lib/banzai/pipeline_spec.rb

65 lines
1.4 KiB
Ruby

# frozen_string_literal: true
require 'fast_spec_helper'
RSpec.describe Banzai::Pipeline do
describe '.[]' do
subject { described_class[name] }
shared_examples 'error' do |exception, message|
it do
expect { subject }.to raise_error(exception, message)
end
end
context 'for nil' do
let(:name) { nil }
it { is_expected.to eq(Banzai::Pipeline::FullPipeline) }
end
context 'for symbols' do
context 'when known' do
let(:name) { :full }
it { is_expected.to eq(Banzai::Pipeline::FullPipeline) }
end
context 'when unknown' do
let(:name) { :unknown }
it_behaves_like 'error', NameError,
'uninitialized constant Banzai::Pipeline::UnknownPipeline'
end
end
context 'for classes' do
let(:name) { klass }
context 'subclassing Banzai::Pipeline::BasePipeline' do
let(:klass) { Class.new(Banzai::Pipeline::BasePipeline) }
it { is_expected.to eq(klass) }
end
context 'subclassing other types' do
let(:klass) { Class.new(Banzai::RenderContext) }
before do
stub_const('Foo', klass)
end
it_behaves_like 'error', ArgumentError,
'unsupported pipeline name Foo (Class)'
end
end
context 'for other types' do
let(:name) { 'label' }
it_behaves_like 'error', ArgumentError,
'unsupported pipeline name "label" (String)'
end
end
end