moving more renaming tests to the proper test case
This commit is contained in:
parent
cd930c8515
commit
e6f796031f
@ -36,6 +36,14 @@ def remove_column(*args)
|
||||
def rename_column(*args)
|
||||
connection.rename_column(*args)
|
||||
end
|
||||
|
||||
def add_index(*args)
|
||||
connection.add_index(*args)
|
||||
end
|
||||
|
||||
def change_column(*args)
|
||||
connection.change_column(*args)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -48,6 +48,69 @@ def test_rename_column
|
||||
assert TestModel.column_names.include?("nick_name")
|
||||
assert_equal ['foo'], TestModel.find(:all).map(&:nick_name)
|
||||
end
|
||||
|
||||
def test_rename_column_preserves_default_value_not_null
|
||||
add_column 'test_models', 'salary', :integer, :default => 70000
|
||||
|
||||
default_before = connection.columns("test_models").find { |c| c.name == "salary" }.default
|
||||
assert_equal 70000, default_before
|
||||
|
||||
rename_column "test_models", "salary", "anual_salary"
|
||||
|
||||
assert TestModel.column_names.include?("anual_salary")
|
||||
default_after = connection.columns("test_models").find { |c| c.name == "anual_salary" }.default
|
||||
assert_equal 70000, default_after
|
||||
end
|
||||
|
||||
def test_rename_nonexistent_column
|
||||
exception = if current_adapter?(:PostgreSQLAdapter, :OracleAdapter)
|
||||
ActiveRecord::StatementInvalid
|
||||
else
|
||||
ActiveRecord::ActiveRecordError
|
||||
end
|
||||
assert_raise(exception) do
|
||||
rename_column "test_models", "nonexistent", "should_fail"
|
||||
end
|
||||
end
|
||||
|
||||
def test_rename_column_with_sql_reserved_word
|
||||
add_column 'test_models', 'first_name', :string
|
||||
rename_column "test_models", "first_name", "group"
|
||||
|
||||
assert TestModel.column_names.include?("group")
|
||||
end
|
||||
|
||||
def test_rename_column_with_an_index
|
||||
add_column "test_models", :hat_name, :string
|
||||
add_index :test_models, :hat_name
|
||||
|
||||
# FIXME: we should test that the index goes away
|
||||
rename_column "test_models", "hat_name", "name"
|
||||
end
|
||||
|
||||
def test_remove_column_with_index
|
||||
add_column "test_models", :hat_name, :string
|
||||
add_index :test_models, :hat_name
|
||||
|
||||
# FIXME: we should test that the index goes away
|
||||
remove_column("test_models", "hat_size")
|
||||
end
|
||||
|
||||
def test_remove_column_with_multi_column_index
|
||||
add_column "test_models", :hat_size, :integer
|
||||
add_column "test_models", :hat_style, :string, :limit => 100
|
||||
add_index "test_models", ["hat_style", "hat_size"], :unique => true
|
||||
|
||||
# FIXME: we should test that the index goes away
|
||||
remove_column("test_models", "hat_size")
|
||||
end
|
||||
|
||||
# FIXME: we need to test that these calls do something
|
||||
def test_change_type_of_not_null_column
|
||||
change_column "test_models", "updated_at", :datetime, :null => false
|
||||
change_column "test_models", "updated_at", :datetime, :null => false
|
||||
change_column "test_models", "updated_at", :datetime, :null => true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -91,103 +91,10 @@ def drop_table; raise "no"; end
|
||||
Person.connection.drop_table :testings2 rescue nil
|
||||
end
|
||||
|
||||
def test_rename_column_preserves_default_value_not_null
|
||||
begin
|
||||
default_before = Developer.connection.columns("developers").find { |c| c.name == "salary" }.default
|
||||
assert_equal 70000, default_before
|
||||
Developer.connection.rename_column "developers", "salary", "anual_salary"
|
||||
Developer.reset_column_information
|
||||
assert Developer.column_names.include?("anual_salary")
|
||||
default_after = Developer.connection.columns("developers").find { |c| c.name == "anual_salary" }.default
|
||||
assert_equal 70000, default_after
|
||||
ensure
|
||||
Developer.connection.rename_column "developers", "anual_salary", "salary"
|
||||
Developer.reset_column_information
|
||||
end
|
||||
end
|
||||
|
||||
def test_rename_nonexistent_column
|
||||
ActiveRecord::Base.connection.create_table(:hats) do |table|
|
||||
table.column :hat_name, :string, :default => nil
|
||||
end
|
||||
exception = if current_adapter?(:PostgreSQLAdapter, :OracleAdapter)
|
||||
ActiveRecord::StatementInvalid
|
||||
else
|
||||
ActiveRecord::ActiveRecordError
|
||||
end
|
||||
assert_raise(exception) do
|
||||
Person.connection.rename_column "hats", "nonexistent", "should_fail"
|
||||
end
|
||||
ensure
|
||||
ActiveRecord::Base.connection.drop_table(:hats)
|
||||
end
|
||||
|
||||
def test_rename_column_with_sql_reserved_word
|
||||
begin
|
||||
assert_nothing_raised { Person.connection.rename_column "people", "first_name", "group" }
|
||||
Person.reset_column_information
|
||||
assert Person.column_names.include?("group")
|
||||
ensure
|
||||
Person.connection.remove_column("people", "group") rescue nil
|
||||
Person.connection.add_column("people", "first_name", :string) rescue nil
|
||||
end
|
||||
end
|
||||
|
||||
def test_rename_column_with_an_index
|
||||
ActiveRecord::Base.connection.create_table(:hats) do |table|
|
||||
table.column :hat_name, :string, :limit => 100
|
||||
table.column :hat_size, :integer
|
||||
end
|
||||
Person.connection.add_index :hats, :hat_name
|
||||
assert_nothing_raised do
|
||||
Person.connection.rename_column "hats", "hat_name", "name"
|
||||
end
|
||||
ensure
|
||||
ActiveRecord::Base.connection.drop_table(:hats)
|
||||
end
|
||||
|
||||
def test_remove_column_with_index
|
||||
ActiveRecord::Base.connection.create_table(:hats) do |table|
|
||||
table.column :hat_name, :string, :limit => 100
|
||||
table.column :hat_size, :integer
|
||||
end
|
||||
ActiveRecord::Base.connection.add_index "hats", "hat_size"
|
||||
|
||||
assert_nothing_raised { Person.connection.remove_column("hats", "hat_size") }
|
||||
ensure
|
||||
ActiveRecord::Base.connection.drop_table(:hats)
|
||||
end
|
||||
|
||||
def test_remove_column_with_multi_column_index
|
||||
ActiveRecord::Base.connection.create_table(:hats) do |table|
|
||||
table.column :hat_name, :string, :limit => 100
|
||||
table.column :hat_size, :integer
|
||||
table.column :hat_style, :string, :limit => 100
|
||||
end
|
||||
ActiveRecord::Base.connection.add_index "hats", ["hat_style", "hat_size"], :unique => true
|
||||
|
||||
assert_nothing_raised { Person.connection.remove_column("hats", "hat_size") }
|
||||
ensure
|
||||
ActiveRecord::Base.connection.drop_table(:hats)
|
||||
end
|
||||
|
||||
def test_remove_column_no_second_parameter_raises_exception
|
||||
assert_raise(ArgumentError) { Person.connection.remove_column("funny") }
|
||||
end
|
||||
|
||||
def test_change_type_of_not_null_column
|
||||
assert_nothing_raised do
|
||||
Topic.connection.change_column "topics", "written_on", :datetime, :null => false
|
||||
Topic.reset_column_information
|
||||
|
||||
Topic.connection.change_column "topics", "written_on", :datetime, :null => false
|
||||
Topic.reset_column_information
|
||||
|
||||
Topic.connection.change_column "topics", "written_on", :datetime, :null => true
|
||||
Topic.reset_column_information
|
||||
end
|
||||
end
|
||||
|
||||
def test_rename_table_for_sqlite_should_work_with_reserved_words
|
||||
skip "not supported" unless current_adapter?(:SQLite3Adapter)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user