提交 a9d9907a 编写于 作者: S Stan Hu

Merge branch '59462-applicatonsettings-not-tolerant-of-missing-db-columns' into 'master'

Use a Gitlab::FakeApplicationSettings when migrations are pending

Closes #59462

See merge request gitlab-org/gitlab-ce!26601
......@@ -47,7 +47,7 @@ module Gitlab
# defaults for missing columns.
if ActiveRecord::Migrator.needs_migration?
db_attributes = current_settings&.attributes || {}
::ApplicationSetting.build_from_defaults(db_attributes)
fake_application_settings(db_attributes)
elsif current_settings.present?
current_settings
else
......
......@@ -115,9 +115,8 @@ describe Gitlab::CurrentSettings do
shared_examples 'a non-persisted ApplicationSetting object' do
let(:current_settings) { described_class.current_application_settings }
it 'returns a non-persisted ApplicationSetting object' do
expect(current_settings).to be_a(ApplicationSetting)
expect(current_settings).not_to be_persisted
it 'returns a FakeApplicationSettings object' do
expect(current_settings).to be_a(Gitlab::FakeApplicationSettings)
end
it 'uses the default value from ApplicationSetting.defaults' do
......@@ -146,6 +145,16 @@ describe Gitlab::CurrentSettings do
it 'uses the value from the DB attribute if present and not overridden by an accessor' do
expect(current_settings.home_page_url).to eq(db_settings.home_page_url)
end
context 'when a new column is used before being migrated' do
before do
allow(ApplicationSetting).to receive(:defaults).and_return({ foo: 'bar' })
end
it 'uses the default value if present' do
expect(current_settings.foo).to eq('bar')
end
end
end
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册