Commit c9f4c639e9c21b4440281364e0e8b1d9cd556b68
1 parent
096a8402
Exists in
master
and in
22 other branches
Show block plugins for specified types only
Showing
3 changed files
with
110 additions
and
33 deletions
Show diff stats
app/controllers/box_organizer_controller.rb
| ... | ... | @@ -68,8 +68,8 @@ class BoxOrganizerController < ApplicationController |
| 68 | 68 | raise ArgumentError.new("Type %s is not allowed. Go away." % type) |
| 69 | 69 | end |
| 70 | 70 | else |
| 71 | - @center_block_types = (Box.acceptable_center_blocks & available_blocks) + plugins.dispatch(:extra_blocks, :type => :all, :position => 1) | |
| 72 | - @side_block_types = (Box.acceptable_side_blocks & available_blocks) + plugins.dispatch(:extra_blocks, :type => :all, :position => [2,3]) | |
| 71 | + @center_block_types = (Box.acceptable_center_blocks & available_blocks) + plugins.dispatch(:extra_blocks, :type => boxes_holder.class, :position => 1) | |
| 72 | + @side_block_types = (Box.acceptable_side_blocks & available_blocks) + plugins.dispatch(:extra_blocks, :type => boxes_holder.class, :position => [2,3]) | |
| 73 | 73 | @boxes = boxes_holder.boxes |
| 74 | 74 | render :action => 'add_block', :layout => false |
| 75 | 75 | end | ... | ... |
test/functional/environment_design_controller_test.rb
| ... | ... | @@ -247,15 +247,15 @@ class EnvironmentDesignControllerTest < ActionController::TestCase |
| 247 | 247 | class TestBlockPlugin < Noosfero::Plugin |
| 248 | 248 | def self.extra_blocks |
| 249 | 249 | { |
| 250 | - CustomBlock1 => {:type => Person, :position => [1]}, | |
| 251 | - CustomBlock2 => {:type => Enterprise, :position => 1}, | |
| 252 | - CustomBlock3 => {:type => Community, :position => '1'}, | |
| 253 | - CustomBlock4 => {:type => Person, :position => [2]}, | |
| 254 | - CustomBlock5 => {:type => Enterprise, :position => 2}, | |
| 255 | - CustomBlock6 => {:type => Community, :position => '2'}, | |
| 256 | - CustomBlock7 => {:type => Person, :position => [3]}, | |
| 257 | - CustomBlock8 => {:type => Enterprise, :position => 3}, | |
| 258 | - CustomBlock9 => {:type => Community, :position => '3'}, | |
| 250 | + CustomBlock1 => {:type => Environment, :position => [1]}, | |
| 251 | + CustomBlock2 => {:type => Environment, :position => 1}, | |
| 252 | + CustomBlock3 => {:type => Environment, :position => '1'}, | |
| 253 | + CustomBlock4 => {:type => Environment, :position => [2]}, | |
| 254 | + CustomBlock5 => {:type => Environment, :position => 2}, | |
| 255 | + CustomBlock6 => {:type => Environment, :position => '2'}, | |
| 256 | + CustomBlock7 => {:type => Environment, :position => [3]}, | |
| 257 | + CustomBlock8 => {:type => Environment, :position => 3}, | |
| 258 | + CustomBlock9 => {:type => Environment, :position => '3'}, | |
| 259 | 259 | } |
| 260 | 260 | end |
| 261 | 261 | end |
| ... | ... | @@ -265,7 +265,6 @@ class EnvironmentDesignControllerTest < ActionController::TestCase |
| 265 | 265 | get :add_block |
| 266 | 266 | |
| 267 | 267 | assert_response :success |
| 268 | - | |
| 269 | 268 | assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock1) |
| 270 | 269 | assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock2) |
| 271 | 270 | assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock3) |
| ... | ... | @@ -291,15 +290,15 @@ class EnvironmentDesignControllerTest < ActionController::TestCase |
| 291 | 290 | class TestBlockPlugin < Noosfero::Plugin |
| 292 | 291 | def self.extra_blocks |
| 293 | 292 | { |
| 294 | - CustomBlock1 => {:type => Person, :position => [1]}, | |
| 295 | - CustomBlock2 => {:type => Enterprise, :position => 1}, | |
| 296 | - CustomBlock3 => {:type => Community, :position => '1'}, | |
| 297 | - CustomBlock4 => {:type => Person, :position => [2]}, | |
| 298 | - CustomBlock5 => {:type => Enterprise, :position => 2}, | |
| 299 | - CustomBlock6 => {:type => Community, :position => '2'}, | |
| 300 | - CustomBlock7 => {:type => Person, :position => [3]}, | |
| 301 | - CustomBlock8 => {:type => Enterprise, :position => 3}, | |
| 302 | - CustomBlock9 => {:type => Community, :position => '3'}, | |
| 293 | + CustomBlock1 => {:type => Environment, :position => [1]}, | |
| 294 | + CustomBlock2 => {:type => Environment, :position => 1}, | |
| 295 | + CustomBlock3 => {:type => Environment, :position => '1'}, | |
| 296 | + CustomBlock4 => {:type => Environment, :position => [2]}, | |
| 297 | + CustomBlock5 => {:type => Environment, :position => 2}, | |
| 298 | + CustomBlock6 => {:type => Environment, :position => '2'}, | |
| 299 | + CustomBlock7 => {:type => Environment, :position => [3]}, | |
| 300 | + CustomBlock8 => {:type => Environment, :position => 3}, | |
| 301 | + CustomBlock9 => {:type => Environment, :position => '3'}, | |
| 303 | 302 | } |
| 304 | 303 | end |
| 305 | 304 | end |
| ... | ... | @@ -320,4 +319,44 @@ class EnvironmentDesignControllerTest < ActionController::TestCase |
| 320 | 319 | assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock9) |
| 321 | 320 | end |
| 322 | 321 | |
| 322 | + should 'a block plugin cannot be listed for unspecified types' do | |
| 323 | + class CustomBlock1 < Block; end; | |
| 324 | + class CustomBlock2 < Block; end; | |
| 325 | + class CustomBlock3 < Block; end; | |
| 326 | + class CustomBlock4 < Block; end; | |
| 327 | + class CustomBlock5 < Block; end; | |
| 328 | + class CustomBlock6 < Block; end; | |
| 329 | + class CustomBlock7 < Block; end; | |
| 330 | + class CustomBlock8 < Block; end; | |
| 331 | + | |
| 332 | + class TestBlockPlugin < Noosfero::Plugin | |
| 333 | + def self.extra_blocks | |
| 334 | + { | |
| 335 | + CustomBlock1 => {:type => Person, :position => 1}, | |
| 336 | + CustomBlock2 => {:type => Community, :position => 1}, | |
| 337 | + CustomBlock3 => {:type => Enterprise, :position => 1}, | |
| 338 | + CustomBlock4 => {:type => Environment, :position => 1}, | |
| 339 | + CustomBlock5 => {:type => Person, :position => 2}, | |
| 340 | + CustomBlock6 => {:type => Community, :position => 3}, | |
| 341 | + CustomBlock7 => {:type => Enterprise, :position => 2}, | |
| 342 | + CustomBlock8 => {:type => Environment, :position => 3}, | |
| 343 | + } | |
| 344 | + end | |
| 345 | + end | |
| 346 | + | |
| 347 | + Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([TestBlockPlugin.new]) | |
| 348 | + login_as(create_admin_user(Environment.default)) | |
| 349 | + get :add_block | |
| 350 | + assert_response :success | |
| 351 | + | |
| 352 | + assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock1) | |
| 353 | + assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock2) | |
| 354 | + assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock3) | |
| 355 | + assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock4) | |
| 356 | + assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock5) | |
| 357 | + assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock6) | |
| 358 | + assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock7) | |
| 359 | + assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock8) | |
| 360 | + end | |
| 361 | + | |
| 323 | 362 | end | ... | ... |
test/functional/profile_design_controller_test.rb
| ... | ... | @@ -192,14 +192,14 @@ class ProfileDesignControllerTest < ActionController::TestCase |
| 192 | 192 | def self.extra_blocks |
| 193 | 193 | { |
| 194 | 194 | CustomBlock1 => {:type => Person, :position => [1]}, |
| 195 | - CustomBlock2 => {:type => Enterprise, :position => 1}, | |
| 196 | - CustomBlock3 => {:type => Community, :position => '1'}, | |
| 195 | + CustomBlock2 => {:type => Person, :position => 1}, | |
| 196 | + CustomBlock3 => {:type => Person, :position => '1'}, | |
| 197 | 197 | CustomBlock4 => {:type => Person, :position => [2]}, |
| 198 | - CustomBlock5 => {:type => Enterprise, :position => 2}, | |
| 199 | - CustomBlock6 => {:type => Community, :position => '2'}, | |
| 198 | + CustomBlock5 => {:type => Person, :position => 2}, | |
| 199 | + CustomBlock6 => {:type => Person, :position => '2'}, | |
| 200 | 200 | CustomBlock7 => {:type => Person, :position => [3]}, |
| 201 | - CustomBlock8 => {:type => Enterprise, :position => 3}, | |
| 202 | - CustomBlock9 => {:type => Community, :position => '3'}, | |
| 201 | + CustomBlock8 => {:type => Person, :position => 3}, | |
| 202 | + CustomBlock9 => {:type => Person, :position => '3'}, | |
| 203 | 203 | } |
| 204 | 204 | end |
| 205 | 205 | end |
| ... | ... | @@ -234,14 +234,14 @@ class ProfileDesignControllerTest < ActionController::TestCase |
| 234 | 234 | def self.extra_blocks |
| 235 | 235 | { |
| 236 | 236 | CustomBlock1 => {:type => Person, :position => [1]}, |
| 237 | - CustomBlock2 => {:type => Enterprise, :position => 1}, | |
| 238 | - CustomBlock3 => {:type => Community, :position => '1'}, | |
| 237 | + CustomBlock2 => {:type => Person, :position => 1}, | |
| 238 | + CustomBlock3 => {:type => Person, :position => '1'}, | |
| 239 | 239 | CustomBlock4 => {:type => Person, :position => [2]}, |
| 240 | - CustomBlock5 => {:type => Enterprise, :position => 2}, | |
| 241 | - CustomBlock6 => {:type => Community, :position => '2'}, | |
| 240 | + CustomBlock5 => {:type => Person, :position => 2}, | |
| 241 | + CustomBlock6 => {:type => Person, :position => '2'}, | |
| 242 | 242 | CustomBlock7 => {:type => Person, :position => [3]}, |
| 243 | - CustomBlock8 => {:type => Enterprise, :position => 3}, | |
| 244 | - CustomBlock9 => {:type => Community, :position => '3'}, | |
| 243 | + CustomBlock8 => {:type => Person, :position => 3}, | |
| 244 | + CustomBlock9 => {:type => Person, :position => '3'}, | |
| 245 | 245 | } |
| 246 | 246 | end |
| 247 | 247 | end |
| ... | ... | @@ -261,6 +261,44 @@ class ProfileDesignControllerTest < ActionController::TestCase |
| 261 | 261 | assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock9) |
| 262 | 262 | end |
| 263 | 263 | |
| 264 | + should 'a block plugin cannot be listed for unspecified types' do | |
| 265 | + class CustomBlock1 < Block; end; | |
| 266 | + class CustomBlock2 < Block; end; | |
| 267 | + class CustomBlock3 < Block; end; | |
| 268 | + class CustomBlock4 < Block; end; | |
| 269 | + class CustomBlock5 < Block; end; | |
| 270 | + class CustomBlock6 < Block; end; | |
| 271 | + class CustomBlock7 < Block; end; | |
| 272 | + class CustomBlock8 < Block; end; | |
| 273 | + | |
| 274 | + class TestBlockPlugin < Noosfero::Plugin | |
| 275 | + def self.extra_blocks | |
| 276 | + { | |
| 277 | + CustomBlock1 => {:type => Person, :position => 1}, | |
| 278 | + CustomBlock2 => {:type => Community, :position => 1}, | |
| 279 | + CustomBlock3 => {:type => Enterprise, :position => 1}, | |
| 280 | + CustomBlock4 => {:type => Environment, :position => 1}, | |
| 281 | + CustomBlock5 => {:type => Person, :position => 2}, | |
| 282 | + CustomBlock6 => {:type => Community, :position => 3}, | |
| 283 | + CustomBlock7 => {:type => Enterprise, :position => 2}, | |
| 284 | + CustomBlock8 => {:type => Environment, :position => 3}, | |
| 285 | + } | |
| 286 | + end | |
| 287 | + end | |
| 288 | + | |
| 289 | + Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([TestBlockPlugin.new]) | |
| 290 | + get :add_block, :profile => 'designtestuser' | |
| 291 | + assert_response :success | |
| 292 | + | |
| 293 | + assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock1) | |
| 294 | + assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock2) | |
| 295 | + assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock3) | |
| 296 | + assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock4) | |
| 297 | + assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock5) | |
| 298 | + assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock6) | |
| 299 | + assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock7) | |
| 300 | + assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock8) | |
| 301 | + end | |
| 264 | 302 | |
| 265 | 303 | ###################################################### |
| 266 | 304 | # END - tests for BoxOrganizerController features | ... | ... |