From 3c42961da48b8901b92a18ed949b4114ff3880b6 Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Fri, 1 Nov 2013 11:36:11 -0300 Subject: [PATCH] Add plugin blocks in acceptable_blocks for boxes --- app/models/box.rb | 5 ++++- test/unit/box_test.rb | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/app/models/box.rb b/app/models/box.rb index f8022a7..c6a15d6 100644 --- a/app/models/box.rb +++ b/app/models/box.rb @@ -3,12 +3,15 @@ class Box < ActiveRecord::Base acts_as_list :scope => 'owner_id = #{owner_id} and owner_type = \'#{owner_type}\'' has_many :blocks, :dependent => :destroy, :order => 'position' + include Noosfero::Plugin::HotSpot + def environment owner ? (owner.kind_of?(Environment) ? owner : owner.environment) : nil end def acceptable_blocks - to_css_class_name central? ? Box.acceptable_center_blocks : Box.acceptable_side_blocks + blocks = central? ? Box.acceptable_center_blocks + plugins.dispatch(:extra_blocks, :position => 1) : Box.acceptable_side_blocks + plugins.dispatch(:extra_blocks, :position => [2, 3]) + to_css_class_name(blocks) end def central? diff --git a/test/unit/box_test.rb b/test/unit/box_test.rb index d7b1bd7..7a1d7d8 100644 --- a/test/unit/box_test.rb +++ b/test/unit/box_test.rb @@ -1,6 +1,11 @@ require File.dirname(__FILE__) + '/../test_helper' class BoxTest < ActiveSupport::TestCase + + def setup + Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([]) + end + should 'retrieve environment based on owner' do profile = fast_create(Profile) box = fast_create(Box, :owner_id => profile.id, :owner_type => 'Profile') @@ -84,4 +89,34 @@ class BoxTest < ActiveSupport::TestCase assert blocks.include?('tags-block') end + should 'list plugin block as allowed for box at position 1' do + class SomePlugin < Noosfero::Plugin + def self.extra_blocks + { PluginBlock => {:position => 1} } + 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).acceptable_blocks + assert blocks.include?('plugin-block') + end + + should 'list plugin block as allowed for box at position 2' do + class SomePlugin < Noosfero::Plugin + def self.extra_blocks + { PluginBlock => {:position => 2} } + 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 => 2).acceptable_blocks + assert blocks.include?('plugin-block') + end + end -- libgit2 0.21.2