diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2013-04-05 14:48:49 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2013-04-05 14:48:49 -0700 |
commit | 01034d3be0d7c8c09b551ac612c4b18f86086dc5 (patch) | |
tree | 3d5d590d6459f2f3a9ad0b15f08169babcce428c /activerecord/test/cases/timestamp_test.rb | |
parent | c037659294555298889a7102c580240804f44d84 (diff) | |
parent | 096ee1594d329f53ef47d0aff9bb6eef25a18b96 (diff) | |
download | rails-01034d3be0d7c8c09b551ac612c4b18f86086dc5.tar.gz rails-01034d3be0d7c8c09b551ac612c4b18f86086dc5.tar.bz2 rails-01034d3be0d7c8c09b551ac612c4b18f86086dc5.zip |
Merge branch 'master' into railstest
* master: (44 commits)
Improve the changelog entry [ci skip]
Fix explicit names on multiple file fields
Correctly parse bigint defaults in PostgreSQL
Move changelog to the top [ci skip]
Fix indent and remove extra white spaces
Fix scope chaining + STI
failing test for #9869
Improve `belongs_to touch: true` timestamp test
Sort modules in alphabetical order.
Avoid an attempt to fetch old record when id was not present in touch callback
Use the correct pk field from the reflected class to find the old record
Refactor mail_to to not generate intermediate hashes when adding href
Ensure mail_to helper does not modify the given html options hash
Use inspect when writing the foreign key from the reflection
Use a space after the comment sign when showing the result of commands
Exclude template files for rdoc API [ci skip]
template should have generic name
use | to have more intent revealing code
Revert "Merge pull request #10034 from benofsky/fix_skipping_object_callback_filters"
stop depending on callbacks
...
Conflicts:
railties/test/application/rake_test.rb
Diffstat (limited to 'activerecord/test/cases/timestamp_test.rb')
-rw-r--r-- | activerecord/test/cases/timestamp_test.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/activerecord/test/cases/timestamp_test.rb b/activerecord/test/cases/timestamp_test.rb index 777a2b70dd..9d84f64c96 100644 --- a/activerecord/test/cases/timestamp_test.rb +++ b/activerecord/test/cases/timestamp_test.rb @@ -176,6 +176,52 @@ 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 + 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 + + toy2 = klass.find(2) + new_pet = toy2.pet + time = 3.days.ago.at_beginning_of_hour + + old_pet.update_columns(updated_at: time) + new_pet.update_columns(updated_at: time) + + toy1.pet = new_pet + toy1.save! + + old_pet.reload + new_pet.reload + + assert_not_equal time, new_pet.updated_at + assert_not_equal time, old_pet.updated_at + end + + def test_clearing_association_touches_the_old_record + klass = Class.new(ActiveRecord::Base) do + def self.name; 'Toy'; end + belongs_to :pet, touch: true + end + + toy = klass.find(1) + pet = toy.pet + time = 3.days.ago.at_beginning_of_hour + + pet.update_columns(updated_at: time) + + toy.pet = nil + toy.save! + + pet.reload + + assert_not_equal time, pet.updated_at + end + def test_timestamp_attributes_for_create toy = Toy.first assert_equal toy.send(:timestamp_attributes_for_create), [:created_at, :created_on] |