public void TestSqlServerWithChangingDefault() { //arrange var migration = new DdlGeneratorFactory(SqlType.SqlServer).MigrationGenerator(); var table = MigrationCommon.CreateTestTable("Orders"); table.SchemaOwner = "dbo"; var column = table.FindColumn("NAME"); column.Length = 40; column.DefaultValue = "'?'"; //create an "original" version of the column (by cloning) var originalColumn = column.Clone(); originalColumn.DefaultValue = "'UNKNOWN'"; //add a default constraint var df = new DatabaseConstraint { ConstraintType = ConstraintType.Default, Name = "DF_Orders_Name" }; df.Columns.Add("NAME"); table.AddConstraint(df); //act var sql = migration.AlterColumn(table, column, originalColumn); //assert //ALTER TABLE [dbo].[Orders] DROP CONSTRAINT [DF_Orders_Name]; //-- Orders from [NAME] VARCHAR (40) NOT NULL to [NAME] VARCHAR (40) NOT NULL //ALTER TABLE [dbo].[Orders] ALTER COLUMN [NAME] VARCHAR (40) NOT NULL; //ALTER TABLE [dbo].[Orders] ADD CONSTRAINT [DF_Orders_Name] DEFAULT '?' FOR [NAME]; Assert.IsTrue(sql.Contains("DROP CONSTRAINT [DF_Orders_Name]"), "drop constraint"); Assert.IsTrue(sql.Contains("ADD CONSTRAINT [DF_Orders_Name] DEFAULT '?' FOR [NAME]"), "add default constraint"); }
public void TestMySqlWithSchema() { //arrange var migration = new DdlGeneratorFactory(SqlType.MySql).MigrationGenerator(); var table = MigrationCommon.CreateTestTable("Orders"); table.SchemaOwner = "dbo"; var column = table.FindColumn("NAME"); column.Length = 40; //act var sql = migration.AlterColumn(table, column, null); //assert Assert.IsTrue(sql.Contains("ALTER TABLE `dbo`.`Orders` MODIFY `NAME` VARCHAR (40)"), "names should be quoted correctly"); }
public void TestSqlServerWithNoDefault() { //arrange var migration = new DdlGeneratorFactory(SqlType.SqlServer).MigrationGenerator(); var table = MigrationCommon.CreateTestTable("Orders"); table.SchemaOwner = "dbo"; var column = table.FindColumn("NAME"); column.Length = 40; //act var sql = migration.AlterColumn(table, column, null); //assert Assert.IsFalse(sql.Contains("ADD CONSTRAINT [DF_Orders_NAME] DEFAULT"), "no add default constraint"); }
public void TestOracleNoSchema() { //arrange var migration = new DdlGeneratorFactory(SqlType.Oracle).MigrationGenerator(); var table = MigrationCommon.CreateTestTable("Orders"); table.SchemaOwner = "dbo"; var column = table.FindColumn("NAME"); column.Length = 40; //act migration.IncludeSchema = false; var sql = migration.AlterColumn(table, column, null); //assert Assert.IsTrue(sql.Contains("ALTER TABLE \"Orders\" MODIFY \"NAME\" NVARCHAR2 (40)"), "names should be quoted correctly"); }
public void TestSqlServerWithNewDefault() { //arrange var migration = new DdlGeneratorFactory(SqlType.SqlServer).MigrationGenerator(); var table = MigrationCommon.CreateTestTable("Orders"); table.SchemaOwner = "dbo"; var column = table.FindColumn("NAME"); column.Length = 40; column.DefaultValue = "'?'"; //act var sql = migration.AlterColumn(table, column, null); //assert //ALTER TABLE [dbo].[Orders] ALTER COLUMN [NAME] VARCHAR (40) NOT NULL; //ALTER TABLE [dbo].[Orders] ADD CONSTRAINT [DF_Orders_NAME] DEFAULT '?' FOR [NAME]; Assert.IsTrue(sql.Contains("ALTER COLUMN [NAME] VARCHAR (40) NOT NULL"), "alter column should not have DEFAULT"); Assert.IsTrue(sql.Contains("ADD CONSTRAINT [DF_Orders_NAME] DEFAULT '?' FOR [NAME]"), "add default constraint"); }
public void TestSqLite() { //arrange var migration = new DdlGeneratorFactory(SqlType.SQLite).MigrationGenerator(); var table = MigrationCommon.CreateTestTable("Orders"); table.SchemaOwner = "dbo"; var column = table.FindColumn("NAME"); column.Length = 40; //act var sql = migration.AlterColumn(table, column, null); //assert Assert.IsTrue(sql.StartsWith("--", StringComparison.OrdinalIgnoreCase), "Cannot be changed in SQLite"); }
public void TestPostgreSql() { //arrange var migration = new DdlGeneratorFactory(SqlType.PostgreSql).MigrationGenerator(); var table = MigrationCommon.CreateTestTable("Orders"); table.SchemaOwner = "dbo"; var column = table.FindColumn("NAME"); column.Length = 40; //act var sql = migration.AlterColumn(table, column, null); //assert Console.WriteLine(sql); Assert.IsTrue(sql.Contains("ALTER TABLE \"dbo\".\"Orders\" ALTER COLUMN \"NAME\" TYPE VARCHAR (40)"), "names should be quoted correctly"); Assert.IsTrue(sql.Contains("ALTER TABLE \"dbo\".\"Orders\" ALTER COLUMN \"NAME\" SET NOT NULL;"), "NULL should be handled correctly"); }