aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/column_definition_test.rb
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2011-03-02 21:24:56 +0000
committerJon Leighton <j@jonathanleighton.com>2011-03-04 09:30:27 +0000
commit735844db712c511dd8abf36a5279318fbc0ff9d0 (patch)
tree5fbd5d224ef85d8c878bf221db98b422c9345466 /activerecord/test/cases/column_definition_test.rb
parent9a98c766e045aebc2ef6d5b716936b73407f095d (diff)
parentb171b9e73dcc6a89b1da652da61c5127fe605b51 (diff)
downloadrails-735844db712c511dd8abf36a5279318fbc0ff9d0.tar.gz
rails-735844db712c511dd8abf36a5279318fbc0ff9d0.tar.bz2
rails-735844db712c511dd8abf36a5279318fbc0ff9d0.zip
Merge branch 'master' into nested_has_many_through
Conflicts: activerecord/CHANGELOG activerecord/lib/active_record/association_preload.rb activerecord/lib/active_record/associations.rb activerecord/lib/active_record/associations/class_methods/join_dependency.rb activerecord/lib/active_record/associations/class_methods/join_dependency/join_association.rb activerecord/lib/active_record/associations/has_many_association.rb activerecord/lib/active_record/associations/has_many_through_association.rb activerecord/lib/active_record/associations/has_one_association.rb activerecord/lib/active_record/associations/has_one_through_association.rb activerecord/lib/active_record/associations/through_association_scope.rb activerecord/lib/active_record/reflection.rb activerecord/test/cases/associations/has_many_through_associations_test.rb activerecord/test/cases/associations/has_one_through_associations_test.rb activerecord/test/cases/reflection_test.rb activerecord/test/cases/relations_test.rb activerecord/test/fixtures/memberships.yml activerecord/test/models/categorization.rb activerecord/test/models/category.rb activerecord/test/models/member.rb activerecord/test/models/reference.rb activerecord/test/models/tagging.rb
Diffstat (limited to 'activerecord/test/cases/column_definition_test.rb')
-rw-r--r--activerecord/test/cases/column_definition_test.rb206
1 files changed, 115 insertions, 91 deletions
diff --git a/activerecord/test/cases/column_definition_test.rb b/activerecord/test/cases/column_definition_test.rb
index cc6a6b44f2..d1dddd4c2c 100644
--- a/activerecord/test/cases/column_definition_test.rb
+++ b/activerecord/test/cases/column_definition_test.rb
@@ -1,121 +1,145 @@
require "cases/helper"
-class ColumnDefinitionTest < ActiveRecord::TestCase
- def setup
- @adapter = ActiveRecord::ConnectionAdapters::AbstractAdapter.new(nil)
- def @adapter.native_database_types
- {:string => "varchar"}
- end
- end
+module ActiveRecord
+ module ConnectionAdapters
+ class ColumnDefinitionTest < ActiveRecord::TestCase
+ def setup
+ @adapter = AbstractAdapter.new(nil)
+ def @adapter.native_database_types
+ {:string => "varchar"}
+ end
+ end
- # Avoid column definitions in create table statements like:
- # `title` varchar(255) DEFAULT NULL
- def test_should_not_include_default_clause_when_default_is_null
- column = ActiveRecord::ConnectionAdapters::Column.new("title", nil, "varchar(20)")
- column_def = ActiveRecord::ConnectionAdapters::ColumnDefinition.new(
- @adapter, column.name, "string",
- column.limit, column.precision, column.scale, column.default, column.null)
- assert_equal "title varchar(20)", column_def.to_sql
- end
+ def test_can_set_coder
+ column = Column.new("title", nil, "varchar(20)")
+ column.coder = YAML
+ assert_equal YAML, column.coder
+ end
- def test_should_include_default_clause_when_default_is_present
- column = ActiveRecord::ConnectionAdapters::Column.new("title", "Hello", "varchar(20)")
- column_def = ActiveRecord::ConnectionAdapters::ColumnDefinition.new(
- @adapter, column.name, "string",
- column.limit, column.precision, column.scale, column.default, column.null)
- assert_equal %Q{title varchar(20) DEFAULT 'Hello'}, column_def.to_sql
- end
+ def test_encoded?
+ column = Column.new("title", nil, "varchar(20)")
+ assert !column.encoded?
- def test_should_specify_not_null_if_null_option_is_false
- column = ActiveRecord::ConnectionAdapters::Column.new("title", "Hello", "varchar(20)", false)
- column_def = ActiveRecord::ConnectionAdapters::ColumnDefinition.new(
- @adapter, column.name, "string",
- column.limit, column.precision, column.scale, column.default, column.null)
- assert_equal %Q{title varchar(20) DEFAULT 'Hello' NOT NULL}, column_def.to_sql
- end
+ column.coder = YAML
+ assert column.encoded?
+ end
- if current_adapter?(:MysqlAdapter)
- def test_should_set_default_for_mysql_binary_data_types
- binary_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "a", "binary(1)")
- assert_equal "a", binary_column.default
+ def test_type_case_coded_column
+ column = Column.new("title", nil, "varchar(20)")
+ column.coder = YAML
+ assert_equal "hello", column.type_cast("--- hello")
+ end
- varbinary_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "a", "varbinary(1)")
- assert_equal "a", varbinary_column.default
- end
+ # Avoid column definitions in create table statements like:
+ # `title` varchar(255) DEFAULT NULL
+ def test_should_not_include_default_clause_when_default_is_null
+ column = Column.new("title", nil, "varchar(20)")
+ column_def = ColumnDefinition.new(
+ @adapter, column.name, "string",
+ column.limit, column.precision, column.scale, column.default, column.null)
+ assert_equal "title varchar(20)", column_def.to_sql
+ end
- def test_should_not_set_default_for_blob_and_text_data_types
- assert_raise ArgumentError do
- ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "a", "blob")
+ def test_should_include_default_clause_when_default_is_present
+ column = Column.new("title", "Hello", "varchar(20)")
+ column_def = ColumnDefinition.new(
+ @adapter, column.name, "string",
+ column.limit, column.precision, column.scale, column.default, column.null)
+ assert_equal %Q{title varchar(20) DEFAULT 'Hello'}, column_def.to_sql
end
- assert_raise ArgumentError do
- ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "Hello", "text")
+ def test_should_specify_not_null_if_null_option_is_false
+ column = Column.new("title", "Hello", "varchar(20)", false)
+ column_def = ColumnDefinition.new(
+ @adapter, column.name, "string",
+ column.limit, column.precision, column.scale, column.default, column.null)
+ assert_equal %Q{title varchar(20) DEFAULT 'Hello' NOT NULL}, column_def.to_sql
end
- text_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "text")
- assert_equal nil, text_column.default
+ if current_adapter?(:MysqlAdapter)
+ def test_should_set_default_for_mysql_binary_data_types
+ binary_column = MysqlColumn.new("title", "a", "binary(1)")
+ assert_equal "a", binary_column.default
- not_null_text_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "text", false)
- assert_equal "", not_null_text_column.default
- end
+ varbinary_column = MysqlColumn.new("title", "a", "varbinary(1)")
+ assert_equal "a", varbinary_column.default
+ end
- def test_has_default_should_return_false_for_blog_and_test_data_types
- blob_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "blob")
- assert !blob_column.has_default?
+ def test_should_not_set_default_for_blob_and_text_data_types
+ assert_raise ArgumentError do
+ MysqlColumn.new("title", "a", "blob")
+ end
- text_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "text")
- assert !text_column.has_default?
- end
- end
+ assert_raise ArgumentError do
+ MysqlColumn.new("title", "Hello", "text")
+ end
- if current_adapter?(:Mysql2Adapter)
- def test_should_set_default_for_mysql_binary_data_types
- binary_column = ActiveRecord::ConnectionAdapters::Mysql2Column.new("title", "a", "binary(1)")
- assert_equal "a", binary_column.default
+ text_column = MysqlColumn.new("title", nil, "text")
+ assert_equal nil, text_column.default
- varbinary_column = ActiveRecord::ConnectionAdapters::Mysql2Column.new("title", "a", "varbinary(1)")
- assert_equal "a", varbinary_column.default
- end
+ not_null_text_column = MysqlColumn.new("title", nil, "text", false)
+ assert_equal "", not_null_text_column.default
+ end
- def test_should_not_set_default_for_blob_and_text_data_types
- assert_raise ArgumentError do
- ActiveRecord::ConnectionAdapters::Mysql2Column.new("title", "a", "blob")
- end
+ def test_has_default_should_return_false_for_blog_and_test_data_types
+ blob_column = MysqlColumn.new("title", nil, "blob")
+ assert !blob_column.has_default?
- assert_raise ArgumentError do
- ActiveRecord::ConnectionAdapters::Mysql2Column.new("title", "Hello", "text")
+ text_column = MysqlColumn.new("title", nil, "text")
+ assert !text_column.has_default?
+ end
end
- text_column = ActiveRecord::ConnectionAdapters::Mysql2Column.new("title", nil, "text")
- assert_equal nil, text_column.default
+ if current_adapter?(:Mysql2Adapter)
+ def test_should_set_default_for_mysql_binary_data_types
+ binary_column = Mysql2Column.new("title", "a", "binary(1)")
+ assert_equal "a", binary_column.default
- not_null_text_column = ActiveRecord::ConnectionAdapters::Mysql2Column.new("title", nil, "text", false)
- assert_equal "", not_null_text_column.default
- end
+ varbinary_column = Mysql2Column.new("title", "a", "varbinary(1)")
+ assert_equal "a", varbinary_column.default
+ end
- def test_has_default_should_return_false_for_blog_and_test_data_types
- blob_column = ActiveRecord::ConnectionAdapters::Mysql2Column.new("title", nil, "blob")
- assert !blob_column.has_default?
+ def test_should_not_set_default_for_blob_and_text_data_types
+ assert_raise ArgumentError do
+ Mysql2Column.new("title", "a", "blob")
+ end
- text_column = ActiveRecord::ConnectionAdapters::Mysql2Column.new("title", nil, "text")
- assert !text_column.has_default?
- end
- end
+ assert_raise ArgumentError do
+ Mysql2Column.new("title", "Hello", "text")
+ end
- if current_adapter?(:PostgreSQLAdapter)
- def test_bigint_column_should_map_to_integer
- bigint_column = ActiveRecord::ConnectionAdapters::PostgreSQLColumn.new('number', nil, "bigint")
- assert_equal :integer, bigint_column.type
- end
+ text_column = Mysql2Column.new("title", nil, "text")
+ assert_equal nil, text_column.default
- def test_smallint_column_should_map_to_integer
- smallint_column = ActiveRecord::ConnectionAdapters::PostgreSQLColumn.new('number', nil, "smallint")
- assert_equal :integer, smallint_column.type
- end
+ not_null_text_column = Mysql2Column.new("title", nil, "text", false)
+ assert_equal "", not_null_text_column.default
+ end
+
+ def test_has_default_should_return_false_for_blog_and_test_data_types
+ blob_column = Mysql2Column.new("title", nil, "blob")
+ assert !blob_column.has_default?
- def test_uuid_column_should_map_to_string
- uuid_column = ActiveRecord::ConnectionAdapters::PostgreSQLColumn.new('unique_id', nil, "uuid")
- assert_equal :string, uuid_column.type
+ text_column = Mysql2Column.new("title", nil, "text")
+ assert !text_column.has_default?
+ end
+ end
+
+ if current_adapter?(:PostgreSQLAdapter)
+ def test_bigint_column_should_map_to_integer
+ bigint_column = PostgreSQLColumn.new('number', nil, "bigint")
+ assert_equal :integer, bigint_column.type
+ end
+
+ def test_smallint_column_should_map_to_integer
+ smallint_column = PostgreSQLColumn.new('number', nil, "smallint")
+ assert_equal :integer, smallint_column.type
+ end
+
+ def test_uuid_column_should_map_to_string
+ uuid_column = PostgreSQLColumn.new('unique_id', nil, "uuid")
+ assert_equal :string, uuid_column.type
+ end
+ end
end
end
end