From 64fcb752f2c2f337918f74cd0cc6049a4cafb7a6 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Sat, 15 Oct 2005 00:19:56 +0000 Subject: r3618@sedna: jeremy | 2005-10-14 12:06:03 -0700 Branch for :join tainting r3631@sedna: jeremy | 2005-10-14 20:13:49 -0700 Introduce read-only records, object.readonly\!, object.readonly?, Foo.find(:all, :readonly => true). Foo.find(:all, :joins => '...') also implies :readonly => true. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2594 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/test/readonly_test.rb | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100755 activerecord/test/readonly_test.rb (limited to 'activerecord/test') diff --git a/activerecord/test/readonly_test.rb b/activerecord/test/readonly_test.rb new file mode 100755 index 0000000000..cbab35b49a --- /dev/null +++ b/activerecord/test/readonly_test.rb @@ -0,0 +1,31 @@ +require 'abstract_unit' +require 'fixtures/topic' + +class ReadOnlyTest < Test::Unit::TestCase + fixtures :topics + + def test_cant_save_readonly_record + topic = Topic.find(:first) + assert !topic.readonly? + + topic.readonly! + assert topic.readonly? + + assert_nothing_raised do + topic.content = 'Luscious forbidden fruit.' + end + + assert_raise(ActiveRecord::ReadOnlyRecord) { topic.save } + assert_raise(ActiveRecord::ReadOnlyRecord) { topic.save! } + end + + def test_find_with_readonly_option + Topic.find(:all).each { |t| assert !t.readonly? } + Topic.find(:all, :readonly => false).each { |t| assert !t.readonly? } + Topic.find(:all, :readonly => true).each { |t| assert t.readonly? } + end + + def test_find_with_joins_option_implies_readonly + Topic.find(:all, :joins => '').each { |t| assert t.readonly? } + end +end -- cgit v1.2.3