Commit 2c471ec2a124577ee7a898d7838b360389cd83be

Authored by Victor Costa
1 parent d2fad26e

Avoid unecessary user save after update person

app/models/person.rb
@@ -282,7 +282,7 @@ roles] } @@ -282,7 +282,7 @@ roles] }
282 end 282 end
283 283
284 after_update do |person| 284 after_update do |person|
285 - person.user.save! 285 + person.user.save! unless person.user.changes.blank?
286 end 286 end
287 287
288 def is_admin?(environment = nil) 288 def is_admin?(environment = nil)
test/functional/search_controller_test.rb
@@ -30,6 +30,7 @@ class SearchControllerTest < ActionController::TestCase @@ -30,6 +30,7 @@ class SearchControllerTest < ActionController::TestCase
30 # By pass user validation on person creation 30 # By pass user validation on person creation
31 user = mock() 31 user = mock()
32 user.stubs(:id).returns(1) 32 user.stubs(:id).returns(1)
  33 + user.stubs(:changes).returns(nil)
33 user.stubs(:valid?).returns(true) 34 user.stubs(:valid?).returns(true)
34 user.stubs(:email).returns('some@test.com') 35 user.stubs(:email).returns('some@test.com')
35 user.stubs(:save!).returns(true) 36 user.stubs(:save!).returns(true)
test/unit/person_test.rb
@@ -1767,4 +1767,11 @@ class PersonTest < ActiveSupport::TestCase @@ -1767,4 +1767,11 @@ class PersonTest < ActiveSupport::TestCase
1767 assert person.voted_against?(article) 1767 assert person.voted_against?(article)
1768 end 1768 end
1769 1769
  1770 + should 'not save user after an update on person and user is not touched' do
  1771 + user = create_user('testuser')
  1772 + person = user.person
  1773 + person.user.expects(:save!).never
  1774 + person.save!
  1775 + end
  1776 +
1770 end 1777 end