spec/lib/gdk/services_spec.rb (55 lines of code) (raw):

# frozen_string_literal: true RSpec.describe GDK::Services do subject(:services) { described_class } let(:known_services) { described_class.all_service_names } describe '.all' do it 'return a list of all Service instances' do class_name_without_module = ->(object) { object.class.name.split('::').last.to_sym } services.all.each do |service| expect(known_services).to include(class_name_without_module.call(service)) end end GDK::Services.all.each do |service| describe service.class.name do specify 'has expected return types', :aggregate_failures do expect(service.name).to be_kind_of(String) expect(service.command).to be_kind_of(String) expect(service.ready_message).to be_kind_of(String).or be_nil expect(service.enabled?).to be(true).or be(false) expect(service.env).to be_kind_of(Hash) end it 'has name a proper format' do expect(service.name).to match(/^[a-z0-9-]+/) end end end end describe '.all_service_names' do it 'contains names of Service classes' do expect(services.all_service_names).to match_array(known_services) end end describe '.fetch' do it 'returns an instance of the given service name' do expect(services.fetch(:Redis)).to be_a(GDK::Services::Redis) end end describe '.enabled' do before do services.instance_variable_set(:@enabled, nil) end it 'contains enabled Service classes' do service_classes = [ GDK::Services::GitlabHttpRouter, GDK::Services::GitlabTopologyService, GDK::Services::GitlabWorkhorse, GDK::Services::Postgresql, GDK::Services::RailsBackgroundJobs, GDK::Services::RailsWeb, GDK::Services::Redis, GDK::Services::Sshd, GDK::Services::Webpack ] expect(services.enabled.map(&:class)).to match_array(service_classes) end end end