diff --git a/app/models/setting.rb b/app/models/setting.rb index c27bcf2..a5937a9 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -21,8 +21,14 @@ class Setting < RailsSettings::Base include Settings::RemoteStorageSettings include Settings::XmppSettings - def self.default_services - # TODO Make configurable from respective service settings page - %w[ discourse gitea mastodon mediawiki remotestorage xmpp ] + def self.available_services + known_services = %w[ + discourse ejabberd email gitea mastodon mediawiki remotestorage + ] + + known_services.select {|s| Setting.send "#{s}_enabled?" } end + + field :default_services, type: :array, + default: self.available_services end diff --git a/spec/models/setting_spec.rb b/spec/models/setting_spec.rb new file mode 100644 index 0000000..db345d8 --- /dev/null +++ b/spec/models/setting_spec.rb @@ -0,0 +1,23 @@ +require 'rails_helper' + +RSpec.describe Setting, type: :model do + + describe ".available_services" do + before do + Setting.discourse_enabled = true + Setting.ejabberd_enabled = true + Setting.email_enabled = false + Setting.gitea_enabled = false + Setting.mastodon_enabled = true + Setting.mediawiki_enabled = false + Setting.remotestorage_enabled = true + end + + it "contains all enabled services" do + expect(Setting.available_services).to eq(%w[ + discourse ejabberd mastodon remotestorage + ]) + end + end + +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 396fcf5..5f6c7c1 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -178,7 +178,7 @@ RSpec.describe User, type: :model do after { clear_enqueued_jobs } it "enables default services" do - expect(user).to receive(:enable_service).with(%w[ discourse gitea mastodon mediawiki remotestorage xmpp ]) + expect(user).to receive(:enable_service).with(Setting.default_services) user.send :devise_after_confirmation end