spec/chef/cookbooks/postgresql/resources/database_objects_spec.rb (76 lines of code) (raw):

require 'chef_helper' RSpec.describe 'database_objects' do let(:chef_run) { ChefSpec::SoloRunner.new(step_into: %w(database_objects postgresql_extension)).converge('gitlab::config', 'test_postgresql::postgresql_database_objects') } before do allow(Gitlab).to receive(:[]).and_call_original end describe 'create' do context 'by default' do it 'creates main database' do expect(chef_run).to create_postgresql_database('gitlabhq_production') end end context 'when additional databases are specified' do context 'on same host as that of main database' do before do stub_gitlab_rb( gitlab_rails: { databases: { ci: { enable: true, db_database: 'gitlabhq_production_ci' } } } ) end it 'creates specified databases in addition to main database' do %w[gitlabhq_production_ci gitlabhq_production].each do |db| expect(chef_run).to create_postgresql_database(db) end end end context 'on a different host than that of main database' do before do stub_gitlab_rb( gitlab_rails: { databases: { ci: { enable: true, db_database: 'gitlabhq_production_ci', db_host: 'different.db.host' } } } ) end it 'creates only main database and not CI database' do expect(chef_run).to create_postgresql_database('gitlabhq_production') expect(chef_run).not_to create_postgresql_database('gitlabhq_production_ci') end end end context 'when Geo database is specified' do before do stub_gitlab_rb( gitlab_rails: { databases: { ci: { enable: true, db_database: 'gitlabhq_production_ci' } } }, geo_secondary_role: { enable: true } ) end it 'creates specified databases in addition to main database except geo' do expect(chef_run).to create_postgresql_database('gitlabhq_production') expect(chef_run).to create_postgresql_database('gitlabhq_production_ci') expect(chef_run).not_to create_postgresql_database('gitlabhq_geo_production') end end end end