diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2011-04-29 07:11:56 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2011-04-29 07:11:56 +0000 |
commit | 55fd2f55626f5af38305ce5fdfa14c025ec1a2ca (patch) | |
tree | 15f2ced7a7fe249d664692e8931bc49846ccd3df | |
parent | 8a734f9997f80279fe82ccd2dc99179be4253317 (diff) | |
download | redmine-55fd2f55626f5af38305ce5fdfa14c025ec1a2ca.tar.gz redmine-55fd2f55626f5af38305ce5fdfa14c025ec1a2ca.zip |
Merged r5185 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.1-stable@5575 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/controllers/wiki_controller.rb | 6 | ||||
-rw-r--r-- | test/functional/wiki_controller_test.rb | 36 |
2 files changed, 38 insertions, 4 deletions
diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb index e7e389306..ef26a8299 100644 --- a/app/controllers/wiki_controller.rb +++ b/app/controllers/wiki_controller.rb @@ -93,9 +93,6 @@ class WikiController < ApplicationController # To prevent StaleObjectError exception when reverting to a previous version @content.version = @page.content.version - rescue ActiveRecord::StaleObjectError - # Optimistic locking exception - flash[:error] = l(:notice_locking_conflict) end verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed } @@ -131,7 +128,8 @@ class WikiController < ApplicationController rescue ActiveRecord::StaleObjectError # Optimistic locking exception - flash[:error] = l(:notice_locking_conflict) + flash.now[:error] = l(:notice_locking_conflict) + render :action => 'edit' end # rename a page diff --git a/test/functional/wiki_controller_test.rb b/test/functional/wiki_controller_test.rb index c40b2f392..981ebf8dd 100644 --- a/test/functional/wiki_controller_test.rb +++ b/test/functional/wiki_controller_test.rb @@ -155,6 +155,42 @@ class WikiControllerTest < ActionController::TestCase assert_tag :tag => 'input', :attributes => {:id => 'content_version', :value => '1'} end + def test_update_stale_page_should_not_raise_an_error + @request.session[:user_id] = 2 + c = Wiki.find(1).find_page('Another_page').content + c.text = 'Previous text' + c.save! + assert_equal 2, c.version + + assert_no_difference 'WikiPage.count' do + assert_no_difference 'WikiContent.count' do + assert_no_difference 'WikiContent::Version.count' do + put :update, :project_id => 1, + :id => 'Another_page', + :content => { + :comments => 'My comments', + :text => 'Text should not be lost', + :version => 1 + } + end + end + end + assert_response :success + assert_template 'edit' + assert_tag :div, + :attributes => { :class => /error/ }, + :content => /Data has been updated by another user/ + assert_tag 'textarea', + :attributes => { :name => 'content[text]' }, + :content => /Text should not be lost/ + assert_tag 'input', + :attributes => { :name => 'content[comments]', :value => 'My comments' } + + c.reload + assert_equal 'Previous text', c.text + assert_equal 2, c.version + end + def test_preview @request.session[:user_id] = 2 xhr :post, :preview, :project_id => 1, :id => 'CookBook_documentation', |