[noosfero/noosfero][master] Add rake task to activate all available plugins

Rodrigo Souto gitlab at gitlab.com
Wed May 20 17:08:37 BRT 2015


Rodrigo Souto pushed to branch master at Noosfero / noosfero


Commits:
b464989a by Gabriela Navarro at 2015-05-20T17:05:27Z
Add rake task to activate all available plugins

- - - - -


3 changed files:

- app/models/environment.rb
- + lib/tasks/enable_plugins.rake
- test/unit/environment_test.rb


Changes:

=====================================
app/models/environment.rb
=====================================
--- a/app/models/environment.rb
+++ b/app/models/environment.rb
@@ -339,6 +339,16 @@ class Environment < ActiveRecord::Base
     self.save!
   end
 
+  def enable_all_plugins
+    Noosfero::Plugin.available_plugin_names.each do |plugin|
+      plugin_name = plugin.to_s + "Plugin"
+      unless self.enabled_plugins.include?(plugin_name)
+        self.enabled_plugins += [plugin_name]
+      end
+    end
+    self.save!
+  end
+
   # Disables a feature identified by its name
   def disable(feature, must_save=true)
     self.settings["#{feature}_enabled".to_sym] = false


=====================================
lib/tasks/enable_plugins.rake
=====================================
--- /dev/null
+++ b/lib/tasks/enable_plugins.rake
@@ -0,0 +1,9 @@
+namespace :noosfero do
+  namespace :plugins do
+    task :enable_all => :environment do
+      Environment.all.each do |env|
+        puts "Plugins Activated on #{env.name}" if env.enable_all_plugins
+      end
+    end
+  end
+end


=====================================
test/unit/environment_test.rb
=====================================
--- a/test/unit/environment_test.rb
+++ b/test/unit/environment_test.rb
@@ -524,7 +524,7 @@ class EnvironmentTest < ActiveSupport::TestCase
     p1= fast_create(Person, :is_template => true, :environment_id => e.id)
     p2 = fast_create(Person, :environment_id => e.id)
     p3 = fast_create(Person, :is_template => true, :environment_id => e.id)
-    assert_equivalent [p1,p3], e.person_templates    
+    assert_equivalent [p1,p3], e.person_templates
   end
 
   should 'person_templates return an empty array if there is no templates of person' do
@@ -532,7 +532,7 @@ class EnvironmentTest < ActiveSupport::TestCase
 
     fast_create(Person, :environment_id => e.id)
     fast_create(Person, :environment_id => e.id)
-    assert_equivalent [], e.person_templates    
+    assert_equivalent [], e.person_templates
   end
 
   should 'person_default_template return the template defined as default' do
@@ -585,7 +585,7 @@ class EnvironmentTest < ActiveSupport::TestCase
     c1= fast_create(Community, :is_template => true, :environment_id => e.id)
     c2 = fast_create(Community, :environment_id => e.id)
     c3 = fast_create(Community, :is_template => true, :environment_id => e.id)
-    assert_equivalent [c1,c3], e.community_templates    
+    assert_equivalent [c1,c3], e.community_templates
   end
 
   should 'community_templates return an empty array if there is no templates of community' do
@@ -646,7 +646,7 @@ class EnvironmentTest < ActiveSupport::TestCase
     e1= fast_create(Enterprise, :is_template => true, :environment_id => env.id)
     e2 = fast_create(Enterprise, :environment_id => env.id)
     e3 = fast_create(Enterprise, :is_template => true, :environment_id => env.id)
-    assert_equivalent [e1,e3], env.enterprise_templates    
+    assert_equivalent [e1,e3], env.enterprise_templates
   end
 
   should 'enterprise_templates return an empty array if there is no templates of enterprise' do
@@ -654,7 +654,7 @@ class EnvironmentTest < ActiveSupport::TestCase
 
     fast_create(Enterprise, :environment_id => env.id)
     fast_create(Enterprise, :environment_id => env.id)
-    assert_equivalent [], env.enterprise_templates    
+    assert_equivalent [], env.enterprise_templates
   end
 
   should 'enterprise_default_template return the template defined as default' do
@@ -1428,6 +1428,36 @@ class EnvironmentTest < ActiveSupport::TestCase
     assert !environment.plugin_enabled?(Plugin)
   end
 
+  should 'activate on database all available plugins' do
+    plugins_enable = ["Statistics", "Foo", "PeopleBlock"]
+    Noosfero::Plugins.stubs(:available_plugin_names).returns(plugins_enable)
+    env1 = Environment.create(:name => "Test")
+    env2 = Environment.create(:name => "Test 2")
+
+    env1.enable_all_plugins
+    env2.enable_all_plugins
+
+    plugins = ["PeopleBlockPlugin", "StatisticsPlugin", "FooPlugin"]
+    plugins.each do |plugin|
+      assert env1.enabled_plugins.include?(plugin)
+      assert env2.enabled_plugins.include?(plugin)
+    end
+  end
+
+  should 'dont activate plugins that are not available' do
+    env1 = Environment.create(:name => "Test")
+    env2 = Environment.create(:name => "Test 2")
+
+    env1.enable_all_plugins
+    env2.enable_all_plugins
+
+    plugins = ["SomePlugin", "OtherPlugin", "ThirdPlugin"]
+    plugins.each do |plugin|
+      assert_equal false, env1.enabled_plugins.include?(plugin)
+      assert_equal false, env2.enabled_plugins.include?(plugin)
+    end
+  end
+
   should 'have production costs' do
     assert_respond_to Environment.default, :production_costs
   end



View it on GitLab: https://gitlab.com/noosfero/noosfero/commit/b464989afb12e24c1a22d30c5d097e9555ed5494
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20150520/47f542c3/attachment.html>


More information about the Noosfero-dev mailing list