Commit 7e6b77ee21a7fbe9d9c43ce17f07b4a9902fc869

Authored by Victor Costa
1 parent cc2e277c

Fix box organizer tests

app/controllers/box_organizer_controller.rb
@@ -7,7 +7,7 @@ class BoxOrganizerController < ApplicationController @@ -7,7 +7,7 @@ class BoxOrganizerController < ApplicationController
7 end 7 end
8 8
9 def move_block 9 def move_block
10 - @block = boxes_holder.blocks.find(params[:id].gsub(/^block-/, '')) 10 + @block = params[:id] ? boxes_holder.blocks.find(params[:id].gsub(/^block-/, '')) : nil
11 11
12 target_position = nil 12 target_position = nil
13 13
@@ -19,7 +19,7 @@ class BoxOrganizerController < ApplicationController @@ -19,7 +19,7 @@ class BoxOrganizerController < ApplicationController
19 else 19 else
20 (params[:target] =~ /end-of-box-([0-9]+)/) 20 (params[:target] =~ /end-of-box-([0-9]+)/)
21 21
22 - @target_box = boxes_holder.boxes.find($1) 22 + @target_box = boxes_holder.boxes.find_by_id($1)
23 end 23 end
24 24
25 @block = new_block(params[:type], @target_box) if @block.nil? 25 @block = new_block(params[:type], @target_box) if @block.nil?
app/controllers/my_profile/profile_design_controller.rb
@@ -7,6 +7,7 @@ class ProfileDesignController < BoxOrganizerController @@ -7,6 +7,7 @@ class ProfileDesignController < BoxOrganizerController
7 before_filter :protect_fixed_block, :only => [:save, :move_block] 7 before_filter :protect_fixed_block, :only => [:save, :move_block]
8 8
9 def protect_fixed_block 9 def protect_fixed_block
  10 + return if params[:id].blank?
10 block = boxes_holder.blocks.find(params[:id].gsub(/^block-/, '')) 11 block = boxes_holder.blocks.find(params[:id].gsub(/^block-/, ''))
11 if block.present? && block.fixed && !current_person.is_admin? 12 if block.present? && block.fixed && !current_person.is_admin?
12 render_access_denied 13 render_access_denied
test/functional/environment_design_controller_test.rb
@@ -165,14 +165,6 @@ class EnvironmentDesignControllerTest < ActionController::TestCase @@ -165,14 +165,6 @@ class EnvironmentDesignControllerTest < ActionController::TestCase
165 assert_tag :tag => 'a', :attributes => {:href => '/admin'}, :child => {:tag => 'span', :content => "Back to control panel"} 165 assert_tag :tag => 'a', :attributes => {:href => '/admin'}, :child => {:tag => 'span', :content => "Back to control panel"}
166 end 166 end
167 167
168 - should 'render add a new block functionality' do  
169 - login_as(create_admin_user(Environment.default))  
170 - get :add_block  
171 -  
172 - assert_response :success  
173 - assert_template 'add_block'  
174 - end  
175 -  
176 should 'a environment block plugin add new blocks for environments' do 168 should 'a environment block plugin add new blocks for environments' do
177 class CustomBlock1 < Block; end; 169 class CustomBlock1 < Block; end;
178 170
@@ -212,7 +204,7 @@ class EnvironmentDesignControllerTest &lt; ActionController::TestCase @@ -212,7 +204,7 @@ class EnvironmentDesignControllerTest &lt; ActionController::TestCase
212 assert !@controller.available_blocks.include?(CustomBlock4) 204 assert !@controller.available_blocks.include?(CustomBlock4)
213 end 205 end
214 206
215 - should 'a block plugin with center position add new blocks only in this position' do 207 + should 'a block plugin add new blocks' do
216 class CustomBlock1 < Block; end; 208 class CustomBlock1 < Block; end;
217 class CustomBlock2 < Block; end; 209 class CustomBlock2 < Block; end;
218 class CustomBlock3 < Block; end; 210 class CustomBlock3 < Block; end;
@@ -241,61 +233,10 @@ class EnvironmentDesignControllerTest &lt; ActionController::TestCase @@ -241,61 +233,10 @@ class EnvironmentDesignControllerTest &lt; ActionController::TestCase
241 233
242 Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([TestBlockPlugin.new]) 234 Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([TestBlockPlugin.new])
243 login_as(create_admin_user(Environment.default)) 235 login_as(create_admin_user(Environment.default))
244 - get :add_block  
245 -  
246 - assert_response :success  
247 - assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock1)  
248 - assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock2)  
249 - assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock3)  
250 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock4)  
251 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock5)  
252 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock6)  
253 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock7)  
254 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock8)  
255 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock9)  
256 - end  
257 -  
258 - should 'a block plugin with side position add new blocks only in this position' do  
259 - class CustomBlock1 < Block; end;  
260 - class CustomBlock2 < Block; end;  
261 - class CustomBlock3 < Block; end;  
262 - class CustomBlock4 < Block; end;  
263 - class CustomBlock5 < Block; end;  
264 - class CustomBlock6 < Block; end;  
265 - class CustomBlock7 < Block; end;  
266 - class CustomBlock8 < Block; end;  
267 - class CustomBlock9 < Block; end;  
268 -  
269 - class TestBlockPlugin < Noosfero::Plugin  
270 - def self.extra_blocks  
271 - {  
272 - CustomBlock1 => {:type => Environment, :position => [1]},  
273 - CustomBlock2 => {:type => Environment, :position => 1},  
274 - CustomBlock3 => {:type => Environment, :position => '1'},  
275 - CustomBlock4 => {:type => Environment, :position => [2]},  
276 - CustomBlock5 => {:type => Environment, :position => 2},  
277 - CustomBlock6 => {:type => Environment, :position => '2'},  
278 - CustomBlock7 => {:type => Environment, :position => [3]},  
279 - CustomBlock8 => {:type => Environment, :position => 3},  
280 - CustomBlock9 => {:type => Environment, :position => '3'},  
281 - }  
282 - end  
283 - end  
284 -  
285 - Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([TestBlockPlugin.new])  
286 - login_as(create_admin_user(Environment.default))  
287 - get :add_block 236 + get :index
288 assert_response :success 237 assert_response :success
289 238
290 - assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock1)  
291 - assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock2)  
292 - assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock3)  
293 - assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock4)  
294 - assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock5)  
295 - assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock6)  
296 - assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock7)  
297 - assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock8)  
298 - assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock9) 239 + (1..9).each {|i| assert_tag :tag => 'div', :attributes => { 'data-block-type' => "EnvironmentDesignControllerTest::CustomBlock#{i}" }}
299 end 240 end
300 241
301 should 'a block plugin cannot be listed for unspecified types' do 242 should 'a block plugin cannot be listed for unspecified types' do
@@ -325,17 +266,11 @@ class EnvironmentDesignControllerTest &lt; ActionController::TestCase @@ -325,17 +266,11 @@ class EnvironmentDesignControllerTest &lt; ActionController::TestCase
325 266
326 Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([TestBlockPlugin.new]) 267 Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([TestBlockPlugin.new])
327 login_as(create_admin_user(Environment.default)) 268 login_as(create_admin_user(Environment.default))
328 - get :add_block 269 + get :index
329 assert_response :success 270 assert_response :success
330 271
331 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock1)  
332 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock2)  
333 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock3)  
334 - assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock4)  
335 - assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock5)  
336 - assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock6)  
337 - assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock7)  
338 - assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock8) 272 + [4, 8].each {|i| assert_tag :tag => 'div', :attributes => { 'data-block-type' => "EnvironmentDesignControllerTest::CustomBlock#{i}" }}
  273 + [1, 2, 3, 5, 6, 7].each {|i| assert_no_tag :tag => 'div', :attributes => { 'data-block-type' => "EnvironmentDesignControllerTest::CustomBlock#{i}" }}
339 end 274 end
340 275
341 should 'clone a block' do 276 should 'clone a block' do
test/functional/profile_design_controller_test.rb
@@ -169,7 +169,7 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase @@ -169,7 +169,7 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase
169 end 169 end
170 end 170 end
171 171
172 - should 'a block plugin with center position add new blocks only in this position' do 172 + should 'a block plugin add new blocks' do
173 class CustomBlock1 < Block; end; 173 class CustomBlock1 < Block; end;
174 class CustomBlock2 < Block; end; 174 class CustomBlock2 < Block; end;
175 class CustomBlock3 < Block; end; 175 class CustomBlock3 < Block; end;
@@ -197,60 +197,10 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase @@ -197,60 +197,10 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase
197 end 197 end
198 198
199 Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([TestBlockPlugin.new]) 199 Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([TestBlockPlugin.new])
200 - get :add_block, :profile => 'designtestuser'  
201 - assert_response :success  
202 -  
203 - assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock1)  
204 - assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock2)  
205 - assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock3)  
206 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock4)  
207 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock5)  
208 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock6)  
209 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock7)  
210 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock8)  
211 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock9)  
212 - end  
213 -  
214 - should 'a block plugin with side position add new blocks only in this position' do  
215 - class CustomBlock1 < Block; end;  
216 - class CustomBlock2 < Block; end;  
217 - class CustomBlock3 < Block; end;  
218 - class CustomBlock4 < Block; end;  
219 - class CustomBlock5 < Block; end;  
220 - class CustomBlock6 < Block; end;  
221 - class CustomBlock7 < Block; end;  
222 - class CustomBlock8 < Block; end;  
223 - class CustomBlock9 < Block; end;  
224 -  
225 - class TestBlockPlugin < Noosfero::Plugin  
226 - def self.extra_blocks  
227 - {  
228 - CustomBlock1 => {:type => Person, :position => [1]},  
229 - CustomBlock2 => {:type => Person, :position => 1},  
230 - CustomBlock3 => {:type => Person, :position => '1'},  
231 - CustomBlock4 => {:type => Person, :position => [2]},  
232 - CustomBlock5 => {:type => Person, :position => 2},  
233 - CustomBlock6 => {:type => Person, :position => '2'},  
234 - CustomBlock7 => {:type => Person, :position => [3]},  
235 - CustomBlock8 => {:type => Person, :position => 3},  
236 - CustomBlock9 => {:type => Person, :position => '3'},  
237 - }  
238 - end  
239 - end  
240 -  
241 - Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([TestBlockPlugin.new])  
242 - get :add_block, :profile => 'designtestuser' 200 + get :index, :profile => 'designtestuser'
243 assert_response :success 201 assert_response :success
244 202
245 - assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock1)  
246 - assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock2)  
247 - assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock3)  
248 - assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock4)  
249 - assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock5)  
250 - assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock6)  
251 - assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock7)  
252 - assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock8)  
253 - assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock9) 203 + (1..9).each {|i| assert_tag :tag => 'div', :attributes => { 'data-block-type' => "ProfileDesignControllerTest::CustomBlock#{i}" } }
254 end 204 end
255 205
256 should 'a block plugin cannot be listed for unspecified types' do 206 should 'a block plugin cannot be listed for unspecified types' do
@@ -279,17 +229,11 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase @@ -279,17 +229,11 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase
279 end 229 end
280 230
281 Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([TestBlockPlugin.new]) 231 Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([TestBlockPlugin.new])
282 - get :add_block, :profile => 'designtestuser' 232 + get :index, :profile => 'designtestuser'
283 assert_response :success 233 assert_response :success
284 234
285 - assert @controller.instance_variable_get('@center_block_types').include?(CustomBlock1)  
286 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock2)  
287 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock3)  
288 - assert !@controller.instance_variable_get('@center_block_types').include?(CustomBlock4)  
289 - assert @controller.instance_variable_get('@side_block_types').include?(CustomBlock5)  
290 - assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock6)  
291 - assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock7)  
292 - assert !@controller.instance_variable_get('@side_block_types').include?(CustomBlock8) 235 + [1, 5].each {|i| assert_tag :tag => 'div', :attributes => { 'data-block-type' => "ProfileDesignControllerTest::CustomBlock#{i}" }}
  236 + [2, 3, 4, 6, 7, 8].each {|i| assert_no_tag :tag => 'div', :attributes => { 'data-block-type' => "ProfileDesignControllerTest::CustomBlock#{i}" }}
293 end 237 end
294 238
295 should 'not edit main block with never option' do 239 should 'not edit main block with never option' do
@@ -339,15 +283,9 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase @@ -339,15 +283,9 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase
339 # BEGIN - tests for ProfileDesignController features 283 # BEGIN - tests for ProfileDesignController features
340 ###################################################### 284 ######################################################
341 285
342 - should 'display popup for adding a new block' do  
343 - get :add_block, :profile => 'designtestuser'  
344 - assert_response :success  
345 - assert_no_tag :tag => 'body' # e.g. no layout  
346 - end  
347 -  
348 should 'actually add a new block' do 286 should 'actually add a new block' do
349 assert_difference 'Block.count' do 287 assert_difference 'Block.count' do
350 - post :add_block, :profile => 'designtestuser', :box_id => @box1.id, :type => RecentDocumentsBlock.name 288 + post :move_block, :profile => 'designtestuser', :target => "end-of-box-#{@box1.id}", :type => RecentDocumentsBlock.name
351 assert_redirected_to :action => 'index' 289 assert_redirected_to :action => 'index'
352 end 290 end
353 end 291 end
@@ -355,7 +293,7 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase @@ -355,7 +293,7 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase
355 should 'not allow to create unknown types' do 293 should 'not allow to create unknown types' do
356 assert_no_difference 'Block.count' do 294 assert_no_difference 'Block.count' do
357 assert_raise ArgumentError do 295 assert_raise ArgumentError do
358 - post :add_block, :profile => 'designtestuser', :box_id => @box1.id, :type => "PleaseLetMeCrackYourSite" 296 + post :move_block, :profile => 'designtestuser', :box_id => @box1.id, :type => "PleaseLetMeCrackYourSite"
359 end 297 end
360 end 298 end
361 end 299 end
@@ -432,9 +370,9 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase @@ -432,9 +370,9 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase
432 person = create_user_with_permission('test_user', 'edit_profile_design', ent) 370 person = create_user_with_permission('test_user', 'edit_profile_design', ent)
433 login_as(person.user.login) 371 login_as(person.user.login)
434 372
435 - get :add_block, :profile => 'test_ent' 373 + get :index, :profile => 'test_ent'
436 374
437 - assert_no_tag :tag => 'input', :attributes => {:type => 'radio', :value => 'ProductsBlock'} 375 + assert_no_tag :tag => 'div', :attributes => { 'data-block-type' => 'ProductsBlock' }
438 end 376 end
439 377
440 should 'create back link to profile control panel' do 378 should 'create back link to profile control panel' do
@@ -448,18 +386,18 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase @@ -448,18 +386,18 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase
448 386
449 should 'offer to create blog archives block only if has blog' do 387 should 'offer to create blog archives block only if has blog' do
450 holder.articles << Blog.new(:name => 'Blog test', :profile => holder) 388 holder.articles << Blog.new(:name => 'Blog test', :profile => holder)
451 - get :add_block, :profile => 'designtestuser'  
452 - assert_tag :tag => 'input', :attributes => { :name => 'type', :value => 'BlogArchivesBlock' } 389 + get :index, :profile => 'designtestuser'
  390 + assert_tag :tag => 'div', :attributes => { 'data-block-type' => 'BlogArchivesBlock' }
453 end 391 end
454 392
455 should 'not offer to create blog archives block if user dont have blog' do 393 should 'not offer to create blog archives block if user dont have blog' do
456 - get :add_block, :profile => 'designtestuser'  
457 - assert_no_tag :tag => 'input', :attributes => { :name => 'type', :value => 'BlogArchivesBlock' } 394 + get :index, :profile => 'designtestuser'
  395 + assert_no_tag :tag => 'div', :attributes => { 'data-block-type' => 'BlogArchivesBlock' }
458 end 396 end
459 397
460 should 'offer to create feed reader block' do 398 should 'offer to create feed reader block' do
461 - get :add_block, :profile => 'designtestuser'  
462 - assert_tag :tag => 'input', :attributes => { :name => 'type', :value => 'FeedReaderBlock' } 399 + get :index, :profile => 'designtestuser'
  400 + assert_tag :tag => 'div', :attributes => { 'data-block-type' => 'FeedReaderBlock' }
463 end 401 end
464 402
465 should 'be able to edit FeedReaderBlock' do 403 should 'be able to edit FeedReaderBlock' do
@@ -569,17 +507,17 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase @@ -569,17 +507,17 @@ class ProfileDesignControllerTest &lt; ActionController::TestCase
569 end 507 end
570 508
571 should 'allow admins to add RawHTMLBlock' do 509 should 'allow admins to add RawHTMLBlock' do
572 - profile.stubs(:is_admin?).with(profile.environment).returns(true) 510 + profile.stubs(:is_admin?).returns(true)
573 @controller.stubs(:user).returns(profile) 511 @controller.stubs(:user).returns(profile)
574 - get :add_block, :profile => 'designtestuser'  
575 - assert_tag :tag => 'input', :attributes => { :name => 'type', :value => 'RawHTMLBlock' } 512 + get :index, :profile => 'designtestuser'
  513 + assert_tag :tag => 'div', :attributes => { 'data-block-type' => 'RawHTMLBlock' }
576 end 514 end
577 515
578 should 'not allow normal users to add RawHTMLBlock' do 516 should 'not allow normal users to add RawHTMLBlock' do
579 - profile.stubs(:is_admin?).with(profile.environment).returns(false) 517 + profile.stubs(:is_admin?).returns(false)
580 @controller.stubs(:user).returns(profile) 518 @controller.stubs(:user).returns(profile)
581 - get :add_block, :profile => 'designtestuser'  
582 - assert_no_tag :tag => 'input', :attributes => { :name => 'type', :value => 'RawHTMLBlock' } 519 + get :index, :profile => 'designtestuser'
  520 + assert_no_tag :tag => 'div', :attributes => { 'data-block-type' => 'RawHTMLBlock' }
583 end 521 end
584 522
585 should 'editing article block displays right selected article' do 523 should 'editing article block displays right selected article' do