[noosfero/noosfero][master] plugins: only call default value if result is blank

Bráulio Bhavamitra gitlab at gitlab.com
Sat Mar 28 09:04:08 BRT 2015


Bráulio Bhavamitra pushed to master at Noosfero / noosfero


Commits:
8a3fb6f3 by Braulio Bhavamitra at 2015-03-28T09:03:04Z
plugins: only call default value if result is blank

- - - - -


3 changed files:

- lib/noosfero/plugin/manager.rb
- test/unit/plugin_manager_test.rb
- test/unit/plugin_test.rb


Changes:

=====================================
lib/noosfero/plugin/manager.rb
=====================================
--- a/lib/noosfero/plugin/manager.rb
+++ b/lib/noosfero/plugin/manager.rb
@@ -33,26 +33,24 @@ class Noosfero::Plugin::Manager
 
   alias :dispatch_scopes :dispatch_without_flatten
 
+  def default_for event, *args
+    Noosfero::Plugin.new.send event, *args
+  end
+
   def dispatch_first(event, *args)
-    default = Noosfero::Plugin.new.send(event, *args)
-    result = default
     each do |plugin|
       result = plugin.send(event, *args)
-      break if result != default
+      return result if result.present?
     end
-    result
+    default_for event, *args
   end
 
   def fetch_first_plugin(event, *args)
-    default = Noosfero::Plugin.new.send(event, *args)
-    result = nil
     each do |plugin|
-      if plugin.send(event, *args) != default
-        result = plugin.class
-        break
-      end
+      result = plugin.send event, *args
+      return plugin.class if result.present?
     end
-    result
+    nil
   end
 
   def pipeline(event, *args)

=====================================
test/unit/plugin_manager_test.rb
=====================================
--- a/test/unit/plugin_manager_test.rb
+++ b/test/unit/plugin_manager_test.rb
@@ -291,4 +291,17 @@ class PluginManagerTest < ActiveSupport::TestCase
     assert_equal [7,9], manager.filter(:invalid_numbers, [1,2,3,4,5,6,7,8,9,10])
   end
 
+  should 'only call default if value is blank' do
+    class Plugin1 < Noosfero::Plugin
+      def find_by_contents asset, scope, query, paginate_options={}, options={}
+        {results: [1,2,3]}
+      end
+    end
+    Noosfero::Plugin.stubs(:all).returns(['PluginManagerTest::Plugin1'])
+    environment.enable_plugin(Plugin1)
+
+    Noosfero::Plugin.any_instance.expects(:find_by_contents).never
+    @manager.dispatch_first :find_by_contents, :products, environment.products, 'product'
+  end
+
 end

=====================================
test/unit/plugin_test.rb
=====================================
--- a/test/unit/plugin_test.rb
+++ b/test/unit/plugin_test.rb
@@ -23,7 +23,7 @@ class PluginTest < ActiveSupport::TestCase
   end
 
   should 'returns empty hash for class method extra_blocks by default if no blocks are defined on plugin' do
-    
+
     class SomePlugin1 < Noosfero::Plugin
     end
 


View it on GitLab: https://gitlab.com/noosfero/noosfero/commit/8a3fb6f312e27c4225b95dff84ea365432e361ed
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20150328/b6861f03/attachment.html>


More information about the Noosfero-dev mailing list