Skip to content

Commit

Permalink
Test MySQL implicit NULL for integer columns. Closes #6156.
Browse files Browse the repository at this point in the history
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5901 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information
jeremy committed Jan 12, 2007
1 parent 6e1e088 commit dbd7b5e
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions activerecord/test/defaults_test.rb
Expand Up @@ -18,6 +18,32 @@ def test_nil_defaults_for_not_null_columns
end
end

if current_adapter?(:MysqlAdapter)
# MySQL uses an implicit default 0 rather than NULL unless in strict mode.
# We use an implicit NULL so schema.rb is compatible with other databases.
def test_mysql_integer_not_null_defaults
klass = Class.new(ActiveRecord::Base)
klass.table_name = 'test_integer_not_null_default_zero'
klass.connection.create_table klass.table_name do |t|
t.column :zero, :integer, :null => false, :default => 0
t.column :omit, :integer, :null => false
end

assert_equal 0, klass.columns_hash['zero'].default
assert !klass.columns_hash['zero'].null
assert_equal nil, klass.columns_hash['omit'].default
assert !klass.columns_hash['omit'].null

assert_nothing_raised do
instance = klass.create!
assert_equal 0, instance.zero
assert_nil instance.omit
end
ensure
klass.connection.drop_table(klass.table_name) rescue nil
end
end

if current_adapter?(:PostgreSQLAdapter, :SQLServerAdapter, :FirebirdAdapter, :OpenBaseAdapter)
def test_default_integers
default = Default.new
Expand Down

0 comments on commit dbd7b5e

Please sign in to comment.