From d32bf3a4a0fd628281f086f68243c664f15e126c Mon Sep 17 00:00:00 2001 From: Braulio Bhavamitra Date: Tue, 31 Mar 2015 21:23:02 -0300 Subject: [PATCH] Revert "plugins: only call event on plugin if it is defined" --- lib/noosfero/plugin/manager.rb | 19 +++++++------------ test/unit/plugin_manager_test.rb | 27 --------------------------- 2 files changed, 7 insertions(+), 39 deletions(-) diff --git a/lib/noosfero/plugin/manager.rb b/lib/noosfero/plugin/manager.rb index 2315d33..08e0adb 100644 --- a/lib/noosfero/plugin/manager.rb +++ b/lib/noosfero/plugin/manager.rb @@ -20,15 +20,15 @@ class Noosfero::Plugin::Manager # return [1,0,1,2,3] # def dispatch(event, *args) - flat_map{ |plugin| result_for plugin, event, *args }.compact + dispatch_without_flatten(event, *args).flatten end def fetch_plugins(event, *args) - map { |plugin| plugin.class if result_for plugin, event, *args }.compact.flatten + map { |plugin| plugin.class if plugin.send(event, *args) }.compact.flatten end def dispatch_without_flatten(event, *args) - map { |plugin| result_for plugin, event, *args }.compact + map { |plugin| plugin.send(event, *args) }.compact end alias :dispatch_scopes :dispatch_without_flatten @@ -37,14 +37,9 @@ class Noosfero::Plugin::Manager Noosfero::Plugin.new.send event, *args end - def result_for plugin, event, *args - method = plugin.method event - method.call *args if method.owner != Noosfero::Plugin - end - def dispatch_first(event, *args) each do |plugin| - result = result_for plugin, event, *args + result = plugin.send(event, *args) return result if result.present? end default_for event, *args @@ -52,7 +47,7 @@ class Noosfero::Plugin::Manager def fetch_first_plugin(event, *args) each do |plugin| - result = result_for plugin, event, *args + result = plugin.send event, *args return plugin.class if result.present? end nil @@ -60,7 +55,7 @@ class Noosfero::Plugin::Manager def pipeline(event, *args) each do |plugin| - result = result_for plugin, event, *args + result = plugin.send(event, *args) result = result.kind_of?(Array) ? result : [result] raise ArgumentError, "Pipeline broken by #{plugin.class.name} on #{event} with #{result.length} arguments instead of #{args.length}." if result.length != args.length args = result @@ -69,7 +64,7 @@ class Noosfero::Plugin::Manager end def filter(property, data) - inject(data){ |data, plugin| data = plugin.send(property, data) } + inject(data) {|data, plugin| data = plugin.send(property, data)} end def parse_macro(macro_name, macro, source = nil) diff --git a/test/unit/plugin_manager_test.rb b/test/unit/plugin_manager_test.rb index 70697f3..bd4265b 100644 --- a/test/unit/plugin_manager_test.rb +++ b/test/unit/plugin_manager_test.rb @@ -304,31 +304,4 @@ class PluginManagerTest < ActiveSupport::TestCase @manager.dispatch_first :find_by_contents, :products, environment.products, 'product' end - should 'not event if it is not defined by plugin' do - class Noosfero::Plugin - def never_call - nil - end - end - class Plugin1 < Noosfero::Plugin - def never_call - 'defined' - end - end - class Plugin2 < Noosfero::Plugin - end - Noosfero::Plugin.stubs(:all).returns(['PluginManagerTest::Plugin1', 'PluginManagerTest::Plugin2']) - environment.enable_plugin(Plugin1) - environment.enable_plugin(Plugin2) - plugin1 = @manager.enabled_plugins.detect{ |p| p.is_a? Plugin1 } - plugin2 = @manager.enabled_plugins.detect{ |p| p.is_a? Plugin2 } - - assert_equal Plugin1, Plugin1.new.method(:never_call).owner - assert_equal Noosfero::Plugin, Plugin2.new.method(:never_call).owner - # expects never can't be used as it defines the method - @manager.expects(:result_for).with(plugin1, :never_call).returns(Plugin1.new.never_call) - @manager.expects(:result_for).with(plugin2, :never_call).returns(nil) - @manager.dispatch :never_call - end - end -- libgit2 0.21.2