From 8b4f728977e5b09352dea722d70a8a7306948010 Mon Sep 17 00:00:00 2001 From: Rodrigo Souto Date: Tue, 15 May 2012 15:11:37 -0300 Subject: [PATCH] Improving environment enable/disable plugins methods --- app/models/environment.rb | 8 ++++++-- test/unit/environment_test.rb | 13 +++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/models/environment.rb b/app/models/environment.rb index cdbc132..154fb68 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -258,7 +258,7 @@ class Environment < ActiveRecord::Base end def enable_plugin(plugin) - self.enabled_plugins += [plugin] + self.enabled_plugins += [plugin.to_s] self.enabled_plugins.uniq! self.save! end @@ -269,7 +269,7 @@ class Environment < ActiveRecord::Base end def disable_plugin(plugin) - self.enabled_plugins.delete(plugin) + self.enabled_plugins.delete(plugin.to_s) self.save! end @@ -278,6 +278,10 @@ class Environment < ActiveRecord::Base self.settings["#{feature}_enabled".to_sym] == true end + def plugin_enabled?(plugin) + enabled_plugins.include?(plugin.to_s) + end + # enables the features identified by features, which is expected to # be an Enumarable object containing the identifiers of the desired features. # Passing nil is the same as passing an empty Array. diff --git a/test/unit/environment_test.rb b/test/unit/environment_test.rb index 49fd607..ac84154 100644 --- a/test/unit/environment_test.rb +++ b/test/unit/environment_test.rb @@ -1187,17 +1187,18 @@ class EnvironmentTest < ActiveSupport::TestCase assert !environment.errors.invalid?(:reports_lower_bound) end - should 'be able to enable or disable a plugin' do + should 'be able to enable or disable a plugin with the class or class name' do + class Plugin + end environment = Environment.default - plugin = 'Plugin' - environment.enable_plugin(plugin) + environment.enable_plugin(Plugin) environment.reload - assert_includes environment.enabled_plugins, plugin + assert environment.plugin_enabled?(Plugin.to_s) - environment.disable_plugin(plugin) + environment.disable_plugin(Plugin.to_s) environment.reload - assert_not_includes environment.enabled_plugins, plugin + assert !environment.plugin_enabled?(Plugin) end should 'have production costs' do -- libgit2 0.21.2