Skip to content

Commit be129c5

Browse files
committed
Add timestamp column alias test for upserts
This test ensures the bulk insert/upsert machinery for automatically updating timestamps correctly handles tables where the column are aliased.
1 parent 134a189 commit be129c5

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

activerecord/test/cases/insert_all_test.rb

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
require "models/author"
55
require "models/book"
66
require "models/cart"
7+
require "models/developer"
78
require "models/ship"
89
require "models/speedometer"
910
require "models/subscription"
@@ -514,6 +515,28 @@ def test_upsert_all_implicitly_sets_timestamps_on_update_when_model_record_times
514515
end
515516
end
516517

518+
def test_upsert_all_implicitly_sets_timestamps_even_when_columns_are_aliased
519+
skip unless supports_insert_on_duplicate_update?
520+
521+
Developer.upsert_all [{ id: 101, name: "Alice" }]
522+
alice = Developer.find(101)
523+
524+
assert_not_nil alice.created_at
525+
assert_not_nil alice.created_on
526+
assert_not_nil alice.updated_at
527+
assert_not_nil alice.updated_on
528+
529+
alice.update!(created_at: nil, created_on: nil, updated_at: nil, updated_on: nil)
530+
531+
Developer.upsert_all [{ id: alice.id, name: alice.name, salary: alice.salary * 2 }]
532+
alice.reload
533+
534+
assert_nil alice.created_at
535+
assert_nil alice.created_on
536+
assert_not_nil alice.updated_at
537+
assert_not_nil alice.updated_on
538+
end
539+
517540
def test_insert_all_raises_on_unknown_attribute
518541
assert_raise ActiveRecord::UnknownAttributeError do
519542
Book.insert_all! [{ unknown_attribute: "Test" }]

0 commit comments

Comments
 (0)