Commit c9f4c639e9c21b4440281364e0e8b1d9cd556b68

Authored by Victor Costa
1 parent 096a8402

Show block plugins for specified types only

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 &lt; 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 &lt; 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 &lt; 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 &lt; 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 &lt; 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 &lt; 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
... ...