diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 4d89e04f5..5e5cb815e 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -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| diff --git a/test/functional/users_controller_test.rb b/test/functional/users_controller_test.rb index 5959da10e..9966790e3 100644 --- a/test/functional/users_controller_test.rb +++ b/test/functional/users_controller_test.rb @@ -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