1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

+ Add test for auto timestamps update of both old & new parent records

This commit is contained in:
PikachuEXE 2013-01-30 12:55:37 +08:00 committed by Adam Gamble
parent 36f7732e82
commit 7fc339059c
2 changed files with 38 additions and 0 deletions

View file

@ -176,6 +176,40 @@ class TimestampTest < ActiveRecord::TestCase
assert_not_equal time, owner.updated_at
end
def test_changing_parent_of_a_record_touches_both_new_and_old_parent_record_and_grandparent_record
klass = Class.new(ActiveRecord::Base) do
def self.name; 'Toy'; end
belongs_to :pet, touch: true
end
toy1 = klass.find(1)
old_pet = toy1.pet
old_owner = old_pet.owner
toy2 = klass.find(2)
new_pet = toy2.pet
new_owner = new_pet.owner
time = 3.days.ago
old_pet.update_columns(updated_at: time)
old_owner.update_columns(updated_at: time)
new_pet.update_columns(updated_at: time)
new_owner.update_columns(updated_at: time)
toy1.pet = new_pet
toy1.save!
old_pet.reload
old_owner.reload
new_pet.reload
new_owner.reload
assert_not_equal time, old_pet.updated_at
assert_not_equal time, old_owner.updated_at
assert_not_equal time, new_pet.updated_at
assert_not_equal time, new_owner.updated_at
end
def test_timestamp_attributes_for_create
toy = Toy.first
assert_equal toy.send(:timestamp_attributes_for_create), [:created_at, :created_on]

View file

@ -2,3 +2,7 @@ bone:
toy_id: 1
name: Bone
pet_id: 1
doll:
toy_id: 2
name: Doll
pet_id: 2