diff --git a/app/controllers/box_organizer_controller.rb b/app/controllers/box_organizer_controller.rb index 20d1d86..ab17ee8 100644 --- a/app/controllers/box_organizer_controller.rb +++ b/app/controllers/box_organizer_controller.rb @@ -68,8 +68,8 @@ class BoxOrganizerController < ApplicationController raise ArgumentError.new("Type %s is not allowed. Go away." % type) end else - @center_block_types = (Box.acceptable_center_blocks & available_blocks) + plugins.dispatch(:extra_blocks, :type => :all, :position => 1) - @side_block_types = (Box.acceptable_side_blocks & available_blocks) + plugins.dispatch(:extra_blocks, :type => :all, :position => [2,3]) + @center_block_types = (Box.acceptable_center_blocks & available_blocks) + plugins.dispatch(:extra_blocks, :type => boxes_holder.class, :position => 1) + @side_block_types = (Box.acceptable_side_blocks & available_blocks) + plugins.dispatch(:extra_blocks, :type => boxes_holder.class, :position => [2,3]) @boxes = boxes_holder.boxes render :action => 'add_block', :layout => false end diff --git a/test/functional/environment_design_controller_test.rb b/test/functional/environment_design_controller_test.rb index d1bdf14..39d0a18 100644 --- a/test/functional/environment_design_controller_test.rb +++ b/test/functional/environment_design_controller_test.rb @@ -247,15 +247,15 @@ class EnvironmentDesignControllerTest < ActionController::TestCase class TestBlockPlugin < Noosfero::Plugin def self.extra_blocks { - CustomBlock1 => {:type => Person, :position => [1]}, - CustomBlock2 => {:type => Enterprise, :position => 1}, - CustomBlock3 => {:type => Community, :position => '1'}, - CustomBlock4 => {:type => Person, :position => [2]}, - CustomBlock5 => {:type => Enterprise, :position => 2}, - CustomBlock6 => {:type => Community, :position => '2'}, - CustomBlock7 => {:type => Person, :position => [3]}, - CustomBlock8 => {:type => Enterprise, :position => 3}, - CustomBlock9 => {:type => Community, :position => '3'}, + CustomBlock1 => {:type => Environment, :position => [1]}, + CustomBlock2 => {:type => Environment, :position => 1}, + CustomBlock3 => {:type => Environment, :position => '1'}, + CustomBlock4 => {:type => Environment, :position => [2]}, + CustomBlock5 => {:type => Environment, :position => 2}, + CustomBlock6 => {:type => Environment, :position => '2'}, + CustomBlock7 => {:type => Environment, :position => [3]}, + CustomBlock8 => {:type => Environment, :position => 3}, + CustomBlock9 => {:type => Environment, :position => '3'}, } end end @@ -265,7 +265,6 @@ class EnvironmentDesignControllerTest < ActionController::TestCase get :add_block assert_response :success - assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock1) assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock2) assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock3) @@ -291,15 +290,15 @@ class EnvironmentDesignControllerTest < ActionController::TestCase class TestBlockPlugin < Noosfero::Plugin def self.extra_blocks { - CustomBlock1 => {:type => Person, :position => [1]}, - CustomBlock2 => {:type => Enterprise, :position => 1}, - CustomBlock3 => {:type => Community, :position => '1'}, - CustomBlock4 => {:type => Person, :position => [2]}, - CustomBlock5 => {:type => Enterprise, :position => 2}, - CustomBlock6 => {:type => Community, :position => '2'}, - CustomBlock7 => {:type => Person, :position => [3]}, - CustomBlock8 => {:type => Enterprise, :position => 3}, - CustomBlock9 => {:type => Community, :position => '3'}, + CustomBlock1 => {:type => Environment, :position => [1]}, + CustomBlock2 => {:type => Environment, :position => 1}, + CustomBlock3 => {:type => Environment, :position => '1'}, + CustomBlock4 => {:type => Environment, :position => [2]}, + CustomBlock5 => {:type => Environment, :position => 2}, + CustomBlock6 => {:type => Environment, :position => '2'}, + CustomBlock7 => {:type => Environment, :position => [3]}, + CustomBlock8 => {:type => Environment, :position => 3}, + CustomBlock9 => {:type => Environment, :position => '3'}, } end end @@ -320,4 +319,44 @@ class EnvironmentDesignControllerTest < ActionController::TestCase assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock9) end + should 'a block plugin cannot be listed for unspecified types' do + class CustomBlock1 < Block; end; + class CustomBlock2 < Block; end; + class CustomBlock3 < Block; end; + class CustomBlock4 < Block; end; + class CustomBlock5 < Block; end; + class CustomBlock6 < Block; end; + class CustomBlock7 < Block; end; + class CustomBlock8 < Block; end; + + class TestBlockPlugin < Noosfero::Plugin + def self.extra_blocks + { + CustomBlock1 => {:type => Person, :position => 1}, + CustomBlock2 => {:type => Community, :position => 1}, + CustomBlock3 => {:type => Enterprise, :position => 1}, + CustomBlock4 => {:type => Environment, :position => 1}, + CustomBlock5 => {:type => Person, :position => 2}, + CustomBlock6 => {:type => Community, :position => 3}, + CustomBlock7 => {:type => Enterprise, :position => 2}, + CustomBlock8 => {:type => Environment, :position => 3}, + } + end + end + + Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([TestBlockPlugin.new]) + login_as(create_admin_user(Environment.default)) + get :add_block + assert_response :success + + assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock1) + assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock2) + assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock3) + assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock4) + assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock5) + assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock6) + assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock7) + assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock8) + end + end diff --git a/test/functional/profile_design_controller_test.rb b/test/functional/profile_design_controller_test.rb index e7b5227..8a64ab3 100644 --- a/test/functional/profile_design_controller_test.rb +++ b/test/functional/profile_design_controller_test.rb @@ -192,14 +192,14 @@ class ProfileDesignControllerTest < ActionController::TestCase def self.extra_blocks { CustomBlock1 => {:type => Person, :position => [1]}, - CustomBlock2 => {:type => Enterprise, :position => 1}, - CustomBlock3 => {:type => Community, :position => '1'}, + CustomBlock2 => {:type => Person, :position => 1}, + CustomBlock3 => {:type => Person, :position => '1'}, CustomBlock4 => {:type => Person, :position => [2]}, - CustomBlock5 => {:type => Enterprise, :position => 2}, - CustomBlock6 => {:type => Community, :position => '2'}, + CustomBlock5 => {:type => Person, :position => 2}, + CustomBlock6 => {:type => Person, :position => '2'}, CustomBlock7 => {:type => Person, :position => [3]}, - CustomBlock8 => {:type => Enterprise, :position => 3}, - CustomBlock9 => {:type => Community, :position => '3'}, + CustomBlock8 => {:type => Person, :position => 3}, + CustomBlock9 => {:type => Person, :position => '3'}, } end end @@ -234,14 +234,14 @@ class ProfileDesignControllerTest < ActionController::TestCase def self.extra_blocks { CustomBlock1 => {:type => Person, :position => [1]}, - CustomBlock2 => {:type => Enterprise, :position => 1}, - CustomBlock3 => {:type => Community, :position => '1'}, + CustomBlock2 => {:type => Person, :position => 1}, + CustomBlock3 => {:type => Person, :position => '1'}, CustomBlock4 => {:type => Person, :position => [2]}, - CustomBlock5 => {:type => Enterprise, :position => 2}, - CustomBlock6 => {:type => Community, :position => '2'}, + CustomBlock5 => {:type => Person, :position => 2}, + CustomBlock6 => {:type => Person, :position => '2'}, CustomBlock7 => {:type => Person, :position => [3]}, - CustomBlock8 => {:type => Enterprise, :position => 3}, - CustomBlock9 => {:type => Community, :position => '3'}, + CustomBlock8 => {:type => Person, :position => 3}, + CustomBlock9 => {:type => Person, :position => '3'}, } end end @@ -261,6 +261,44 @@ class ProfileDesignControllerTest < ActionController::TestCase assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock9) end + should 'a block plugin cannot be listed for unspecified types' do + class CustomBlock1 < Block; end; + class CustomBlock2 < Block; end; + class CustomBlock3 < Block; end; + class CustomBlock4 < Block; end; + class CustomBlock5 < Block; end; + class CustomBlock6 < Block; end; + class CustomBlock7 < Block; end; + class CustomBlock8 < Block; end; + + class TestBlockPlugin < Noosfero::Plugin + def self.extra_blocks + { + CustomBlock1 => {:type => Person, :position => 1}, + CustomBlock2 => {:type => Community, :position => 1}, + CustomBlock3 => {:type => Enterprise, :position => 1}, + CustomBlock4 => {:type => Environment, :position => 1}, + CustomBlock5 => {:type => Person, :position => 2}, + CustomBlock6 => {:type => Community, :position => 3}, + CustomBlock7 => {:type => Enterprise, :position => 2}, + CustomBlock8 => {:type => Environment, :position => 3}, + } + end + end + + Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([TestBlockPlugin.new]) + get :add_block, :profile => 'designtestuser' + assert_response :success + + assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock1) + assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock2) + assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock3) + assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock4) + assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock5) + assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock6) + assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock7) + assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock8) + end ###################################################### # END - tests for BoxOrganizerController features -- libgit2 0.21.2