diff options
author | Christopher Meiklejohn <christopher.meiklejohn@gmail.com> | 2011-03-14 22:19:47 -0400 |
---|---|---|
committer | Jon Leighton <j@jonathanleighton.com> | 2011-05-08 18:37:28 +0100 |
commit | 4fbd8adf4824d48aea47a57047d90fb6510cee28 (patch) | |
tree | 6db7a372616d0299d840bb632dfe132e730d919d /activerecord/test/cases | |
parent | a45f300e5f2d6b6581dd0f0d0f650c83b9773170 (diff) | |
download | rails-4fbd8adf4824d48aea47a57047d90fb6510cee28.tar.gz rails-4fbd8adf4824d48aea47a57047d90fb6510cee28.tar.bz2 rails-4fbd8adf4824d48aea47a57047d90fb6510cee28.zip |
Don't quote ID's as Arel will quote them -- follow same conventions as the delete method.
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r-- | activerecord/test/cases/locking_test.rb | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/activerecord/test/cases/locking_test.rb b/activerecord/test/cases/locking_test.rb index 636a709924..61baa55027 100644 --- a/activerecord/test/cases/locking_test.rb +++ b/activerecord/test/cases/locking_test.rb @@ -5,6 +5,7 @@ require 'models/job' require 'models/reader' require 'models/legacy_thing' require 'models/reference' +require 'models/string_key_object' class LockWithoutDefault < ActiveRecord::Base; end @@ -18,7 +19,40 @@ class ReadonlyFirstNamePerson < Person end class OptimisticLockingTest < ActiveRecord::TestCase - fixtures :people, :legacy_things, :references + fixtures :people, :legacy_things, :references, :string_key_objects + + def test_non_integer_lock_existing + s1 = StringKeyObject.find("record1") + s2 = StringKeyObject.find("record1") + assert_equal 0, s1.lock_version + assert_equal 0, s2.lock_version + + s1.name = 'updated record' + s1.save! + assert_equal 1, s1.lock_version + assert_equal 0, s2.lock_version + + s2.name = 'doubly updated record' + assert_raise(ActiveRecord::StaleObjectError) { s2.save! } + end + + def test_non_integer_lock_destroy + s1 = StringKeyObject.find("record1") + s2 = StringKeyObject.find("record1") + assert_equal 0, s1.lock_version + assert_equal 0, s2.lock_version + + s1.name = 'updated record' + s1.save! + assert_equal 1, s1.lock_version + assert_equal 0, s2.lock_version + assert_raise(ActiveRecord::StaleObjectError) { s2.destroy } + + assert s1.destroy + assert s1.frozen? + assert s1.destroyed? + assert_raises(ActiveRecord::RecordNotFound) { StringKeyObject.find("record1") } + end def test_lock_existing p1 = Person.find(1) |