[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