diff options
-rw-r--r-- | app/controllers/my_controller.rb | 19 | ||||
-rw-r--r-- | test/functional/my_controller_test.rb | 5 |
2 files changed, 15 insertions, 9 deletions
diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb index ab7b1828e..84f5b20ca 100644 --- a/app/controllers/my_controller.rb +++ b/app/controllers/my_controller.rb @@ -147,15 +147,16 @@ class MyController < ApplicationController # params[:block] : id of the block to add def add_block block = params[:block].to_s.underscore - (render :nothing => true; return) unless block && (BLOCKS.keys.include? block) - @user = User.current - layout = @user.pref[:my_page_layout] || {} - # remove if already present in a group - %w(top left right).each {|f| (layout[f] ||= []).delete block } - # add it on top - layout['top'].unshift block - @user.pref[:my_page_layout] = layout - @user.pref.save + if block.present? && BLOCKS.key?(block) + @user = User.current + layout = @user.pref[:my_page_layout] || {} + # remove if already present in a group + %w(top left right).each {|f| (layout[f] ||= []).delete block } + # add it on top + layout['top'].unshift block + @user.pref[:my_page_layout] = layout + @user.pref.save + end redirect_to my_page_layout_path end diff --git a/test/functional/my_controller_test.rb b/test/functional/my_controller_test.rb index b04219e9f..7e9677051 100644 --- a/test/functional/my_controller_test.rb +++ b/test/functional/my_controller_test.rb @@ -191,6 +191,11 @@ class MyControllerTest < ActionController::TestCase assert User.find(2).pref[:my_page_layout]['top'].include?('issuesreportedbyme') end + def test_add_invalid_block_should_redirect + post :add_block, :block => 'invalid' + assert_redirected_to '/my/page_layout' + end + def test_remove_block post :remove_block, :block => 'issuesassignedtome' assert_redirected_to '/my/page_layout' |