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

# frozen_string_literal: true RSpec.describe GDK::RegistryDatabaseManager do include ShelloutHelper let(:gdk_root) { config.gdk_root } let(:config) { GDK.config } let(:manager) { described_class.new(config) } before do stub_pg_bindir stub_tool_versions end describe '#import_registry_data' do it 'executes the import registry data command' do import_command = "#{gdk_root}/support/import-registry" expect(manager).to receive(:shellout).with(import_command) manager.import_registry_data end end describe '#reset_registry_database' do let(:common_command) { ['/usr/local/bin/psql', "--host=#{gdk_root}/postgresql", '--port=5432', '--dbname=gitlabhq_development', '-c'] } let(:drop_database_command) { common_command + ['drop database registry_dev'] } let(:recreate_database_command) { common_command + ['create database registry_dev'] } let(:migrate_database_command) { "#{gdk_root}/support/migrate-registry" } before do allow_any_instance_of(GDK::Command::Start).to receive(:run).with(['postgresql', '--quiet']) allow_any_instance_of(GDK::Command::Stop).to receive(:run).with([]) allow(manager).to receive(:shellout).with(drop_database_command) allow(manager).to receive(:shellout).with(recreate_database_command) allow(manager).to receive(:shellout).with(migrate_database_command) allow_gdk_shellout_command(drop_database_command, gdk_root) allow_gdk_shellout_command(recreate_database_command, gdk_root) allow_gdk_shellout_command(migrate_database_command, gdk_root) end it 'executes the full reset process in order and correctly' do expect(manager).to receive(:stop_runit_services).ordered.and_call_original expect_any_instance_of(GDK::Command::Stop).to receive(:run).with([]) expect(manager).to receive(:sleep).with(2).ordered expect(manager).to receive(:start_postgresql_service).ordered.and_call_original expect_any_instance_of(GDK::Command::Start).to receive(:run).with(['postgresql', '--quiet']) expect(manager).to receive(:sleep).with(2).ordered expect(manager).to receive(:drop_database).with('registry_dev').ordered.and_call_original expect(manager).to receive(:shellout).with(drop_database_command).and_call_original expect_shellout_stream(drop_database_command) expect(manager).to receive(:recreate_database).with('registry_dev').ordered.and_call_original expect(manager).to receive(:shellout).with(recreate_database_command).and_call_original expect_shellout_stream(recreate_database_command) expect(manager).to receive(:migrate_database).ordered.and_call_original expect(manager).to receive(:shellout).with(migrate_database_command).and_call_original expect_shellout_stream(migrate_database_command) # Run the reset process manager.reset_registry_database end end def expect_shellout_stream(command, output: '', success: true) double = gdk_shellout_double(stream: output, success?: success) expect_gdk_shellout_command(command, chdir: gdk_root).and_return(double) end end