From c0ad5e48f643e9721059e94ba23dab3159eebb93 Mon Sep 17 00:00:00 2001 From: Emilio Tagua Date: Fri, 17 Sep 2010 16:00:06 -0300 Subject: Don't use identity map if loading readonly records, this will prevent changing readonly status on already loaded records. --- activerecord/test/cases/identity_map_test.rb | 32 ++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) (limited to 'activerecord/test/cases') diff --git a/activerecord/test/cases/identity_map_test.rb b/activerecord/test/cases/identity_map_test.rb index e62e99361a..5edbd34be2 100644 --- a/activerecord/test/cases/identity_map_test.rb +++ b/activerecord/test/cases/identity_map_test.rb @@ -242,12 +242,6 @@ class IdentityMapTest < ActiveRecord::TestCase assert_equal authors(:david), assert_no_queries { posts[0].author} end - # Second search should not change read only status for collection - def test_find_with_joins_option_implies_readonly - Developer.joins(', projects').each { |d| assert d.readonly? } - Developer.joins(', projects').readonly(false).each { |d| assert d.readonly? } - end - def test_reload_object_if_save_failed developer = Developer.first developer.salary = 0 @@ -305,4 +299,30 @@ class IdentityMapTest < ActiveRecord::TestCase assert_equal post.object_id, comment.post.target.object_id end end + + def test_find_using_identity_map_respects_readonly_when_loading_associated_object_first + author = Author.first + readonly_comment = author.readonly_comments.first + + comment = Comment.first + assert !comment.readonly? + + assert readonly_comment.readonly? + + assert_raise(ActiveRecord::ReadOnlyRecord) {readonly_comment.save} + assert comment.save + end + + def test_find_using_identity_map_respects_readonly + comment = Comment.first + assert !comment.readonly? + + author = Author.first + readonly_comment = author.readonly_comments.first + + assert readonly_comment.readonly? + + assert_raise(ActiveRecord::ReadOnlyRecord) {readonly_comment.save} + assert comment.save + end end -- cgit v1.2.3