From 8cf395bcae0e12563414a9477c6274066c50b555 Mon Sep 17 00:00:00 2001 From: Shay Rojansky Date: Mon, 29 Jul 2019 14:49:56 +0200 Subject: [PATCH] Clean up migration test SQL assertions --- .../MigrationSqlGeneratorTestBase.cs | 3 + .../Migrations/MigrationSqlGeneratorTest.cs | 302 +++--- .../SqlServerMigrationSqlGeneratorTest.cs | 943 ++++++++---------- .../SqliteMigrationSqlGeneratorTest.cs | 106 +- 4 files changed, 624 insertions(+), 730 deletions(-) diff --git a/test/EFCore.Relational.Specification.Tests/MigrationSqlGeneratorTestBase.cs b/test/EFCore.Relational.Specification.Tests/MigrationSqlGeneratorTestBase.cs index 2dc8158bf13..e04fef53c42 100644 --- a/test/EFCore.Relational.Specification.Tests/MigrationSqlGeneratorTestBase.cs +++ b/test/EFCore.Relational.Specification.Tests/MigrationSqlGeneratorTestBase.cs @@ -753,5 +753,8 @@ protected virtual void Generate(Action buildAction, params Migrati "GO" + EOL + EOL, batch.Select(b => b.CommandText)); } + + protected void AssertSql(string expected) + => Assert.Equal(expected, Sql, ignoreLineEndingDifferences: true); } } diff --git a/test/EFCore.Relational.Tests/Migrations/MigrationSqlGeneratorTest.cs b/test/EFCore.Relational.Tests/Migrations/MigrationSqlGeneratorTest.cs index c962e01834e..26ae5a625f3 100644 --- a/test/EFCore.Relational.Tests/Migrations/MigrationSqlGeneratorTest.cs +++ b/test/EFCore.Relational.Tests/Migrations/MigrationSqlGeneratorTest.cs @@ -13,291 +13,257 @@ public override void AddColumnOperation_with_defaultValue() { base.AddColumnOperation_with_defaultValue(); - Assert.Equal( - "ALTER TABLE \"dbo\".\"People\" ADD \"Name\" varchar(30) NOT NULL DEFAULT 'John Doe';" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""dbo"".""People"" ADD ""Name"" varchar(30) NOT NULL DEFAULT 'John Doe'; +"); } public override void AddColumnOperation_with_defaultValueSql() { base.AddColumnOperation_with_defaultValueSql(); - Assert.Equal( - "ALTER TABLE \"People\" ADD \"Birthday\" date NULL DEFAULT (CURRENT_TIMESTAMP);" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""People"" ADD ""Birthday"" date NULL DEFAULT (CURRENT_TIMESTAMP); +"); } public override void AddColumnOperation_without_column_type() { base.AddColumnOperation_without_column_type(); - Assert.Equal( - "ALTER TABLE \"People\" ADD \"Alias\" just_string(max) NOT NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""People"" ADD ""Alias"" just_string(max) NOT NULL; +"); } public override void AddColumnOperation_with_maxLength() { base.AddColumnOperation_with_maxLength(); - Assert.Equal( - "ALTER TABLE \"Person\" ADD \"Name\" just_string(30) NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""Person"" ADD ""Name"" just_string(30) NULL; +"); } public override void AddColumnOperation_with_maxLength_on_derived() { base.AddColumnOperation_with_maxLength_on_derived(); - Assert.Equal( - "ALTER TABLE \"Person\" ADD \"Name\" just_string(30) NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""Person"" ADD ""Name"" just_string(30) NULL; +"); } public override void AddColumnOperation_with_shared_column() { base.AddColumnOperation_with_shared_column(); - Assert.Equal( - "ALTER TABLE \"Base\" ADD \"Foo\" just_string(max) NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""Base"" ADD ""Foo"" just_string(max) NULL; +"); } public override void AddForeignKeyOperation_with_name() { base.AddForeignKeyOperation_with_name(); - Assert.Equal( - "ALTER TABLE \"dbo\".\"People\" ADD CONSTRAINT \"FK_People_Companies\" FOREIGN KEY (\"EmployerId1\", \"EmployerId2\") REFERENCES \"hr\".\"Companies\" (\"Id1\", \"Id2\") ON DELETE CASCADE;" - + EOL, - Sql); + AssertSql(@"ALTER TABLE ""dbo"".""People"" ADD CONSTRAINT ""FK_People_Companies"" FOREIGN KEY (""EmployerId1"", ""EmployerId2"") REFERENCES ""hr"".""Companies"" (""Id1"", ""Id2"") ON DELETE CASCADE; +"); } public override void AddForeignKeyOperation_without_name() { base.AddForeignKeyOperation_without_name(); - Assert.Equal( - "ALTER TABLE \"People\" ADD FOREIGN KEY (\"SpouseId\") REFERENCES \"People\" (\"Id\");" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""People"" ADD FOREIGN KEY (""SpouseId"") REFERENCES ""People"" (""Id""); +"); } public override void AddForeignKeyOperation_without_principal_columns() { base.AddForeignKeyOperation_without_principal_columns(); - Assert.Equal( - "ALTER TABLE \"People\" ADD FOREIGN KEY (\"SpouseId\") REFERENCES \"People\";" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""People"" ADD FOREIGN KEY (""SpouseId"") REFERENCES ""People""; +"); } public override void AddPrimaryKeyOperation_with_name() { base.AddPrimaryKeyOperation_with_name(); - Assert.Equal( - "ALTER TABLE \"dbo\".\"People\" ADD CONSTRAINT \"PK_People\" PRIMARY KEY (\"Id1\", \"Id2\");" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""dbo"".""People"" ADD CONSTRAINT ""PK_People"" PRIMARY KEY (""Id1"", ""Id2""); +"); } public override void AddPrimaryKeyOperation_without_name() { base.AddPrimaryKeyOperation_without_name(); - Assert.Equal( - "ALTER TABLE \"People\" ADD PRIMARY KEY (\"Id\");" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""People"" ADD PRIMARY KEY (""Id""); +"); } public override void AddUniqueConstraintOperation_with_name() { base.AddUniqueConstraintOperation_with_name(); - Assert.Equal( - "ALTER TABLE \"dbo\".\"People\" ADD CONSTRAINT \"AK_People_DriverLicense\" UNIQUE (\"DriverLicense_State\", \"DriverLicense_Number\");" - + EOL, - Sql); + AssertSql(@"ALTER TABLE ""dbo"".""People"" ADD CONSTRAINT ""AK_People_DriverLicense"" UNIQUE (""DriverLicense_State"", ""DriverLicense_Number""); +"); } public override void AddUniqueConstraintOperation_without_name() { base.AddUniqueConstraintOperation_without_name(); - Assert.Equal( - "ALTER TABLE \"People\" ADD UNIQUE (\"SSN\");" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""People"" ADD UNIQUE (""SSN""); +"); } public override void CreateCheckConstraintOperation_with_name() { base.CreateCheckConstraintOperation_with_name(); - Assert.Equal( - "ALTER TABLE \"dbo\".\"People\" ADD CONSTRAINT \"CK_People_DriverLicense\" CHECK (DriverLicense_Number > 0);" - + EOL, - Sql); + AssertSql(@"ALTER TABLE ""dbo"".""People"" ADD CONSTRAINT ""CK_People_DriverLicense"" CHECK (DriverLicense_Number > 0); +"); } public override void AlterSequenceOperation_with_minValue_and_maxValue() { base.AlterSequenceOperation_with_minValue_and_maxValue(); - Assert.Equal( - "ALTER SEQUENCE \"dbo\".\"EntityFrameworkHiLoSequence\" INCREMENT BY 1 MINVALUE 2 MAXVALUE 816 CYCLE;" + EOL, - Sql); + AssertSql(@"ALTER SEQUENCE ""dbo"".""EntityFrameworkHiLoSequence"" INCREMENT BY 1 MINVALUE 2 MAXVALUE 816 CYCLE; +"); } public override void AlterSequenceOperation_without_minValue_and_maxValue() { base.AlterSequenceOperation_without_minValue_and_maxValue(); - Assert.Equal( - "ALTER SEQUENCE \"EntityFrameworkHiLoSequence\" INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE;" + EOL, - Sql); + AssertSql(@"ALTER SEQUENCE ""EntityFrameworkHiLoSequence"" INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE; +"); } public override void CreateIndexOperation_unique() { base.CreateIndexOperation_unique(); - Assert.Equal( - "CREATE UNIQUE INDEX \"IX_People_Name\" ON \"dbo\".\"People\" (\"FirstName\", \"LastName\");" + EOL, - Sql); + AssertSql(@"CREATE UNIQUE INDEX ""IX_People_Name"" ON ""dbo"".""People"" (""FirstName"", ""LastName""); +"); } public override void CreateIndexOperation_nonunique() { base.CreateIndexOperation_nonunique(); - Assert.Equal( - "CREATE INDEX \"IX_People_Name\" ON \"People\" (\"Name\");" + EOL, - Sql); + AssertSql(@"CREATE INDEX ""IX_People_Name"" ON ""People"" (""Name""); +"); } public override void CreateIndexOperation_with_where_clauses() { base.CreateIndexOperation_with_where_clauses(); - Assert.Equal( - "CREATE INDEX \"IX_People_Name\" ON \"People\" (\"Name\") WHERE [Id] > 2;" + EOL, - Sql); + AssertSql(@"CREATE INDEX ""IX_People_Name"" ON ""People"" (""Name"") WHERE [Id] > 2; +"); } public override void CreateSequenceOperation_with_minValue_and_maxValue() { base.CreateSequenceOperation_with_minValue_and_maxValue(); - Assert.Equal( - "CREATE SEQUENCE \"dbo\".\"EntityFrameworkHiLoSequence\" START WITH 3 INCREMENT BY 1 MINVALUE 2 MAXVALUE 816 CYCLE;" + EOL, - Sql); + AssertSql(@"CREATE SEQUENCE ""dbo"".""EntityFrameworkHiLoSequence"" START WITH 3 INCREMENT BY 1 MINVALUE 2 MAXVALUE 816 CYCLE; +"); } public override void CreateSequenceOperation_with_minValue_and_maxValue_not_long() { base.CreateSequenceOperation_with_minValue_and_maxValue_not_long(); - Assert.Equal( - "CREATE SEQUENCE \"dbo\".\"EntityFrameworkHiLoSequence\" AS default_int_mapping START WITH 3 INCREMENT BY 1 MINVALUE 2 MAXVALUE 816 CYCLE;" - + EOL, - Sql); + AssertSql(@"CREATE SEQUENCE ""dbo"".""EntityFrameworkHiLoSequence"" AS default_int_mapping START WITH 3 INCREMENT BY 1 MINVALUE 2 MAXVALUE 816 CYCLE; +"); } public override void CreateSequenceOperation_without_minValue_and_maxValue() { base.CreateSequenceOperation_without_minValue_and_maxValue(); - Assert.Equal( - "CREATE SEQUENCE \"EntityFrameworkHiLoSequence\" START WITH 3 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE;" + EOL, - Sql); + AssertSql(@"CREATE SEQUENCE ""EntityFrameworkHiLoSequence"" START WITH 3 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE; +"); } public override void CreateTableOperation() { base.CreateTableOperation(); - Assert.Equal( - "CREATE TABLE \"dbo\".\"People\" (" + EOL + - " \"Id\" default_int_mapping NOT NULL," + EOL + - " \"EmployerId\" default_int_mapping NULL," + EOL + - " \"SSN\" char(11) NULL," + EOL + - " PRIMARY KEY (\"Id\")," + EOL + - " UNIQUE (\"SSN\")," + EOL + - " CHECK (SSN > 0)," + EOL + - " FOREIGN KEY (\"EmployerId\") REFERENCES \"Companies\" (\"Id\")" + EOL + - ");" + EOL, - Sql); + AssertSql( + @"CREATE TABLE ""dbo"".""People"" ( + ""Id"" default_int_mapping NOT NULL, + ""EmployerId"" default_int_mapping NULL, + ""SSN"" char(11) NULL, + PRIMARY KEY (""Id""), + UNIQUE (""SSN""), + CHECK (SSN > 0), + FOREIGN KEY (""EmployerId"") REFERENCES ""Companies"" (""Id"") +); +"); } public override void DropColumnOperation() { base.DropColumnOperation(); - Assert.Equal( - "ALTER TABLE \"dbo\".\"People\" DROP COLUMN \"LuckyNumber\";" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""dbo"".""People"" DROP COLUMN ""LuckyNumber""; +"); } public override void DropForeignKeyOperation() { base.DropForeignKeyOperation(); - Assert.Equal( - "ALTER TABLE \"dbo\".\"People\" DROP CONSTRAINT \"FK_People_Companies\";" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""dbo"".""People"" DROP CONSTRAINT ""FK_People_Companies""; +"); } public override void DropPrimaryKeyOperation() { base.DropPrimaryKeyOperation(); - Assert.Equal( - "ALTER TABLE \"dbo\".\"People\" DROP CONSTRAINT \"PK_People\";" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""dbo"".""People"" DROP CONSTRAINT ""PK_People""; +"); } public override void DropSequenceOperation() { base.DropSequenceOperation(); - Assert.Equal( - "DROP SEQUENCE \"dbo\".\"EntityFrameworkHiLoSequence\";" + EOL, - Sql); + AssertSql(@"DROP SEQUENCE ""dbo"".""EntityFrameworkHiLoSequence""; +"); } public override void DropTableOperation() { base.DropTableOperation(); - Assert.Equal( - "DROP TABLE \"dbo\".\"People\";" + EOL, - Sql); + AssertSql(@"DROP TABLE ""dbo"".""People""; +"); } public override void DropUniqueConstraintOperation() { base.DropUniqueConstraintOperation(); - Assert.Equal( - "ALTER TABLE \"dbo\".\"People\" DROP CONSTRAINT \"AK_People_SSN\";" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""dbo"".""People"" DROP CONSTRAINT ""AK_People_SSN""; +"); } public override void DropCheckConstraintOperation() { base.DropCheckConstraintOperation(); - Assert.Equal( - "ALTER TABLE \"dbo\".\"People\" DROP CONSTRAINT \"CK_People_SSN\";" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""dbo"".""People"" DROP CONSTRAINT ""CK_People_SSN""; +"); } public override void SqlOperation() { base.SqlOperation(); - Assert.Equal( - "-- I <3 DDL" + EOL, - Sql); + AssertSql(@"-- I <3 DDL +"); } [ConditionalFact] @@ -313,30 +279,30 @@ public void Generate_doesnt_batch_by_default() Sql = "SELECT 2;" }); - Assert.Equal( - "SELECT 1;" + EOL + - "GO" + EOL + - EOL + - "SELECT 2;" + EOL, - Sql); + AssertSql( + @"SELECT 1; +GO + +SELECT 2; +"); } public override void InsertDataOperation() { base.InsertDataOperation(); - Assert.Equal( - "INSERT INTO \"People\" (\"Id\", \"Full Name\")" + EOL + - "VALUES (0, NULL);" + EOL + - "INSERT INTO \"People\" (\"Id\", \"Full Name\")" + EOL + - "VALUES (1, 'Daenerys Targaryen');" + EOL + - "INSERT INTO \"People\" (\"Id\", \"Full Name\")" + EOL + - "VALUES (2, 'John Snow');" + EOL + - "INSERT INTO \"People\" (\"Id\", \"Full Name\")" + EOL + - "VALUES (3, 'Arya Stark');" + EOL + - "INSERT INTO \"People\" (\"Id\", \"Full Name\")" + EOL + - "VALUES (4, 'Harry Strickland');" + EOL, - Sql); + AssertSql( + @"INSERT INTO ""People"" (""Id"", ""Full Name"") +VALUES (0, NULL); +INSERT INTO ""People"" (""Id"", ""Full Name"") +VALUES (1, 'Daenerys Targaryen'); +INSERT INTO ""People"" (""Id"", ""Full Name"") +VALUES (2, 'John Snow'); +INSERT INTO ""People"" (""Id"", ""Full Name"") +VALUES (3, 'Arya Stark'); +INSERT INTO ""People"" (""Id"", ""Full Name"") +VALUES (4, 'Harry Strickland'); +"); } public override void DeleteDataOperation_simple_key() @@ -344,14 +310,16 @@ public override void DeleteDataOperation_simple_key() base.DeleteDataOperation_simple_key(); // TODO remove rowcount - Assert.Equal( - "DELETE FROM \"People\"" + EOL + - "WHERE \"Id\" = 2;" + EOL + - "SELECT provider_specific_rowcount();" + EOL + EOL + - "DELETE FROM \"People\"" + EOL + - "WHERE \"Id\" = 4;" + EOL + - "SELECT provider_specific_rowcount();" + EOL + EOL, - Sql); + AssertSql( + @"DELETE FROM ""People"" +WHERE ""Id"" = 2; +SELECT provider_specific_rowcount(); + +DELETE FROM ""People"" +WHERE ""Id"" = 4; +SELECT provider_specific_rowcount(); + +"); } public override void DeleteDataOperation_composite_key() @@ -359,14 +327,16 @@ public override void DeleteDataOperation_composite_key() base.DeleteDataOperation_composite_key(); // TODO remove rowcount - Assert.Equal( - "DELETE FROM \"People\"" + EOL + - "WHERE \"First Name\" = 'Hodor' AND \"Last Name\" IS NULL;" + EOL + - "SELECT provider_specific_rowcount();" + EOL + EOL + - "DELETE FROM \"People\"" + EOL + - "WHERE \"First Name\" = 'Daenerys' AND \"Last Name\" = 'Targaryen';" + EOL + - "SELECT provider_specific_rowcount();" + EOL + EOL, - Sql); + AssertSql( + @"DELETE FROM ""People"" +WHERE ""First Name"" = 'Hodor' AND ""Last Name"" IS NULL; +SELECT provider_specific_rowcount(); + +DELETE FROM ""People"" +WHERE ""First Name"" = 'Daenerys' AND ""Last Name"" = 'Targaryen'; +SELECT provider_specific_rowcount(); + +"); } public override void UpdateDataOperation_simple_key() @@ -374,14 +344,16 @@ public override void UpdateDataOperation_simple_key() base.UpdateDataOperation_simple_key(); // TODO remove rowcount - Assert.Equal( - "UPDATE \"People\" SET \"Full Name\" = 'Daenerys Stormborn'" + EOL + - "WHERE \"Id\" = 1;" + EOL + - "SELECT provider_specific_rowcount();" + EOL + EOL + - "UPDATE \"People\" SET \"Full Name\" = 'Homeless Harry Strickland'" + EOL + - "WHERE \"Id\" = 4;" + EOL + - "SELECT provider_specific_rowcount();" + EOL + EOL, - Sql); + AssertSql( + @"UPDATE ""People"" SET ""Full Name"" = 'Daenerys Stormborn' +WHERE ""Id"" = 1; +SELECT provider_specific_rowcount(); + +UPDATE ""People"" SET ""Full Name"" = 'Homeless Harry Strickland' +WHERE ""Id"" = 4; +SELECT provider_specific_rowcount(); + +"); } public override void UpdateDataOperation_composite_key() @@ -389,14 +361,16 @@ public override void UpdateDataOperation_composite_key() base.UpdateDataOperation_composite_key(); // TODO remove rowcount - Assert.Equal( - "UPDATE \"People\" SET \"First Name\" = 'Hodor'" + EOL + - "WHERE \"Id\" = 0 AND \"Last Name\" IS NULL;" + EOL + - "SELECT provider_specific_rowcount();" + EOL + EOL + - "UPDATE \"People\" SET \"First Name\" = 'Harry'" + EOL + - "WHERE \"Id\" = 4 AND \"Last Name\" = 'Strickland';" + EOL + - "SELECT provider_specific_rowcount();" + EOL + EOL, - Sql); + AssertSql( + @"UPDATE ""People"" SET ""First Name"" = 'Hodor' +WHERE ""Id"" = 0 AND ""Last Name"" IS NULL; +SELECT provider_specific_rowcount(); + +UPDATE ""People"" SET ""First Name"" = 'Harry' +WHERE ""Id"" = 4 AND ""Last Name"" = 'Strickland'; +SELECT provider_specific_rowcount(); + +"); } public override void UpdateDataOperation_multiple_columns() @@ -404,14 +378,16 @@ public override void UpdateDataOperation_multiple_columns() base.UpdateDataOperation_multiple_columns(); // TODO remove rowcount - Assert.Equal( - "UPDATE \"People\" SET \"First Name\" = 'Daenerys', \"Nickname\" = 'Dany'" + EOL + - "WHERE \"Id\" = 1;" + EOL + - "SELECT provider_specific_rowcount();" + EOL + EOL + - "UPDATE \"People\" SET \"First Name\" = 'Harry', \"Nickname\" = 'Homeless'" + EOL + - "WHERE \"Id\" = 4;" + EOL + - "SELECT provider_specific_rowcount();" + EOL + EOL, - Sql); + AssertSql( + @"UPDATE ""People"" SET ""First Name"" = 'Daenerys', ""Nickname"" = 'Dany' +WHERE ""Id"" = 1; +SELECT provider_specific_rowcount(); + +UPDATE ""People"" SET ""First Name"" = 'Harry', ""Nickname"" = 'Homeless' +WHERE ""Id"" = 4; +SELECT provider_specific_rowcount(); + +"); } public MigrationSqlGeneratorTest() diff --git a/test/EFCore.SqlServer.FunctionalTests/SqlServerMigrationSqlGeneratorTest.cs b/test/EFCore.SqlServer.FunctionalTests/SqlServerMigrationSqlGeneratorTest.cs index 892c10f549f..3ba05e82705 100644 --- a/test/EFCore.SqlServer.FunctionalTests/SqlServerMigrationSqlGeneratorTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/SqlServerMigrationSqlGeneratorTest.cs @@ -21,7 +21,7 @@ public override void CreateTableOperation() { base.CreateTableOperation(); - Assert.Equal( + AssertSql( @"CREATE TABLE [dbo].[People] ( [Id] int NOT NULL, [EmployerId] int NULL, @@ -35,26 +35,23 @@ FOREIGN KEY ([EmployerId]) REFERENCES [Companies] ([Id]) EXEC sp_addextendedproperty @name = N'Comment', @value = N'Table comment', @level0type = N'Schema', @level0name = N'dbo', @level1type = N'Table', @level1name = N'People'GO EXEC sp_addextendedproperty @name = N'Comment', @value = N'Employer ID comment', @level0type = N'Schema', @level0name = N'dbo', @level1type = N'Table', @level1name = N'People', @level2type = N'Column', @level2name = N'EmployerId'; -", - Sql, ignoreLineEndingDifferences: true); +"); } public override void CreateIndexOperation_with_filter_where_clause() { base.CreateIndexOperation_with_filter_where_clause(); - Assert.Equal( - "CREATE INDEX [IX_People_Name] ON [People] ([Name]) WHERE [Name] IS NOT NULL;" + EOL, - Sql); + AssertSql(@"CREATE INDEX [IX_People_Name] ON [People] ([Name]) WHERE [Name] IS NOT NULL; +"); } public override void CreateIndexOperation_with_filter_where_clause_and_is_unique() { base.CreateIndexOperation_with_filter_where_clause_and_is_unique(); - Assert.Equal( - "CREATE UNIQUE INDEX [IX_People_Name] ON [People] ([Name]) WHERE [Name] IS NOT NULL AND <> '';" + EOL, - Sql); + AssertSql(@"CREATE UNIQUE INDEX [IX_People_Name] ON [People] ([Name]) WHERE [Name] IS NOT NULL AND <> ''; +"); } [ConditionalFact] @@ -69,9 +66,8 @@ public virtual void AddColumnOperation_with_computedSql() ComputedColumnSql = "FirstName + ' ' + LastName" }); - Assert.Equal( - "ALTER TABLE [People] ADD [FullName] AS FirstName + ' ' + LastName;" + EOL, - Sql); + AssertSql(@"ALTER TABLE [People] ADD [FullName] AS FirstName + ' ' + LastName; +"); } [ConditionalFact] @@ -88,9 +84,8 @@ public void AddColumnOperation_with_computed_column_SQL() ComputedColumnSql = "CURRENT_TIMESTAMP" }); - Assert.Equal( - "ALTER TABLE [People] ADD [Birthday] AS CURRENT_TIMESTAMP;" + EOL, - Sql); + AssertSql(@"ALTER TABLE [People] ADD [Birthday] AS CURRENT_TIMESTAMP; +"); } [ConditionalFact] @@ -109,9 +104,8 @@ public virtual void AddColumnOperation_identity() SqlServerValueGenerationStrategy.IdentityColumn }); - Assert.Equal( - "ALTER TABLE [People] ADD [Id] int NOT NULL IDENTITY;" + EOL, - Sql); + AssertSql(@"ALTER TABLE [People] ADD [Id] int NOT NULL IDENTITY; +"); } [ConditionalFact] public virtual void AddColumnOperation_identity_seed_increment() @@ -131,81 +125,72 @@ public virtual void AddColumnOperation_identity_seed_increment() [SqlServerAnnotationNames.IdentityIncrement] = 5 }); - Assert.Equal( - "ALTER TABLE [People] ADD [Id] int NOT NULL IDENTITY(100,5);" + EOL, - Sql); + AssertSql(@"ALTER TABLE [People] ADD [Id] int NOT NULL IDENTITY(100,5); +"); } public override void AddColumnOperation_without_column_type() { base.AddColumnOperation_without_column_type(); - Assert.Equal( - "ALTER TABLE [People] ADD [Alias] nvarchar(max) NOT NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE [People] ADD [Alias] nvarchar(max) NOT NULL; +"); } public override void AddColumnOperation_with_unicode_no_model() { base.AddColumnOperation_with_unicode_no_model(); - Assert.Equal( - "ALTER TABLE [Person] ADD [Name] varchar(max) NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE [Person] ADD [Name] varchar(max) NULL; +"); } public override void AddColumnOperation_with_maxLength() { base.AddColumnOperation_with_maxLength(); - Assert.Equal( - "ALTER TABLE [Person] ADD [Name] nvarchar(30) NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE [Person] ADD [Name] nvarchar(30) NULL; +"); } public override void AddColumnOperation_with_maxLength_overridden() { base.AddColumnOperation_with_maxLength_overridden(); - Assert.Equal( - "ALTER TABLE [Person] ADD [Name] nvarchar(32) NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE [Person] ADD [Name] nvarchar(32) NULL; +"); } public override void AddColumnOperation_with_maxLength_on_derived() { base.AddColumnOperation_with_maxLength_on_derived(); - Assert.Equal( - "ALTER TABLE [Person] ADD [Name] nvarchar(30) NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE [Person] ADD [Name] nvarchar(30) NULL; +"); } public override void AddColumnOperation_with_ansi() { base.AddColumnOperation_with_ansi(); - Assert.Equal( - "ALTER TABLE [Person] ADD [Name] varchar(max) NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE [Person] ADD [Name] varchar(max) NULL; +"); } public override void AddColumnOperation_with_unicode_overridden() { base.AddColumnOperation_with_unicode_overridden(); - Assert.Equal( - "ALTER TABLE [Person] ADD [Name] nvarchar(max) NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE [Person] ADD [Name] nvarchar(max) NULL; +"); } public override void AddColumnOperation_with_shared_column() { base.AddColumnOperation_with_shared_column(); - Assert.Equal( - "ALTER TABLE [Base] ADD [Foo] nvarchar(max) NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE [Base] ADD [Foo] nvarchar(max) NULL; +"); } [ConditionalFact] @@ -222,9 +207,8 @@ public virtual void AddColumnOperation_with_rowversion_overridden() IsNullable = true }); - Assert.Equal( - "ALTER TABLE [Person] ADD [RowVersion] rowversion NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE [Person] ADD [RowVersion] rowversion NULL; +"); } [ConditionalFact] @@ -240,9 +224,8 @@ public virtual void AddColumnOperation_with_rowversion_no_model() IsNullable = true }); - Assert.Equal( - "ALTER TABLE [Person] ADD [RowVersion] rowversion NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE [Person] ADD [RowVersion] rowversion NULL; +"); } [ConditionalFact] @@ -257,11 +240,12 @@ public virtual void AddColumnOperation_with_comment() Comment = "My comment" }); - Assert.Equal( - "ALTER TABLE [People] ADD [FullName] nvarchar(max) NOT NULL;" + EOL + - "GO" + EOL + EOL + - "EXEC sp_addextendedproperty @name = N'Comment', @value = N'My comment', @level0type = N'Schema', @level0name = NULL, @level1type = N'Table', @level1name = N'People', @level2type = N'Column', @level2name = N'FullName';" + EOL, - Sql); + AssertSql( + @"ALTER TABLE [People] ADD [FullName] nvarchar(max) NOT NULL; +GO + +EXEC sp_addextendedproperty @name = N'Comment', @value = N'My comment', @level0type = N'Schema', @level0name = NULL, @level1type = N'Table', @level1name = N'People', @level2type = N'Column', @level2name = N'FullName'; +"); } [ConditionalFact] @@ -275,42 +259,39 @@ public virtual void AddPrimaryKeyOperation_nonclustered() [SqlServerAnnotationNames.Clustered] = false }); - Assert.Equal( - "ALTER TABLE [People] ADD PRIMARY KEY NONCLUSTERED ([Id]);" + EOL, - Sql); + AssertSql(@"ALTER TABLE [People] ADD PRIMARY KEY NONCLUSTERED ([Id]); +"); } public override void AlterColumnOperation() { base.AlterColumnOperation(); - Assert.Equal( - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[dbo].[People]') AND [c].[name] = N'LuckyNumber');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [dbo].[People] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [dbo].[People] ALTER COLUMN [LuckyNumber] int NOT NULL;" + EOL + - "ALTER TABLE [dbo].[People] ADD DEFAULT 7 FOR [LuckyNumber];" + EOL, - Sql); + AssertSql( + @"DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[dbo].[People]') AND [c].[name] = N'LuckyNumber'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [dbo].[People] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [dbo].[People] ALTER COLUMN [LuckyNumber] int NOT NULL; +ALTER TABLE [dbo].[People] ADD DEFAULT 7 FOR [LuckyNumber]; +"); } public override void AlterColumnOperation_without_column_type() { base.AlterColumnOperation_without_column_type(); - Assert.Equal( - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[People]') AND [c].[name] = N'LuckyNumber');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [People] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [People] ALTER COLUMN [LuckyNumber] int NOT NULL;" + EOL, - Sql); + AssertSql( + @"DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[People]') AND [c].[name] = N'LuckyNumber'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [People] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [People] ALTER COLUMN [LuckyNumber] int NOT NULL; +"); } [ConditionalFact] @@ -326,16 +307,15 @@ public virtual void AlterColumnOperation_with_identity() SqlServerValueGenerationStrategy.IdentityColumn }); - Assert.Equal( - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[People]') AND [c].[name] = N'Id');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [People] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [People] ALTER COLUMN [Id] int NOT NULL;" + EOL, - Sql); + AssertSql( + @"DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[People]') AND [c].[name] = N'Id'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [People] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [People] ALTER COLUMN [Id] int NOT NULL; +"); } [ConditionalFact] @@ -350,17 +330,16 @@ public void AlterColumnOperation_computed() ComputedColumnSql = "[FirstName] + ' ' + [LastName]" }); - Assert.Equal( - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[People]') AND [c].[name] = N'FullName');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [People] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [People] DROP COLUMN [FullName];" + EOL + - "ALTER TABLE [People] ADD [FullName] AS [FirstName] + ' ' + [LastName];" + EOL, - Sql); + AssertSql( + @"DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[People]') AND [c].[name] = N'FullName'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [People] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [People] DROP COLUMN [FullName]; +ALTER TABLE [People] ADD [FullName] AS [FirstName] + ' ' + [LastName]; +"); } [ConditionalFact] @@ -389,19 +368,18 @@ public virtual void AlterColumnOperation_computed_with_index() } }); - Assert.Equal( - "DROP INDEX [IX_Person_FullName] ON [Person];" + EOL + - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'FullName');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [Person] DROP COLUMN [FullName];" + EOL + - "ALTER TABLE [Person] ADD [FullName] AS [FirstName] + ' ' + [LastName];" + EOL + - "CREATE INDEX [IX_Person_FullName] ON [Person] ([FullName]);" + EOL, - Sql); + AssertSql( + @"DROP INDEX [IX_Person_FullName] ON [Person]; +DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'FullName'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [Person] DROP COLUMN [FullName]; +ALTER TABLE [Person] ADD [FullName] AS [FirstName] + ' ' + [LastName]; +CREATE INDEX [IX_Person_FullName] ON [Person] ([FullName]); +"); } [ConditionalTheory] @@ -441,18 +419,17 @@ public virtual void AlterColumnOperation_memoryOptimized_with_index(bool obsolet } }); - Assert.Equal( - "ALTER TABLE [Person] DROP INDEX [IX_Person_Name];" + EOL + - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(30) NOT NULL;" + EOL + - "ALTER TABLE [Person] ADD INDEX [IX_Person_Name] NONCLUSTERED ([Name]);" + EOL, - Sql); + AssertSql( + @"ALTER TABLE [Person] DROP INDEX [IX_Person_Name]; +DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(30) NOT NULL; +ALTER TABLE [Person] ADD INDEX [IX_Person_Name] NONCLUSTERED ([Name]); +"); } [ConditionalFact] @@ -481,16 +458,15 @@ public virtual void AlterColumnOperation_with_index_no_narrowing() } }); - Assert.Equal( - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(450) NULL;" + EOL, - Sql); + AssertSql( + @"DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(450) NULL; +"); } [ConditionalFact] @@ -520,18 +496,17 @@ public virtual void AlterColumnOperation_with_index() } }); - Assert.Equal( - "DROP INDEX [IX_Person_Name] ON [Person];" + EOL + - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(30) NULL;" + EOL + - "CREATE INDEX [IX_Person_Name] ON [Person] ([Name]);" + EOL, - Sql); + AssertSql( + @"DROP INDEX [IX_Person_Name] ON [Person]; +DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(30) NULL; +CREATE INDEX [IX_Person_Name] ON [Person] ([Name]); +"); } [ConditionalTheory] @@ -575,18 +550,17 @@ public virtual void AlterColumnOperation_with_index_included_column(bool obsolet } }); - Assert.Equal( - "DROP INDEX [IX_Person_FirstName_LastName] ON [Person];" + EOL + - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(30) NULL;" + EOL + - "CREATE INDEX [IX_Person_FirstName_LastName] ON [Person] ([FirstName], [LastName]) INCLUDE ([Name]);" + EOL, - Sql); + AssertSql( + @"DROP INDEX [IX_Person_FirstName_LastName] ON [Person]; +DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(30) NULL; +CREATE INDEX [IX_Person_FirstName_LastName] ON [Person] ([FirstName], [LastName]) INCLUDE ([Name]); +"); } [ConditionalFact] @@ -617,16 +591,15 @@ public virtual void AlterColumnOperation_with_index_no_included() } }); - Assert.Equal( - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(30) NULL;" + EOL, - Sql); + AssertSql( + @"DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(30) NULL; +"); } [ConditionalFact] @@ -651,16 +624,15 @@ public virtual void AlterColumnOperation_with_index_no_oldColumn() OldColumn = new ColumnOperation() }); - Assert.Equal( - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(30) NULL;" + EOL, - Sql); + AssertSql( + @"DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(30) NULL; +"); } [ConditionalFact] @@ -690,18 +662,17 @@ public virtual void AlterColumnOperation_with_composite_index() } }); - Assert.Equal( - "DROP INDEX [IX_Person_FirstName_LastName] ON [Person];" + EOL + - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'FirstName');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [Person] ALTER COLUMN [FirstName] nvarchar(450) NOT NULL;" + EOL + - "CREATE INDEX [IX_Person_FirstName_LastName] ON [Person] ([FirstName], [LastName]);" + EOL, - Sql); + AssertSql( + @"DROP INDEX [IX_Person_FirstName_LastName] ON [Person]; +DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'FirstName'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [Person] ALTER COLUMN [FirstName] nvarchar(450) NOT NULL; +CREATE INDEX [IX_Person_FirstName_LastName] ON [Person] ([FirstName], [LastName]); +"); } [ConditionalFact] @@ -736,19 +707,18 @@ public virtual void AlterColumnOperation_with_added_index() Columns = new[] { "Name" } }); - Assert.Equal( - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(30) NULL;" + EOL + - "GO" + EOL + - EOL + - "CREATE INDEX [IX_Person_Name] ON [Person] ([Name]);" + EOL, - Sql); + AssertSql( + @"DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(30) NULL; +GO + +CREATE INDEX [IX_Person_Name] ON [Person] ([Name]); +"); } [ConditionalTheory] @@ -796,19 +766,18 @@ public virtual void AlterColumnOperation_with_added_online_index(bool obsolete) [SqlServerAnnotationNames.CreatedOnline] = true }); - Assert.Equal( - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(30) NULL;" + EOL + - "GO" + EOL + - EOL + - "CREATE INDEX [IX_Person_Name] ON [Person] ([Name]) WITH (ONLINE = ON);" + EOL, - Sql); + AssertSql( + @"DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Name'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [Person] ALTER COLUMN [Name] nvarchar(30) NULL; +GO + +CREATE INDEX [IX_Person_Name] ON [Person] ([Name]) WITH (ONLINE = ON); +"); } [ConditionalFact] @@ -829,16 +798,15 @@ public virtual void AlterColumnOperation_identity() } }); - Assert.Equal( - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Id');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [Person] ALTER COLUMN [Id] bigint NOT NULL;" + EOL, - Sql); + AssertSql( + @"DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Person]') AND [c].[name] = N'Id'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Person] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [Person] ALTER COLUMN [Id] bigint NOT NULL; +"); } [ConditionalFact] @@ -898,18 +866,17 @@ public void AlterColumnOperation_with_new_comment() Comment = "My Comment" }); - Assert.Equal( - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[dbo].[People]') AND [c].[name] = N'LuckyNumber');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [dbo].[People] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [dbo].[People] ALTER COLUMN [LuckyNumber] int NOT NULL;" + EOL + - "GO" + EOL + EOL + - "EXEC sp_addextendedproperty @name = N'Comment', @value = N'My Comment', @level0type = N'Schema', @level0name = N'dbo', @level1type = N'Table', @level1name = N'People', @level2type = N'Column', @level2name = N'LuckyNumber'", - Sql); + AssertSql( + @"DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[dbo].[People]') AND [c].[name] = N'LuckyNumber'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [dbo].[People] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [dbo].[People] ALTER COLUMN [LuckyNumber] int NOT NULL; +GO + +EXEC sp_addextendedproperty @name = N'Comment', @value = N'My Comment', @level0type = N'Schema', @level0name = N'dbo', @level1type = N'Table', @level1name = N'People', @level2type = N'Column', @level2name = N'LuckyNumber'"); } [ConditionalFact] @@ -939,20 +906,19 @@ public void AlterColumnOperation_with_different_comment_to_existing() } }); - Assert.Equal( - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[dbo].[People]') AND [c].[name] = N'Name');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [dbo].[People] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [dbo].[People] ALTER COLUMN [Name] nvarchar(max) NOT NULL;" + EOL + - "GO" + EOL + EOL + - "EXEC sp_dropextendedproperty @name = N'Comment', @level0type = N'Schema', @level0name = N'dbo', @level1type = N'Table', @level1name = N'People', @level2type = N'Column', @level2name = N'Name'" + - "GO" + EOL + EOL + - "EXEC sp_addextendedproperty @name = N'Comment', @value = N'My Comment 2', @level0type = N'Schema', @level0name = N'dbo', @level1type = N'Table', @level1name = N'People', @level2type = N'Column', @level2name = N'Name'", - Sql); + AssertSql( + @"DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[dbo].[People]') AND [c].[name] = N'Name'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [dbo].[People] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [dbo].[People] ALTER COLUMN [Name] nvarchar(max) NOT NULL; +GO + +EXEC sp_dropextendedproperty @name = N'Comment', @level0type = N'Schema', @level0name = N'dbo', @level1type = N'Table', @level1name = N'People', @level2type = N'Column', @level2name = N'Name'GO + +EXEC sp_addextendedproperty @name = N'Comment', @value = N'My Comment 2', @level0type = N'Schema', @level0name = N'dbo', @level1type = N'Table', @level1name = N'People', @level2type = N'Column', @level2name = N'Name'"); } [ConditionalFact] @@ -981,18 +947,17 @@ public void AlterColumnOperation_by_removing_comment() } }); - Assert.Equal( - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[dbo].[People]') AND [c].[name] = N'Name');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [dbo].[People] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [dbo].[People] ALTER COLUMN [Name] nvarchar(max) NOT NULL;" + EOL + - "GO" + EOL + EOL + - "EXEC sp_dropextendedproperty @name = N'Comment', @level0type = N'Schema', @level0name = N'dbo', @level1type = N'Table', @level1name = N'People', @level2type = N'Column', @level2name = N'Name'", - Sql); + AssertSql( + @"DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[dbo].[People]') AND [c].[name] = N'Name'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [dbo].[People] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [dbo].[People] ALTER COLUMN [Name] nvarchar(max) NOT NULL; +GO + +EXEC sp_dropextendedproperty @name = N'Comment', @level0type = N'Schema', @level0name = N'dbo', @level1type = N'Table', @level1name = N'People', @level2type = N'Column', @level2name = N'Name'"); } [ConditionalFact] @@ -1004,15 +969,15 @@ public virtual void CreateDatabaseOperation() Name = "Northwind" }); - Assert.Equal( - "CREATE DATABASE [Northwind];" + EOL + - "GO" + EOL + - EOL + - "IF SERVERPROPERTY('EngineEdition') <> 5" + EOL + - "BEGIN" + EOL + - " ALTER DATABASE [Northwind] SET READ_COMMITTED_SNAPSHOT ON;" + EOL + - "END;" + EOL, - Sql); + AssertSql( + @"CREATE DATABASE [Northwind]; +GO + +IF SERVERPROPERTY('EngineEdition') <> 5 +BEGIN + ALTER DATABASE [Northwind] SET READ_COMMITTED_SNAPSHOT ON; +END; +"); } [ConditionalFact] @@ -1028,17 +993,17 @@ public virtual void CreateDatabaseOperation_with_filename() var expectedFile = Path.GetFullPath("Narf.mdf"); var expectedLog = Path.GetFullPath("Narf_log.ldf"); - Assert.Equal( - "CREATE DATABASE [Northwind]" + EOL + - "ON (NAME = N'Narf', FILENAME = N'" + expectedFile + "')" + EOL + - "LOG ON (NAME = N'Narf_log', FILENAME = N'" + expectedLog + "');" + EOL + - "GO" + EOL + - EOL + - "IF SERVERPROPERTY('EngineEdition') <> 5" + EOL + - "BEGIN" + EOL + - " ALTER DATABASE [Northwind] SET READ_COMMITTED_SNAPSHOT ON;" + EOL + - "END;" + EOL, - Sql); + AssertSql( + $@"CREATE DATABASE [Northwind] +ON (NAME = N'Narf', FILENAME = N'{expectedFile}') +LOG ON (NAME = N'Narf_log', FILENAME = N'{expectedLog}'); +GO + +IF SERVERPROPERTY('EngineEdition') <> 5 +BEGIN + ALTER DATABASE [Northwind] SET READ_COMMITTED_SNAPSHOT ON; +END; +"); } [ConditionalFact] @@ -1056,17 +1021,17 @@ public virtual void CreateDatabaseOperation_with_filename_and_datadirectory() var expectedFile = Path.Combine(baseDirectory, "Narf.mdf"); var expectedLog = Path.Combine(baseDirectory, "Narf_log.ldf"); - Assert.Equal( - "CREATE DATABASE [Northwind]" + EOL + - "ON (NAME = N'Narf', FILENAME = N'" + expectedFile + "')" + EOL + - "LOG ON (NAME = N'Narf_log', FILENAME = N'" + expectedLog + "');" + EOL + - "GO" + EOL + - EOL + - "IF SERVERPROPERTY('EngineEdition') <> 5" + EOL + - "BEGIN" + EOL + - " ALTER DATABASE [Northwind] SET READ_COMMITTED_SNAPSHOT ON;" + EOL + - "END;" + EOL, - Sql); + AssertSql( + $@"CREATE DATABASE [Northwind] +ON (NAME = N'Narf', FILENAME = N'{expectedFile}') +LOG ON (NAME = N'Narf_log', FILENAME = N'{expectedLog}'); +GO + +IF SERVERPROPERTY('EngineEdition') <> 5 +BEGIN + ALTER DATABASE [Northwind] SET READ_COMMITTED_SNAPSHOT ON; +END; +"); } [ConditionalFact] @@ -1088,17 +1053,17 @@ public virtual void CreateDatabaseOperation_with_filename_and_custom_datadirecto var expectedFile = Path.Combine(dataDirectory, "Narf.mdf"); var expectedLog = Path.Combine(dataDirectory, "Narf_log.ldf"); - Assert.Equal( - "CREATE DATABASE [Northwind]" + EOL + - "ON (NAME = N'Narf', FILENAME = N'" + expectedFile + "')" + EOL + - "LOG ON (NAME = N'Narf_log', FILENAME = N'" + expectedLog + "');" + EOL + - "GO" + EOL + - EOL + - "IF SERVERPROPERTY('EngineEdition') <> 5" + EOL + - "BEGIN" + EOL + - " ALTER DATABASE [Northwind] SET READ_COMMITTED_SNAPSHOT ON;" + EOL + - "END;" + EOL, - Sql); + AssertSql( + $@"CREATE DATABASE [Northwind] +ON (NAME = N'Narf', FILENAME = N'{expectedFile}') +LOG ON (NAME = N'Narf_log', FILENAME = N'{expectedLog}'); +GO + +IF SERVERPROPERTY('EngineEdition') <> 5 +BEGIN + ALTER DATABASE [Northwind] SET READ_COMMITTED_SNAPSHOT ON; +END; +"); } [ConditionalFact] @@ -1119,19 +1084,16 @@ public override void CreateIndexOperation_nonunique() { base.CreateIndexOperation_nonunique(); - Assert.Equal( - "CREATE INDEX [IX_People_Name] ON [People] ([Name]);" + EOL, - Sql); + AssertSql(@"CREATE INDEX [IX_People_Name] ON [People] ([Name]); +"); } public override void CreateIndexOperation_unique() { base.CreateIndexOperation_unique(); - Assert.Equal( - "CREATE UNIQUE INDEX [IX_People_Name] ON [dbo].[People] ([FirstName], [LastName]) WHERE [FirstName] IS NOT NULL AND [LastName] IS NOT NULL;" - + EOL, - Sql); + AssertSql(@"CREATE UNIQUE INDEX [IX_People_Name] ON [dbo].[People] ([FirstName], [LastName]) WHERE [FirstName] IS NOT NULL AND [LastName] IS NOT NULL; +"); } [ConditionalFact] @@ -1148,9 +1110,8 @@ public virtual void CreateIndexOperation_unique_non_legacy() IsUnique = true }); - Assert.Equal( - "CREATE UNIQUE INDEX [IX_People_Name] ON [dbo].[People] ([FirstName], [LastName]);" + EOL, - Sql); + AssertSql(@"CREATE UNIQUE INDEX [IX_People_Name] ON [dbo].[People] ([FirstName], [LastName]); +"); } [ConditionalFact] @@ -1165,9 +1126,8 @@ public virtual void CreateIndexOperation_clustered() [SqlServerAnnotationNames.Clustered] = true }); - Assert.Equal( - "CREATE CLUSTERED INDEX [IX_People_Name] ON [People] ([Name]);" + EOL, - Sql); + AssertSql(@"CREATE CLUSTERED INDEX [IX_People_Name] ON [People] ([Name]); +"); } [ConditionalFact] @@ -1183,9 +1143,8 @@ public virtual void CreateIndexOperation_unique_clustered() [SqlServerAnnotationNames.Clustered] = true }); - Assert.Equal( - "CREATE UNIQUE CLUSTERED INDEX [IX_People_Name] ON [People] ([Name]);" + EOL, - Sql); + AssertSql(@"CREATE UNIQUE CLUSTERED INDEX [IX_People_Name] ON [People] ([Name]); +"); } [ConditionalFact] @@ -1200,9 +1159,8 @@ public virtual void CreateIndexOperation_with_include() [SqlServerAnnotationNames.Include] = new[] { "FirstName", "LastName" } }); - Assert.Equal( - "CREATE INDEX [IX_People_Name] ON [People] ([Name]) INCLUDE ([FirstName], [LastName]);" + EOL, - Sql); + AssertSql(@"CREATE INDEX [IX_People_Name] ON [People] ([Name]) INCLUDE ([FirstName], [LastName]); +"); } [ConditionalFact] @@ -1218,10 +1176,8 @@ public virtual void CreateIndexOperation_with_include_and_filter() [SqlServerAnnotationNames.Include] = new[] { "FirstName", "LastName" } }); - Assert.Equal( - "CREATE INDEX [IX_People_Name] ON [People] ([Name]) INCLUDE ([FirstName], [LastName]) WHERE [Name] IS NOT NULL AND <> '';" - + EOL, - Sql); + AssertSql(@"CREATE INDEX [IX_People_Name] ON [People] ([Name]) INCLUDE ([FirstName], [LastName]) WHERE [Name] IS NOT NULL AND <> ''; +"); } [ConditionalFact] @@ -1237,10 +1193,8 @@ public virtual void CreateIndexOperation_unique_with_include() [SqlServerAnnotationNames.Include] = new[] { "FirstName", "LastName" } }); - Assert.Equal( - "CREATE UNIQUE INDEX [IX_People_Name] ON [People] ([Name]) INCLUDE ([FirstName], [LastName]) WHERE [Name] IS NOT NULL;" - + EOL, - Sql); + AssertSql(@"CREATE UNIQUE INDEX [IX_People_Name] ON [People] ([Name]) INCLUDE ([FirstName], [LastName]) WHERE [Name] IS NOT NULL; +"); } [ConditionalFact] @@ -1257,10 +1211,8 @@ public virtual void CreateIndexOperation_unique_with_include_and_filter() [SqlServerAnnotationNames.Include] = new[] { "FirstName", "LastName" } }); - Assert.Equal( - "CREATE UNIQUE INDEX [IX_People_Name] ON [People] ([Name]) INCLUDE ([FirstName], [LastName]) WHERE [Name] IS NOT NULL AND <> '';" - + EOL, - Sql); + AssertSql(@"CREATE UNIQUE INDEX [IX_People_Name] ON [People] ([Name]) INCLUDE ([FirstName], [LastName]) WHERE [Name] IS NOT NULL AND <> ''; +"); } [ConditionalFact] @@ -1278,10 +1230,8 @@ public virtual void CreateIndexOperation_unique_with_include_and_filter_online() [SqlServerAnnotationNames.CreatedOnline] = true }); - Assert.Equal( - "CREATE UNIQUE INDEX [IX_People_Name] ON [People] ([Name]) INCLUDE ([FirstName], [LastName]) WHERE [Name] IS NOT NULL AND <> '' WITH (ONLINE = ON);" - + EOL, - Sql); + AssertSql(@"CREATE UNIQUE INDEX [IX_People_Name] ON [People] ([Name]) INCLUDE ([FirstName], [LastName]) WHERE [Name] IS NOT NULL AND <> '' WITH (ONLINE = ON); +"); } [ConditionalFact] @@ -1298,9 +1248,8 @@ public virtual void CreateIndexOperation_unique_with_include_non_legacy() [SqlServerAnnotationNames.Include] = new[] { "FirstName", "LastName" } }); - Assert.Equal( - "CREATE UNIQUE INDEX [IX_People_Name] ON [People] ([Name]) INCLUDE ([FirstName], [LastName]);" + EOL, - Sql); + AssertSql(@"CREATE UNIQUE INDEX [IX_People_Name] ON [People] ([Name]) INCLUDE ([FirstName], [LastName]); +"); } [ConditionalFact] @@ -1316,9 +1265,8 @@ public virtual void CreateIndexOperation_unique_bound_null() IsUnique = true }); - Assert.Equal( - "CREATE UNIQUE INDEX [IX_People_Name] ON [People] ([Name]) WHERE [Name] IS NOT NULL;" + EOL, - Sql); + AssertSql(@"CREATE UNIQUE INDEX [IX_People_Name] ON [People] ([Name]) WHERE [Name] IS NOT NULL; +"); } [ConditionalFact] @@ -1338,9 +1286,8 @@ public virtual void CreateIndexOperation_unique_bound_not_null() IsUnique = true }); - Assert.Equal( - "CREATE UNIQUE INDEX [IX_People_Name] ON [People] ([Name]);" + EOL, - Sql); + AssertSql(@"CREATE UNIQUE INDEX [IX_People_Name] ON [People] ([Name]); +"); } [ConditionalTheory] @@ -1373,9 +1320,8 @@ public virtual void CreateIndexOperation_memoryOptimized_unique_nullable(bool ob IsUnique = true }); - Assert.Equal( - "ALTER TABLE [dbo].[People] ADD INDEX [IX_People_Name] ([Name]);" + EOL, - Sql); + AssertSql(@"ALTER TABLE [dbo].[People] ADD INDEX [IX_People_Name] ([Name]); +"); } [ConditionalTheory] @@ -1408,9 +1354,8 @@ public virtual void CreateIndexOperation_memoryOptimized_unique_nullable_with_fi Filter = "[Name] IS NOT NULL AND <> ''" }); - Assert.Equal( - "ALTER TABLE [People] ADD INDEX [IX_People_Name] ([Name]);" + EOL, - Sql); + AssertSql(@"ALTER TABLE [People] ADD INDEX [IX_People_Name] ([Name]); +"); } [ConditionalTheory] @@ -1442,9 +1387,8 @@ public virtual void CreateIndexOperation_memoryOptimized_unique_nonclustered_not [SqlServerAnnotationNames.Clustered] = false }); - Assert.Equal( - "ALTER TABLE [People] ADD INDEX [IX_People_Name] UNIQUE NONCLUSTERED ([Name]);" + EOL, - Sql); + AssertSql(@"ALTER TABLE [People] ADD INDEX [IX_People_Name] UNIQUE NONCLUSTERED ([Name]); +"); } [ConditionalFact] @@ -1456,9 +1400,8 @@ public virtual void CreateSchemaOperation() Name = "my" }); - Assert.Equal( - "IF SCHEMA_ID(N'my') IS NULL EXEC(N'CREATE SCHEMA [my];');" + EOL, - Sql); + AssertSql(@"IF SCHEMA_ID(N'my') IS NULL EXEC(N'CREATE SCHEMA [my];'); +"); } [ConditionalFact] @@ -1470,25 +1413,22 @@ public virtual void CreateSchemaOperation_dbo() Name = "dbo" }); - Assert.Equal( - "", - Sql); + AssertSql(""); } public override void DropColumnOperation() { base.DropColumnOperation(); - Assert.Equal( - "DECLARE @var0 sysname;" + EOL + - "SELECT @var0 = [d].[name]" + EOL + - "FROM [sys].[default_constraints] [d]" + EOL + - "INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]" - + EOL + - "WHERE ([d].[parent_object_id] = OBJECT_ID(N'[dbo].[People]') AND [c].[name] = N'LuckyNumber');" + EOL + - "IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [dbo].[People] DROP CONSTRAINT [' + @var0 + '];');" + EOL + - "ALTER TABLE [dbo].[People] DROP COLUMN [LuckyNumber];" + EOL, - Sql); + AssertSql( + @"DECLARE @var0 sysname; +SELECT @var0 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[dbo].[People]') AND [c].[name] = N'LuckyNumber'); +IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [dbo].[People] DROP CONSTRAINT [' + @var0 + '];'); +ALTER TABLE [dbo].[People] DROP COLUMN [LuckyNumber]; +"); } [ConditionalFact] @@ -1500,24 +1440,23 @@ public virtual void DropDatabaseOperation() Name = "Northwind" }); - Assert.Equal( - "IF SERVERPROPERTY('EngineEdition') <> 5" + EOL + - "BEGIN" + EOL + - " ALTER DATABASE [Northwind] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;" + EOL + - "END;" + EOL + - "GO" + EOL + - EOL + - "DROP DATABASE [Northwind];" + EOL, - Sql); + AssertSql( + @"IF SERVERPROPERTY('EngineEdition') <> 5 +BEGIN + ALTER DATABASE [Northwind] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; +END; +GO + +DROP DATABASE [Northwind]; +"); } public override void DropIndexOperation() { base.DropIndexOperation(); - Assert.Equal( - "DROP INDEX [IX_People_Name] ON [dbo].[People];" + EOL, - Sql); + AssertSql(@"DROP INDEX [IX_People_Name] ON [dbo].[People]; +"); } [ConditionalTheory] @@ -1547,9 +1486,8 @@ public virtual void DropIndexOperation_memoryOptimized(bool obsolete) Table = "People" }); - Assert.Equal( - "ALTER TABLE [People] DROP INDEX [IX_People_Name];" + EOL, - Sql); + AssertSql(@"ALTER TABLE [People] DROP INDEX [IX_People_Name]; +"); } [ConditionalFact] @@ -1563,9 +1501,8 @@ public virtual void MoveSequenceOperation_legacy() NewSchema = "my" }); - Assert.Equal( - "ALTER SCHEMA [my] TRANSFER [dbo].[EntityFrameworkHiLoSequence];" + EOL, - Sql); + AssertSql(@"ALTER SCHEMA [my] TRANSFER [dbo].[EntityFrameworkHiLoSequence]; +"); } [ConditionalFact] @@ -1581,9 +1518,8 @@ public virtual void MoveSequenceOperation() NewSchema = "my" }); - Assert.Equal( - "ALTER SCHEMA [my] TRANSFER [dbo].[EntityFrameworkHiLoSequence];" + EOL, - Sql); + AssertSql(@"ALTER SCHEMA [my] TRANSFER [dbo].[EntityFrameworkHiLoSequence]; +"); } [ConditionalFact] @@ -1598,10 +1534,10 @@ public virtual void MoveSequenceOperation_into_default() NewName = "EntityFrameworkHiLoSequence" }); - Assert.Equal( - "DECLARE @defaultSchema sysname = SCHEMA_NAME();" + EOL + - "EXEC(N'ALTER SCHEMA [' + @defaultSchema + N'] TRANSFER [dbo].[EntityFrameworkHiLoSequence];');" + EOL, - Sql); + AssertSql( + @"DECLARE @defaultSchema sysname = SCHEMA_NAME(); +EXEC(N'ALTER SCHEMA [' + @defaultSchema + N'] TRANSFER [dbo].[EntityFrameworkHiLoSequence];'); +"); } [ConditionalFact] @@ -1615,9 +1551,8 @@ public virtual void MoveTableOperation_legacy() NewSchema = "hr" }); - Assert.Equal( - "ALTER SCHEMA [hr] TRANSFER [dbo].[People];" + EOL, - Sql); + AssertSql(@"ALTER SCHEMA [hr] TRANSFER [dbo].[People]; +"); } [ConditionalFact] @@ -1633,9 +1568,8 @@ public virtual void MoveTableOperation() NewSchema = "hr" }); - Assert.Equal( - "ALTER SCHEMA [hr] TRANSFER [dbo].[People];" + EOL, - Sql); + AssertSql(@"ALTER SCHEMA [hr] TRANSFER [dbo].[People]; +"); } [ConditionalFact] @@ -1650,10 +1584,10 @@ public virtual void MoveTableOperation_into_default() NewName = "People" }); - Assert.Equal( - "DECLARE @defaultSchema sysname = SCHEMA_NAME();" + EOL + - "EXEC(N'ALTER SCHEMA [' + @defaultSchema + N'] TRANSFER [dbo].[People];');" + EOL, - Sql); + AssertSql( + @"DECLARE @defaultSchema sysname = SCHEMA_NAME(); +EXEC(N'ALTER SCHEMA [' + @defaultSchema + N'] TRANSFER [dbo].[People];'); +"); } [ConditionalFact] @@ -1668,9 +1602,8 @@ public virtual void RenameColumnOperation() NewName = "FullName" }); - Assert.Equal( - "EXEC sp_rename N'[dbo].[People].[Name]', N'FullName', N'COLUMN';" + EOL, - Sql); + AssertSql(@"EXEC sp_rename N'[dbo].[People].[Name]', N'FullName', N'COLUMN'; +"); } [ConditionalFact] @@ -1685,9 +1618,8 @@ public virtual void RenameIndexOperation() NewName = "IX_People_FullName" }); - Assert.Equal( - "EXEC sp_rename N'[dbo].[People].[IX_People_Name]', N'IX_People_FullName', N'INDEX';" + EOL, - Sql); + AssertSql(@"EXEC sp_rename N'[dbo].[People].[IX_People_Name]', N'IX_People_FullName', N'INDEX'; +"); } [ConditionalFact] @@ -1716,9 +1648,8 @@ public virtual void RenameSequenceOperation_legacy() NewName = "MySequence" }); - Assert.Equal( - "EXEC sp_rename N'[dbo].[EntityFrameworkHiLoSequence]', N'MySequence';" + EOL, - Sql); + AssertSql(@"EXEC sp_rename N'[dbo].[EntityFrameworkHiLoSequence]', N'MySequence'; +"); } [ConditionalFact] @@ -1734,9 +1665,8 @@ public virtual void RenameSequenceOperation() NewSchema = "dbo" }); - Assert.Equal( - "EXEC sp_rename N'[dbo].[EntityFrameworkHiLoSequence]', N'MySequence';" + EOL, - Sql); + AssertSql(@"EXEC sp_rename N'[dbo].[EntityFrameworkHiLoSequence]', N'MySequence'; +"); } [ConditionalFact] @@ -1744,9 +1674,8 @@ public override void RenameTableOperation_legacy() { base.RenameTableOperation_legacy(); - Assert.Equal( - "EXEC sp_rename N'[dbo].[People]', N'Person';" + EOL, - Sql); + AssertSql(@"EXEC sp_rename N'[dbo].[People]', N'Person'; +"); } [ConditionalFact] @@ -1754,9 +1683,8 @@ public override void RenameTableOperation() { base.RenameTableOperation(); - Assert.Equal( - "EXEC sp_rename N'[dbo].[People]', N'Person';" + EOL, - Sql); + AssertSql(@"EXEC sp_rename N'[dbo].[People]', N'Person'; +"); } [ConditionalFact] @@ -1769,9 +1697,8 @@ public virtual void SqlOperation_handles_backslash() "comment" }); - Assert.Equal( - "-- Multiline comment" + EOL, - Sql); + AssertSql(@"-- Multiline comment +"); } [ConditionalFact] @@ -1785,9 +1712,8 @@ public virtual void SqlOperation_ignores_sequential_gos() "GO" }); - Assert.Equal( - "-- Ready set" + EOL, - Sql); + AssertSql(@"-- Ready set +"); } [ConditionalFact] @@ -1801,12 +1727,12 @@ public virtual void SqlOperation_handles_go() "-- Too" }); - Assert.Equal( - "-- I" + EOL + - "GO" + EOL + - EOL + - "-- Too" + EOL, - Sql); + AssertSql( + @"-- I +GO + +-- Too +"); } [ConditionalFact] @@ -1819,12 +1745,12 @@ public virtual void SqlOperation_handles_go_with_count() "GO 2" }); - Assert.Equal( - "-- I" + EOL + - "GO" + EOL + - EOL + - "-- I" + EOL, - Sql); + AssertSql( + @"-- I +GO + +-- I +"); } [ConditionalFact] @@ -1836,29 +1762,26 @@ public virtual void SqlOperation_ignores_non_go() Sql = "-- I GO 2" }); - Assert.Equal( - "-- I GO 2" + EOL, - Sql); + AssertSql(@"-- I GO 2 +"); } public override void InsertDataOperation() { base.InsertDataOperation(); - Assert.Equal( - "IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Full Name') AND [object_id] = OBJECT_ID(N'[People]'))" - + EOL + - " SET IDENTITY_INSERT [People] ON;" + EOL + - "INSERT INTO [People] ([Id], [Full Name])" + EOL + - "VALUES (0, NULL)," + EOL + - "(1, N'Daenerys Targaryen')," + EOL + - "(2, N'John Snow')," + EOL + - "(3, N'Arya Stark')," + EOL + - "(4, N'Harry Strickland');" + EOL + - "IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Full Name') AND [object_id] = OBJECT_ID(N'[People]'))" - + EOL + - " SET IDENTITY_INSERT [People] OFF;" + EOL, - Sql); + AssertSql( + @"IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Full Name') AND [object_id] = OBJECT_ID(N'[People]')) + SET IDENTITY_INSERT [People] ON; +INSERT INTO [People] ([Id], [Full Name]) +VALUES (0, NULL), +(1, N'Daenerys Targaryen'), +(2, N'John Snow'), +(3, N'Arya Stark'), +(4, N'Harry Strickland'); +IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'Full Name') AND [object_id] = OBJECT_ID(N'[People]')) + SET IDENTITY_INSERT [People] OFF; +"); } public override void DeleteDataOperation_simple_key() @@ -1866,14 +1789,16 @@ public override void DeleteDataOperation_simple_key() base.DeleteDataOperation_simple_key(); // TODO remove rowcount - Assert.Equal( - "DELETE FROM [People]" + EOL + - "WHERE [Id] = 2;" + EOL + - "SELECT @@ROWCOUNT;" + EOL + EOL + - "DELETE FROM [People]" + EOL + - "WHERE [Id] = 4;" + EOL + - "SELECT @@ROWCOUNT;" + EOL + EOL, - Sql); + AssertSql( + @"DELETE FROM [People] +WHERE [Id] = 2; +SELECT @@ROWCOUNT; + +DELETE FROM [People] +WHERE [Id] = 4; +SELECT @@ROWCOUNT; + +"); } public override void DeleteDataOperation_composite_key() @@ -1881,14 +1806,16 @@ public override void DeleteDataOperation_composite_key() base.DeleteDataOperation_composite_key(); // TODO remove rowcount - Assert.Equal( - "DELETE FROM [People]" + EOL + - "WHERE [First Name] = N'Hodor' AND [Last Name] IS NULL;" + EOL + - "SELECT @@ROWCOUNT;" + EOL + EOL + - "DELETE FROM [People]" + EOL + - "WHERE [First Name] = N'Daenerys' AND [Last Name] = N'Targaryen';" + EOL + - "SELECT @@ROWCOUNT;" + EOL + EOL, - Sql); + AssertSql( + @"DELETE FROM [People] +WHERE [First Name] = N'Hodor' AND [Last Name] IS NULL; +SELECT @@ROWCOUNT; + +DELETE FROM [People] +WHERE [First Name] = N'Daenerys' AND [Last Name] = N'Targaryen'; +SELECT @@ROWCOUNT; + +"); } public override void UpdateDataOperation_simple_key() @@ -1896,14 +1823,16 @@ public override void UpdateDataOperation_simple_key() base.UpdateDataOperation_simple_key(); // TODO remove rowcount - Assert.Equal( - "UPDATE [People] SET [Full Name] = N'Daenerys Stormborn'" + EOL + - "WHERE [Id] = 1;" + EOL + - "SELECT @@ROWCOUNT;" + EOL + EOL + - "UPDATE [People] SET [Full Name] = N'Homeless Harry Strickland'" + EOL + - "WHERE [Id] = 4;" + EOL + - "SELECT @@ROWCOUNT;" + EOL + EOL, - Sql); + AssertSql( + @"UPDATE [People] SET [Full Name] = N'Daenerys Stormborn' +WHERE [Id] = 1; +SELECT @@ROWCOUNT; + +UPDATE [People] SET [Full Name] = N'Homeless Harry Strickland' +WHERE [Id] = 4; +SELECT @@ROWCOUNT; + +"); } public override void UpdateDataOperation_composite_key() @@ -1911,14 +1840,16 @@ public override void UpdateDataOperation_composite_key() base.UpdateDataOperation_composite_key(); // TODO remove rowcount - Assert.Equal( - "UPDATE [People] SET [First Name] = N'Hodor'" + EOL + - "WHERE [Id] = 0 AND [Last Name] IS NULL;" + EOL + - "SELECT @@ROWCOUNT;" + EOL + EOL + - "UPDATE [People] SET [First Name] = N'Harry'" + EOL + - "WHERE [Id] = 4 AND [Last Name] = N'Strickland';" + EOL + - "SELECT @@ROWCOUNT;" + EOL + EOL, - Sql); + AssertSql( + @"UPDATE [People] SET [First Name] = N'Hodor' +WHERE [Id] = 0 AND [Last Name] IS NULL; +SELECT @@ROWCOUNT; + +UPDATE [People] SET [First Name] = N'Harry' +WHERE [Id] = 4 AND [Last Name] = N'Strickland'; +SELECT @@ROWCOUNT; + +"); } public override void UpdateDataOperation_multiple_columns() @@ -1926,14 +1857,16 @@ public override void UpdateDataOperation_multiple_columns() base.UpdateDataOperation_multiple_columns(); // TODO remove rowcount - Assert.Equal( - "UPDATE [People] SET [First Name] = N'Daenerys', [Nickname] = N'Dany'" + EOL + - "WHERE [Id] = 1;" + EOL + - "SELECT @@ROWCOUNT;" + EOL + EOL + - "UPDATE [People] SET [First Name] = N'Harry', [Nickname] = N'Homeless'" + EOL + - "WHERE [Id] = 4;" + EOL + - "SELECT @@ROWCOUNT;" + EOL + EOL, - Sql); + AssertSql( + @"UPDATE [People] SET [First Name] = N'Daenerys', [Nickname] = N'Dany' +WHERE [Id] = 1; +SELECT @@ROWCOUNT; + +UPDATE [People] SET [First Name] = N'Harry', [Nickname] = N'Homeless' +WHERE [Id] = 4; +SELECT @@ROWCOUNT; + +"); } public SqlServerMigrationSqlGeneratorTest() diff --git a/test/EFCore.Sqlite.FunctionalTests/SqliteMigrationSqlGeneratorTest.cs b/test/EFCore.Sqlite.FunctionalTests/SqliteMigrationSqlGeneratorTest.cs index 21ee38d4026..48bfaff3f08 100644 --- a/test/EFCore.Sqlite.FunctionalTests/SqliteMigrationSqlGeneratorTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/SqliteMigrationSqlGeneratorTest.cs @@ -38,14 +38,12 @@ public virtual void It_lifts_foreign_key_additions() PrincipalColumns = new[] { "Id" } }); - Assert.Equal( + AssertSql( @"CREATE TABLE ""Pie"" ( ""FlavorId"" INT NOT NULL, FOREIGN KEY (""FlavorId"") REFERENCES ""Flavor"" (""Id"") ); -", - Sql, - ignoreLineEndingDifferences: true); +"); } [ConditionalFact] @@ -67,13 +65,11 @@ public virtual void DefaultValue_formats_literal_correctly() } }); - Assert.Equal( + AssertSql( @"CREATE TABLE ""History"" ( ""Event"" TEXT NOT NULL DEFAULT '2015-04-12 17:05:00' ); -", - Sql, - ignoreLineEndingDifferences: true); +"); } [ConditionalTheory] @@ -138,18 +134,15 @@ public void CreateTableOperation_with_annotations(bool autoincrement, string pkN } }); - Assert.Equal( - "CREATE TABLE \"People\" (" + EOL + - " \"Id\" INTEGER NOT NULL" + - (pkName != null ? $" CONSTRAINT \"{pkName}\"" : "") - + " PRIMARY KEY" + - (autoincrement ? " AUTOINCREMENT," : ",") + EOL + - " \"EmployerId\" int NULL," + EOL + - " \"SSN\" char(11) NULL," + EOL + - " UNIQUE (\"SSN\")," + EOL + - " FOREIGN KEY (\"EmployerId\") REFERENCES \"Companies\" (\"Id\")" + EOL + - ");" + EOL, - Sql); + AssertSql( + $@"CREATE TABLE ""People"" ( + ""Id"" INTEGER NOT NULL{(pkName != null ? $@" CONSTRAINT ""{pkName}""" : "")} PRIMARY KEY{(autoincrement ? " AUTOINCREMENT," : ",")} + ""EmployerId"" int NULL, + ""SSN"" char(11) NULL, + UNIQUE (""SSN""), + FOREIGN KEY (""EmployerId"") REFERENCES ""Companies"" (""Id"") +); +"); } [ConditionalFact] @@ -164,18 +157,16 @@ public override void AddColumnOperation_with_defaultValue() { base.AddColumnOperation_with_defaultValue(); - Assert.Equal( - @"ALTER TABLE ""People"" ADD ""Name"" varchar(30) NOT NULL DEFAULT 'John Doe';" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""People"" ADD ""Name"" varchar(30) NOT NULL DEFAULT 'John Doe'; +"); } public override void AddColumnOperation_without_column_type() { base.AddColumnOperation_without_column_type(); - Assert.Equal( - "ALTER TABLE \"People\" ADD \"Alias\" TEXT NOT NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""People"" ADD ""Alias"" TEXT NOT NULL; +"); } public override void AddColumnOperation_with_defaultValueSql() @@ -192,9 +183,8 @@ public override void AddColumnOperation_with_defaultValueSql() DefaultValueSql = "10" }); - Assert.Equal( - @"ALTER TABLE ""People"" ADD ""Age"" int NULL DEFAULT (10);" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""People"" ADD ""Age"" int NULL DEFAULT (10); +"); } public override void AddColumnOperation_with_maxLength() @@ -202,9 +192,8 @@ public override void AddColumnOperation_with_maxLength() base.AddColumnOperation_with_maxLength(); // See issue #3698 - Assert.Equal( - "ALTER TABLE \"Person\" ADD \"Name\" TEXT NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""Person"" ADD ""Name"" TEXT NULL; +"); } public override void AddColumnOperation_with_maxLength_overridden() @@ -212,9 +201,8 @@ public override void AddColumnOperation_with_maxLength_overridden() base.AddColumnOperation_with_maxLength_overridden(); // See issue #3698 - Assert.Equal( - "ALTER TABLE \"Person\" ADD \"Name\" TEXT NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""Person"" ADD ""Name"" TEXT NULL; +"); } public override void AddColumnOperation_with_maxLength_on_derived() @@ -222,18 +210,16 @@ public override void AddColumnOperation_with_maxLength_on_derived() base.AddColumnOperation_with_maxLength_on_derived(); // See issue #3698 - Assert.Equal( - "ALTER TABLE \"Person\" ADD \"Name\" TEXT NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""Person"" ADD ""Name"" TEXT NULL; +"); } public override void AddColumnOperation_with_shared_column() { base.AddColumnOperation_with_shared_column(); - Assert.Equal( - "ALTER TABLE \"Base\" ADD \"Foo\" TEXT NULL;" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""Base"" ADD ""Foo"" TEXT NULL; +"); } [ConditionalFact] @@ -366,9 +352,8 @@ public virtual void RenameColumnOperation() NewName = "FullName" }); - Assert.Equal( - @"ALTER TABLE ""People"" RENAME COLUMN ""Name"" TO ""FullName"";" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""People"" RENAME COLUMN ""Name"" TO ""FullName""; +"); } [ConditionalFact] @@ -390,10 +375,10 @@ public virtual void RenameIndexOperation() NewName = "IX_Person_FullName" }); - Assert.Equal( - @"DROP INDEX ""IX_Person_Name"";" + EOL + - @"CREATE UNIQUE INDEX ""IX_Person_FullName"" ON ""Person"" (""FullName"") WHERE ""Id"" > 2;" + EOL, - Sql); + AssertSql( + @"DROP INDEX ""IX_Person_Name""; +CREATE UNIQUE INDEX ""IX_Person_FullName"" ON ""Person"" (""FullName"") WHERE ""Id"" > 2; +"); } [ConditionalFact] @@ -416,18 +401,16 @@ public override void RenameTableOperation_legacy() { base.RenameTableOperation_legacy(); - Assert.Equal( - "ALTER TABLE \"People\" RENAME TO \"Person\";" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""People"" RENAME TO ""Person""; +"); } public override void RenameTableOperation() { base.RenameTableOperation(); - Assert.Equal( - "ALTER TABLE \"People\" RENAME TO \"Person\";" + EOL, - Sql); + AssertSql(@"ALTER TABLE ""People"" RENAME TO ""Person""; +"); } public override void CreateSequenceOperation_with_minValue_and_maxValue() @@ -464,9 +447,8 @@ public override void DropIndexOperation() { base.DropIndexOperation(); - Assert.Equal( - "DROP INDEX \"IX_People_Name\";" + EOL, - Sql); + AssertSql(@"DROP INDEX ""IX_People_Name""; +"); } public override void DropPrimaryKeyOperation() @@ -517,11 +499,11 @@ public virtual void CreateTableOperation_old_autoincrement_annotation() } }); - Assert.Equal( - "CREATE TABLE \"People\" (" + EOL + - " \"Id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT" + EOL + - ");" + EOL, - Sql); + AssertSql( + @"CREATE TABLE ""People"" ( + ""Id"" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT +); +"); } public SqliteMigrationSqlGeneratorTest()