spec/lib/gdk/services/base_spec.rb (56 lines of code) (raw):
# frozen_string_literal: true
RSpec.describe GDK::Services::Base do
subject(:base_service) { described_class.new }
describe '#name' do
it 'needs to be implemented' do
expect { base_service.name }.to raise_error(NotImplementedError)
end
end
describe '#command' do
it 'needs to be implemented' do
expect { base_service.command }.to raise_error(NotImplementedError)
end
end
describe '#enabled?' do
it 'needs to be implemented' do
expect { base_service.enabled? }.to raise_error(NotImplementedError)
end
end
describe '#validate_env_keys!' do
let(:dummy_klass) do
Class.new(described_class) do
attr_reader :env, :name
def initialize(env)
@name = 'dummy'
@env = env
super()
end
end
end
subject(:dummy_service) { dummy_klass.new(envs) }
shared_examples 'has valid environment' do
it 'initializes properly' do
expect { dummy_service }.not_to raise_error
end
end
context 'env is empty' do
let(:envs) { {} }
it_behaves_like 'has valid environment'
end
context 'env has valid keys' do
let(:envs) do
{
'BLAAT' => 123,
'HELLO_THERE' => true,
'__HIDDEN__' => 'ssssht!'
}
end
it_behaves_like 'has valid environment'
end
context 'env has key with spaces' do
let(:envs) { { 'HELLO THERE': false } }
it 'raises error' do
expect { dummy_service }.to raise_error(GDK::Services::InvalidEnvironmentKeyError, "Invalid environment keys for 'dummy': [:\"HELLO THERE\"]")
end
end
end
end