From bf559b5fee8f679ed2038bbc339339f4f5c56c53 Mon Sep 17 00:00:00 2001 From: Rodrigo Souto Date: Mon, 20 Jan 2014 19:21:05 +0000 Subject: [PATCH] box: pass holder class as type for extra blocks hotspot --- app/models/box.rb | 2 +- test/unit/box_test.rb | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/models/box.rb b/app/models/box.rb index 36b31d1..f2284a2 100644 --- a/app/models/box.rb +++ b/app/models/box.rb @@ -10,7 +10,7 @@ class Box < ActiveRecord::Base end def acceptable_blocks - blocks_classes = central? ? Box.acceptable_center_blocks + plugins.dispatch(:extra_blocks, :position => 1) : Box.acceptable_side_blocks + plugins.dispatch(:extra_blocks, :position => [2, 3]) + blocks_classes = central? ? Box.acceptable_center_blocks + plugins.dispatch(:extra_blocks, :type => owner.class, :position => 1) : Box.acceptable_side_blocks + plugins.dispatch(:extra_blocks, :type => owner.class, :position => [2, 3]) to_css_class_name(blocks_classes) end diff --git a/test/unit/box_test.rb b/test/unit/box_test.rb index b7a4b02..28d056d 100644 --- a/test/unit/box_test.rb +++ b/test/unit/box_test.rb @@ -119,4 +119,25 @@ class BoxTest < ActiveSupport::TestCase assert blocks.include?('box-test_plugin-block') end + should 'list plugin block as allowed for the right holder' do + class SomePlugin < Noosfero::Plugin + def self.extra_blocks + { PluginBlock => {:position => 1, :type => [Person, Enterprise]} } + end + end + class PluginBlock < Block + def self.to_s; 'plugin-block'; end + end + Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([SomePlugin.new]) + + blocks = Box.new(:position => 1, :owner => Person.new).acceptable_blocks + assert blocks.include?('box-test_plugin-block') + + blocks = Box.new(:position => 1, :owner => Enterprise.new).acceptable_blocks + assert blocks.include?('box-test_plugin-block') + + blocks = Box.new(:position => 1, :owner => Community.new).acceptable_blocks + assert !blocks.include?('box-test_plugin-block') + end + end -- libgit2 0.21.2