aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2011-10-13 16:23:48 -0500
committerDavid Heinemeier Hansson <david@loudthinking.com>2011-10-13 16:24:22 -0500
commit85b64f98d100d37b3a232c315daa10fad37dccdc (patch)
treee1f4b621240502e7cb9b5530495840c2e8315c52 /activerecord/test
parent8f11d53506ea7ef2fd4cd28581f5eedd9be9e570 (diff)
downloadrails-85b64f98d100d37b3a232c315daa10fad37dccdc.tar.gz
rails-85b64f98d100d37b3a232c315daa10fad37dccdc.tar.bz2
rails-85b64f98d100d37b3a232c315daa10fad37dccdc.zip
Added ActiveRecord::Base.store for declaring simple single-column key/value stores [DHH]
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/store_test.rb29
-rw-r--r--activerecord/test/models/admin/user.rb1
-rw-r--r--activerecord/test/schema/schema.rb1
3 files changed, 31 insertions, 0 deletions
diff --git a/activerecord/test/cases/store_test.rb b/activerecord/test/cases/store_test.rb
new file mode 100644
index 0000000000..3d056d93b6
--- /dev/null
+++ b/activerecord/test/cases/store_test.rb
@@ -0,0 +1,29 @@
+require 'cases/helper'
+require 'models/admin'
+require 'models/admin/user'
+
+class StoreTest < ActiveRecord::TestCase
+ setup do
+ @john = Admin::User.create(name: 'John Doe', color: 'black')
+ end
+
+ test "reading store attributes through accessors" do
+ assert_equal 'black', @john.color
+ assert_nil @john.homepage
+ end
+
+ test "writing store attributes through accessors" do
+ @john.color = 'red'
+ @john.homepage = '37signals.com'
+
+ assert_equal 'red', @john.color
+ assert_equal '37signals.com', @john.homepage
+ end
+
+ test "accessing attributes not exposed by accessors" do
+ @john.settings[:icecream] = 'graeters'
+ @john.save
+
+ assert 'graeters', @john.reload.settings[:icecream]
+ end
+end
diff --git a/activerecord/test/models/admin/user.rb b/activerecord/test/models/admin/user.rb
index 74bb21551e..275a03c344 100644
--- a/activerecord/test/models/admin/user.rb
+++ b/activerecord/test/models/admin/user.rb
@@ -1,3 +1,4 @@
class Admin::User < ActiveRecord::Base
belongs_to :account
+ store :settings, accessors: [ :color, :homepage ]
end \ No newline at end of file
diff --git a/activerecord/test/schema/schema.rb b/activerecord/test/schema/schema.rb
index 9d5ad16a3c..bb08f5c181 100644
--- a/activerecord/test/schema/schema.rb
+++ b/activerecord/test/schema/schema.rb
@@ -37,6 +37,7 @@ ActiveRecord::Schema.define do
create_table :admin_users, :force => true do |t|
t.string :name
+ t.text :settings
t.references :account
end