diff --git a/lib/noosfero/plugin/manager.rb b/lib/noosfero/plugin/manager.rb index 322818d..08e0adb 100644 --- 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) diff --git a/test/unit/plugin_manager_test.rb b/test/unit/plugin_manager_test.rb index dfeeb57..bd4265b 100644 --- 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 diff --git a/test/unit/plugin_test.rb b/test/unit/plugin_test.rb index a2ad18e..487a415 100644 --- 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 -- libgit2 0.21.2