summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/database_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/database_spec.rb')
-rw-r--r--spec/lib/gitlab/database_spec.rb66
1 files changed, 53 insertions, 13 deletions
diff --git a/spec/lib/gitlab/database_spec.rb b/spec/lib/gitlab/database_spec.rb
index 86bc8e71fd7..26d6ff431ec 100644
--- a/spec/lib/gitlab/database_spec.rb
+++ b/spec/lib/gitlab/database_spec.rb
@@ -33,20 +33,31 @@ RSpec.describe Gitlab::Database do
describe '.has_config?' do
context 'three tier database config' do
- before do
- allow(Gitlab::Application).to receive_message_chain(:config, :database_configuration, :[]).with(Rails.env)
- .and_return({
- "primary" => { "adapter" => "postgresql", "database" => "gitlabhq_test" },
- "ci" => { "adapter" => "postgresql", "database" => "gitlabhq_test_ci" }
- })
+ it 'returns true for main' do
+ expect(described_class.has_config?(:main)).to eq(true)
end
- it 'returns true for primary' do
- expect(described_class.has_config?(:primary)).to eq(true)
- end
+ context 'ci' do
+ before do
+ # CI config might not be configured
+ allow(ActiveRecord::Base.configurations).to receive(:configs_for)
+ .with(env_name: 'test', name: 'ci', include_replicas: true)
+ .and_return(ci_db_config)
+ end
+
+ let(:ci_db_config) { instance_double('ActiveRecord::DatabaseConfigurations::HashConfig') }
+
+ it 'returns true for ci' do
+ expect(described_class.has_config?(:ci)).to eq(true)
+ end
- it 'returns true for ci' do
- expect(described_class.has_config?(:ci)).to eq(true)
+ context 'ci database.yml not configured' do
+ let(:ci_db_config) { nil }
+
+ it 'returns false for ci' do
+ expect(described_class.has_config?(:ci)).to eq(false)
+ end
+ end
end
it 'returns false for non-existent' do
@@ -189,7 +200,7 @@ RSpec.describe Gitlab::Database do
end
it 'returns the ci_replica for a ci database replica' do
- skip_if_multiple_databases_not_setup
+ skip_if_multiple_databases_not_setup(:ci)
replica = Ci::ApplicationRecord.load_balancer.host
expect(described_class.db_config_name(replica)).to eq('ci_replica')
end
@@ -256,7 +267,7 @@ RSpec.describe Gitlab::Database do
context "when there's CI connection" do
before do
- skip_if_multiple_databases_not_setup
+ skip_if_multiple_databases_not_setup(:ci)
end
context 'when CI uses database_tasks: false does indicate that ci: is subset of main:' do
@@ -516,4 +527,33 @@ RSpec.describe Gitlab::Database do
end
end
end
+
+ describe '.read_minimum_migration_version' do
+ before do
+ allow(Dir).to receive(:open).with(Rails.root.join('db/migrate')).and_return(migration_files)
+ end
+
+ context 'valid migration files exist' do
+ let(:migration_files) do
+ [
+ '20211004170422_init_schema.rb',
+ '20211005182304_add_users.rb'
+ ]
+ end
+
+ let(:valid_schema) { 20211004170422 }
+
+ it 'finds the correct ID' do
+ expect(described_class.read_minimum_migration_version).to eq valid_schema
+ end
+ end
+
+ context 'no valid migration files exist' do
+ let(:migration_files) { ['readme.txt', 'INSTALL'] }
+
+ it 'returns nil' do
+ expect(described_class.read_minimum_migration_version).to be_nil
+ end
+ end
+ end
end