From 79994e3309f9ceb76aff4ba688be7343e44ace44 Mon Sep 17 00:00:00 2001 From: Daniel Morrison Date: Mon, 4 Aug 2008 11:39:09 -0400 Subject: [PATCH] Added a failing test for using dirty tracking (partial updates) with decimal columns. --- activerecord/test/cases/dirty_test.rb | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-) diff --git a/activerecord/test/cases/dirty_test.rb b/activerecord/test/cases/dirty_test.rb index e5e0220..356a4cd 100644 --- a/activerecord/test/cases/dirty_test.rb +++ b/activerecord/test/cases/dirty_test.rb @@ -21,6 +21,10 @@ private end end +class NumericData < ActiveRecord::Base + self.table_name = 'numeric_data' +end + class DirtyTest < ActiveRecord::TestCase def test_attribute_changes # New record - no changes. @@ -152,6 +156,24 @@ class DirtyTest < ActiveRecord::TestCase assert_not_equal old_updated_on, pirate.reload.updated_on end end + + def test_partial_update_with_decimal_column + numeric = NumericData.new(:big_bank_balance => 12345.67) + old_world_population = 1_000_000 + + with_partial_updates NumericData, false do + assert_queries(2) { 2.times { numeric.save! } } + NumericData.update_all({ :world_population => old_world_population }, :id => numeric.id) + end + + with_partial_updates NumericData, true do + assert_queries(0) { 2.times { numeric.save! } } + assert_equal old_world_population, numeric.reload.world_population + + assert_queries(1) { numeric.big_bank_balance = 10_000_000; numeric.save! } + assert_not_equal old_world_population, numeric.reload.world_population + end + end def test_partial_update_with_optimistic_locking person = Person.new(:first_name => 'foo') -- 1.5.4.3