From 0ff27ce05960598e5a1c0a1115180db0feeb689a Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Fri, 14 Dec 2018 22:45:14 +0800 Subject: Method `create_from_defaults` will never give nil --- app/models/application_setting.rb | 2 +- lib/gitlab/current_settings.rb | 3 +-- spec/lib/gitlab/current_settings_spec.rb | 19 +++++++------------ 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb index 54139f61a16..86ffd198ab1 100644 --- a/app/models/application_setting.rb +++ b/app/models/application_setting.rb @@ -311,7 +311,7 @@ class ApplicationSetting < ActiveRecord::Base end def self.create_from_defaults - create(defaults) + build_from_defaults.tap(&:save) end def self.human_attribute_name(attr, _options = {}) diff --git a/lib/gitlab/current_settings.rb b/lib/gitlab/current_settings.rb index 570bfb80fba..552aad83dd4 100644 --- a/lib/gitlab/current_settings.rb +++ b/lib/gitlab/current_settings.rb @@ -51,8 +51,7 @@ module Gitlab elsif current_settings.present? current_settings else - ::ApplicationSetting.create_from_defaults || - in_memory_application_settings + ::ApplicationSetting.create_from_defaults end end diff --git a/spec/lib/gitlab/current_settings_spec.rb b/spec/lib/gitlab/current_settings_spec.rb index 06772fffce7..add8867d243 100644 --- a/spec/lib/gitlab/current_settings_spec.rb +++ b/spec/lib/gitlab/current_settings_spec.rb @@ -54,7 +54,7 @@ describe Gitlab::CurrentSettings do expect(ApplicationSetting).not_to receive(:current) end - it 'returns an in-memory ApplicationSetting object' do + it 'returns a FakeApplicationSettings object' do expect(described_class.current_application_settings).to be_a(Gitlab::FakeApplicationSettings) end @@ -157,17 +157,12 @@ describe Gitlab::CurrentSettings do end end - context 'when the application_settings table does not exists' do - it 'returns an in-memory ApplicationSetting object' do - expect(ApplicationSetting).to receive(:create_from_defaults).and_raise(ActiveRecord::StatementInvalid) - - expect(described_class.current_application_settings).to be_a(Gitlab::FakeApplicationSettings) - end - end - - context 'when the application_settings table is not fully migrated' do - it 'returns an in-memory ApplicationSetting object' do - expect(ApplicationSetting).to receive(:create_from_defaults).and_raise(ActiveRecord::UnknownAttributeError) + context 'when the application_settings table does not exist' do + it 'returns a FakeApplicationSettings object' do + expect(Gitlab::Database) + .to receive(:cached_table_exists?) + .with('application_settings') + .and_return(false) expect(described_class.current_application_settings).to be_a(Gitlab::FakeApplicationSettings) end -- cgit v1.2.1