aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/time_precision_test.rb
diff options
context:
space:
mode:
authorAndrew White <andrew.white@unboxed.co>2018-03-11 18:19:20 +0000
committerAndrew White <andrew.white@unboxed.co>2018-03-11 18:19:20 +0000
commit4d9126cfccefdb69149caf7681d674b50335e9b4 (patch)
treebcc04a54333c7739820594ef682ee34ef77644e8 /activerecord/test/cases/time_precision_test.rb
parent38c7ddd4e9f3f22f67d9615dd04a2ae9525824fb (diff)
downloadrails-4d9126cfccefdb69149caf7681d674b50335e9b4.tar.gz
rails-4d9126cfccefdb69149caf7681d674b50335e9b4.tar.bz2
rails-4d9126cfccefdb69149caf7681d674b50335e9b4.zip
Apply time column precision on assignment
In #20317, datetime columns had their precision applied on assignment but that behaviour wasn't applied to time columns - this commit fixes that. Fixes #30301.
Diffstat (limited to 'activerecord/test/cases/time_precision_test.rb')
-rw-r--r--activerecord/test/cases/time_precision_test.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/activerecord/test/cases/time_precision_test.rb b/activerecord/test/cases/time_precision_test.rb
index 41455637bb..086500de38 100644
--- a/activerecord/test/cases/time_precision_test.rb
+++ b/activerecord/test/cases/time_precision_test.rb
@@ -27,6 +27,24 @@ if subsecond_precision_supported?
assert_equal 6, Foo.columns_hash["finish"].precision
end
+ def test_time_precision_is_truncated_on_assignment
+ @connection.create_table(:foos, force: true)
+ @connection.add_column :foos, :start, :time, precision: 0
+ @connection.add_column :foos, :finish, :time, precision: 6
+
+ time = ::Time.now.change(nsec: 123456789)
+ foo = Foo.new(start: time, finish: time)
+
+ assert_equal 0, foo.start.nsec
+ assert_equal 123456000, foo.finish.nsec
+
+ foo.save!
+ foo.reload
+
+ assert_equal 0, foo.start.nsec
+ assert_equal 123456000, foo.finish.nsec
+ end
+
def test_passing_precision_to_time_does_not_set_limit
@connection.create_table(:foos, force: true) do |t|
t.time :start, precision: 3