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') assert_equal profile.environment, box.environment box = fast_create(Box, :owner_id => Environment.default.id, :owner_type => 'Environment') assert_equal Environment.default, box.environment end should 'list allowed blocks for center box' do blocks = Box.new(:position => 1).acceptable_blocks assert !blocks.include?('block') assert !blocks.include?('disabled-enterprise-message-block') assert !blocks.include?('featured-products-block') assert !blocks.include?('products-block') assert !blocks.include?('profile-info-block') assert !blocks.include?('profile-list-block') assert !blocks.include?('profile-search-block') assert !blocks.include?('slideshow-block') assert !blocks.include?('location-block') assert blocks.include?('article-block') assert blocks.include?('blog-archives-block') assert blocks.include?('categories-block') assert blocks.include?('communities-block') assert blocks.include?('enterprises-block') # TODO EnvironmentStatisticsBlock is DEPRECATED and will be removed from # the Noosfero core soon, see ActionItem3045 assert blocks.include?('environment-statistics-block') assert blocks.include?('fans-block') assert blocks.include?('favorite-enterprises-block') assert blocks.include?('feed-reader-block') assert blocks.include?('friends-block') assert blocks.include?('highlights-block') assert blocks.include?('link-list-block') assert blocks.include?('login-block') assert blocks.include?('main-block') assert blocks.include?('members-block') assert blocks.include?('my-network-block') assert blocks.include?('people-block') assert blocks.include?('profile-image-block') assert blocks.include?('raw-html-block') assert blocks.include?('recent-documents-block') assert blocks.include?('sellers-search-block') assert blocks.include?('tags-block') end should 'list allowed blocks for box at position 2' do blocks = Box.new(:position => 2).acceptable_blocks assert !blocks.include?('main-block') assert !blocks.include?('block') assert !blocks.include?('profile-list-block') assert blocks.include?('article-block') assert blocks.include?('blog-archives-block') assert blocks.include?('categories-block') assert blocks.include?('communities-block') assert blocks.include?('disabled-enterprise-message-block') assert blocks.include?('enterprises-block') # TODO EnvironmentStatisticsBlock is DEPRECATED and will be removed from # the Noosfero core soon, see ActionItem3045 assert blocks.include?('environment-statistics-block') assert blocks.include?('fans-block') assert blocks.include?('favorite-enterprises-block') assert blocks.include?('featured-products-block') assert blocks.include?('feed-reader-block') assert blocks.include?('friends-block') assert blocks.include?('highlights-block') assert blocks.include?('link-list-block') assert blocks.include?('location-block') assert blocks.include?('login-block') assert blocks.include?('members-block') assert blocks.include?('my-network-block') assert blocks.include?('people-block') assert blocks.include?('products-block') assert blocks.include?('profile-image-block') assert blocks.include?('profile-info-block') assert blocks.include?('profile-search-block') assert blocks.include?('raw-html-block') assert blocks.include?('recent-documents-block') assert blocks.include?('sellers-search-block') assert blocks.include?('slideshow-block') 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?('box-test_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?('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 should 'list only boxes with a postion greater than zero' do profile = fast_create(Profile) box = fast_create(Box, :owner_id => profile.id, :owner_type => 'Profile', :position => 0) box2 = fast_create(Box, :owner_id => profile.id, :owner_type => 'Profile', :position => 1) assert_equal [box2], profile.boxes.with_position end end