aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/readonly_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/test/readonly_test.rb')
-rwxr-xr-xactiverecord/test/readonly_test.rb31
1 files changed, 31 insertions, 0 deletions
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