| 1 |
require 'abstract_unit' |
|---|
| 2 |
require 'fixtures/default' |
|---|
| 3 |
require 'fixtures/entrant' |
|---|
| 4 |
|
|---|
| 5 |
class DefaultTest < Test::Unit::TestCase |
|---|
| 6 |
def test_nil_defaults_for_not_null_columns |
|---|
| 7 |
column_defaults = |
|---|
| 8 |
if current_adapter?(:MysqlAdapter) |
|---|
| 9 |
{ 'id' => nil, 'name' => '', 'course_id' => nil } |
|---|
| 10 |
else |
|---|
| 11 |
{ 'id' => nil, 'name' => nil, 'course_id' => nil } |
|---|
| 12 |
end |
|---|
| 13 |
|
|---|
| 14 |
column_defaults.each do |name, default| |
|---|
| 15 |
column = Entrant.columns_hash[name] |
|---|
| 16 |
assert !column.null, "#{name} column should be NOT NULL" |
|---|
| 17 |
assert_equal default, column.default, "#{name} column should be DEFAULT #{default.inspect}" |
|---|
| 18 |
end |
|---|
| 19 |
end |
|---|
| 20 |
|
|---|
| 21 |
if current_adapter?(:MysqlAdapter) |
|---|
| 22 |
|
|---|
| 23 |
|
|---|
| 24 |
def test_mysql_integer_not_null_defaults |
|---|
| 25 |
klass = Class.new(ActiveRecord::Base) |
|---|
| 26 |
klass.table_name = 'test_integer_not_null_default_zero' |
|---|
| 27 |
klass.connection.create_table klass.table_name do |t| |
|---|
| 28 |
t.column :zero, :integer, :null => false, :default => 0 |
|---|
| 29 |
t.column :omit, :integer, :null => false |
|---|
| 30 |
end |
|---|
| 31 |
|
|---|
| 32 |
assert_equal 0, klass.columns_hash['zero'].default |
|---|
| 33 |
assert !klass.columns_hash['zero'].null |
|---|
| 34 |
|
|---|
| 35 |
assert [0, nil].include?(klass.columns_hash['omit'].default) |
|---|
| 36 |
assert !klass.columns_hash['omit'].null |
|---|
| 37 |
|
|---|
| 38 |
assert_raise(ActiveRecord::StatementInvalid) { klass.create! } |
|---|
| 39 |
|
|---|
| 40 |
assert_nothing_raised do |
|---|
| 41 |
instance = klass.create!(:omit => 1) |
|---|
| 42 |
assert_equal 0, instance.zero |
|---|
| 43 |
assert_equal 1, instance.omit |
|---|
| 44 |
end |
|---|
| 45 |
ensure |
|---|
| 46 |
klass.connection.drop_table(klass.table_name) rescue nil |
|---|
| 47 |
end |
|---|
| 48 |
end |
|---|
| 49 |
|
|---|
| 50 |
if current_adapter?(:PostgreSQLAdapter, :SQLServerAdapter, :FirebirdAdapter, :OpenBaseAdapter, :OracleAdapter) |
|---|
| 51 |
def test_default_integers |
|---|
| 52 |
default = Default.new |
|---|
| 53 |
assert_instance_of Fixnum, default.positive_integer |
|---|
| 54 |
assert_equal 1, default.positive_integer |
|---|
| 55 |
assert_instance_of Fixnum, default.negative_integer |
|---|
| 56 |
assert_equal -1, default.negative_integer |
|---|
| 57 |
assert_instance_of BigDecimal, default.decimal_number |
|---|
| 58 |
assert_equal BigDecimal.new("2.78"), default.decimal_number |
|---|
| 59 |
end |
|---|
| 60 |
end |
|---|
| 61 |
|
|---|
| 62 |
if current_adapter?(:PostgreSQLAdapter) |
|---|
| 63 |
def test_multiline_default_text |
|---|
| 64 |
assert_equal "--- []\n\n", Default.columns_hash['multiline_default'].default |
|---|
| 65 |
end |
|---|
| 66 |
end |
|---|
| 67 |
end |
|---|