]> source.dussan.org Git - redmine.git/commitdiff
Fixed that preferences are not preserved when adding a user fails (#15552).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 29 Nov 2013 21:43:29 +0000 (21:43 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 29 Nov 2013 21:43:29 +0000 (21:43 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@12350 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/users_controller.rb
test/functional/users_controller_test.rb

index 4d89e04f5265b20d89fa26b46fee1e81631f8fc3..5e5cb815e1f925265be95f8ea5b1c0b5a4b8729f 100644 (file)
@@ -90,11 +90,9 @@ class UsersController < ApplicationController
     @user.admin = params[:user][:admin] || false
     @user.login = params[:user][:login]
     @user.password, @user.password_confirmation = params[:user][:password], params[:user][:password_confirmation] unless @user.auth_source_id
+    @user.pref.attributes = params[:pref]
 
     if @user.save
-      @user.pref.attributes = params[:pref]
-      @user.pref.save
-
       Mailer.account_information(@user, @user.password).deliver if params[:send_information]
 
       respond_to do |format|
index 5959da10ea891fefdace9072fda3ce201222f437..9966790e3b7c60b49fd9671dea607b22c5c32a83 100644 (file)
@@ -250,6 +250,25 @@ class UsersControllerTest < ActionController::TestCase
     assert_template 'new'
   end
 
+  def test_create_with_failure_sould_preserve_preference
+    assert_no_difference 'User.count' do
+      post :create,
+        :user => {},
+        :pref => {
+          'no_self_notified' => '1',
+          'hide_mail' => '1',
+          'time_zone' => 'Paris',
+          'comments_sorting' => 'desc',
+          'warn_on_leaving_unsaved' => '0'
+        }
+    end
+    assert_response :success
+    assert_template 'new'
+
+    assert_select 'select#pref_time_zone option[selected=selected]', :text => /Paris/
+    assert_select 'input#pref_no_self_notified[value=1][checked=checked]'
+  end
+
   def test_edit
     get :edit, :id => 2
     assert_response :success