mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
serialize fails on subclass
This commit is contained in:
parent
a64ab95987
commit
30ce084bbf
4 changed files with 32 additions and 6 deletions
|
@ -1233,6 +1233,26 @@ class BasicsTest < ActiveRecord::TestCase
|
|||
assert_equal(myobj, topic.content)
|
||||
end
|
||||
|
||||
def test_serialized_attribute_in_base_class
|
||||
Topic.serialize("content", Hash)
|
||||
|
||||
hash = { 'content1' => 'value1', 'content2' => 'value2' }
|
||||
important_topic = ImportantTopic.create("content" => hash)
|
||||
assert_equal(hash, important_topic.content)
|
||||
|
||||
important_topic.reload
|
||||
assert_equal(hash, important_topic.content)
|
||||
end
|
||||
|
||||
def test_serialized_attribute_declared_in_subclass
|
||||
hash = { 'important1' => 'value1', 'important2' => 'value2' }
|
||||
important_topic = ImportantTopic.create("important" => hash)
|
||||
assert_equal(hash, important_topic.important)
|
||||
|
||||
important_topic.reload
|
||||
assert_equal(hash, important_topic.important)
|
||||
end
|
||||
|
||||
def test_serialized_time_attribute
|
||||
myobj = Time.local(2008,1,1,1,0)
|
||||
topic = Topic.create("content" => myobj).reload
|
||||
|
@ -1671,7 +1691,7 @@ class BasicsTest < ActiveRecord::TestCase
|
|||
|
||||
def test_inspect_instance
|
||||
topic = topics(:first)
|
||||
assert_equal %(#<Topic id: 1, title: "The First Topic", author_name: "David", author_email_address: "david@loudthinking.com", written_on: "#{topic.written_on.to_s(:db)}", bonus_time: "#{topic.bonus_time.to_s(:db)}", last_read: "#{topic.last_read.to_s(:db)}", content: "Have a nice day", approved: false, replies_count: 1, parent_id: nil, parent_title: nil, type: nil, group: nil, created_at: "#{topic.created_at.to_s(:db)}", updated_at: "#{topic.updated_at.to_s(:db)}">), topic.inspect
|
||||
assert_equal %(#<Topic id: 1, title: "The First Topic", author_name: "David", author_email_address: "david@loudthinking.com", written_on: "#{topic.written_on.to_s(:db)}", bonus_time: "#{topic.bonus_time.to_s(:db)}", last_read: "#{topic.last_read.to_s(:db)}", content: "Have a nice day", important: nil, approved: false, replies_count: 1, parent_id: nil, parent_title: nil, type: nil, group: nil, created_at: "#{topic.created_at.to_s(:db)}", updated_at: "#{topic.updated_at.to_s(:db)}">), topic.inspect
|
||||
end
|
||||
|
||||
def test_inspect_new_instance
|
||||
|
|
|
@ -36,25 +36,25 @@ class ReflectionTest < ActiveRecord::TestCase
|
|||
|
||||
def test_read_attribute_names
|
||||
assert_equal(
|
||||
%w( id title author_name author_email_address bonus_time written_on last_read content group approved replies_count parent_id parent_title type created_at updated_at ).sort,
|
||||
%w( id title author_name author_email_address bonus_time written_on last_read content important group approved replies_count parent_id parent_title type created_at updated_at ).sort,
|
||||
@first.attribute_names.sort
|
||||
)
|
||||
end
|
||||
|
||||
def test_columns
|
||||
assert_equal 16, Topic.columns.length
|
||||
assert_equal 17, Topic.columns.length
|
||||
end
|
||||
|
||||
def test_columns_are_returned_in_the_order_they_were_declared
|
||||
column_names = Topic.columns.map { |column| column.name }
|
||||
assert_equal %w(id title author_name author_email_address written_on bonus_time last_read content approved replies_count parent_id parent_title type group created_at updated_at), column_names
|
||||
assert_equal %w(id title author_name author_email_address written_on bonus_time last_read content important approved replies_count parent_id parent_title type group created_at updated_at), column_names
|
||||
end
|
||||
|
||||
def test_content_columns
|
||||
content_columns = Topic.content_columns
|
||||
content_column_names = content_columns.map {|column| column.name}
|
||||
assert_equal 12, content_columns.length
|
||||
assert_equal %w(title author_name author_email_address written_on bonus_time last_read content group approved parent_title created_at updated_at).sort, content_column_names.sort
|
||||
assert_equal 13, content_columns.length
|
||||
assert_equal %w(title author_name author_email_address written_on bonus_time last_read content important group approved parent_title created_at updated_at).sort, content_column_names.sort
|
||||
end
|
||||
|
||||
def test_column_string_type_and_limit
|
||||
|
|
|
@ -108,6 +108,10 @@ class Topic < ActiveRecord::Base
|
|||
def after_create_for_transaction; end
|
||||
end
|
||||
|
||||
class ImportantTopic < Topic
|
||||
serialize :important, Hash
|
||||
end
|
||||
|
||||
module Web
|
||||
class Topic < ActiveRecord::Base
|
||||
has_many :replies, :dependent => :destroy, :foreign_key => "parent_id", :class_name => 'Web::Reply'
|
||||
|
|
|
@ -607,8 +607,10 @@ ActiveRecord::Schema.define do
|
|||
# Oracle SELECT WHERE clause which causes many unit test failures
|
||||
if current_adapter?(:OracleAdapter)
|
||||
t.string :content, :limit => 4000
|
||||
t.string :important, :limit => 4000
|
||||
else
|
||||
t.text :content
|
||||
t.text :important
|
||||
end
|
||||
t.boolean :approved, :default => true
|
||||
t.integer :replies_count, :default => 0
|
||||
|
|
Loading…
Reference in a new issue