diff --git a/test/EFCore.Relational.Specification.Tests/CommandInterceptionTestBase.cs b/test/EFCore.Relational.Specification.Tests/CommandInterceptionTestBase.cs index df831d7e5a6..27d38112b26 100644 --- a/test/EFCore.Relational.Specification.Tests/CommandInterceptionTestBase.cs +++ b/test/EFCore.Relational.Specification.Tests/CommandInterceptionTestBase.cs @@ -12,6 +12,7 @@ using Microsoft.EntityFrameworkCore.Diagnostics; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.TestUtilities; using Xunit; // ReSharper disable InconsistentNaming @@ -114,7 +115,8 @@ public virtual async Task Intercept_non_query_passively(bool async, bool inject) { using (context.Database.BeginTransaction()) { - const string nonQuery = "DELETE FROM Singularity WHERE Id = 77"; + string nonQuery = + NormalizeDelimitersInRawString("DELETE FROM [Singularity] WHERE [Id] = 77"); using var listener = Fixture.SubscribeToDiagnosticListener(context.ContextId); var result = async @@ -344,7 +346,8 @@ public virtual async Task Intercept_non_query_to_suppress_execution(bool async, { using (context.Database.BeginTransaction()) { - const string nonQuery = "DELETE FROM Singularity WHERE Id = 77"; + string nonQuery = + NormalizeDelimitersInRawString("DELETE FROM [Singularity] WHERE [Id] = 77"); using var listener = Fixture.SubscribeToDiagnosticListener(context.ContextId); var result = async @@ -523,12 +526,14 @@ public override Task> ScalarExecutingAsync( [InlineData(true, true)] public virtual async Task Intercept_non_query_to_mutate_command(bool async, bool inject) { - var (context, interceptor) = CreateContext(inject); + var interceptor = new MutatingNonQueryCommandInterceptor(this); + var context = inject ? CreateContext(null, interceptor) : CreateContext(interceptor); using (context) { using (context.Database.BeginTransaction()) { - const string nonQuery = "DELETE FROM Singularity WHERE Id = 77"; + string nonQuery = + NormalizeDelimitersInRawString("DELETE FROM [Singularity] WHERE [Id] = 77"); using var listener = Fixture.SubscribeToDiagnosticListener(context.ContextId); var result = async @@ -539,7 +544,7 @@ public virtual async Task Intercept_non_query_to_mutate_command(bool async, bool AssertNormalOutcome(context, interceptor, async); - AssertSql(MutatingNonQueryCommandInterceptor.MutatedSql, interceptor.CommandText); + AssertSql(interceptor.MutatedSql, interceptor.CommandText); AssertExecutedEvents(listener); } @@ -548,11 +553,13 @@ public virtual async Task Intercept_non_query_to_mutate_command(bool async, bool protected class MutatingNonQueryCommandInterceptor : CommandInterceptorBase { - public const string MutatedSql = "DELETE FROM Singularity WHERE Id = 78"; + public readonly string MutatedSql; - public MutatingNonQueryCommandInterceptor() + public MutatingNonQueryCommandInterceptor(CommandInterceptionTestBase testBase) : base(DbCommandMethod.ExecuteNonQuery) { + MutatedSql = + testBase.NormalizeDelimitersInRawString("DELETE FROM [Singularity] WHERE [Id] = 78"); } public override InterceptionResult NonQueryExecuting( @@ -725,12 +732,14 @@ private static DbCommand CreateNewCommand(DbCommand command) [InlineData(true, true)] public virtual async Task Intercept_non_query_to_replace_execution(bool async, bool inject) { - var (context, interceptor) = CreateContext(inject); + var interceptor = new QueryReplacingNonQueryCommandInterceptor(this); + var context = inject ? CreateContext(null, interceptor) : CreateContext(interceptor); using (context) { using (context.Database.BeginTransaction()) { - const string nonQuery = "DELETE FROM Singularity WHERE Id = 78"; + string nonQuery = + NormalizeDelimitersInRawString("DELETE FROM [Singularity] WHERE [Id] = 78"); using var listener = Fixture.SubscribeToDiagnosticListener(context.ContextId); var result = async @@ -750,9 +759,12 @@ public virtual async Task Intercept_non_query_to_replace_execution(bool async, b protected class QueryReplacingNonQueryCommandInterceptor : CommandInterceptorBase { - public QueryReplacingNonQueryCommandInterceptor() + private readonly string commandText; + + public QueryReplacingNonQueryCommandInterceptor(CommandInterceptionTestBase testBase) : base(DbCommandMethod.ExecuteNonQuery) { + commandText = testBase.NormalizeDelimitersInRawString("DELETE FROM [Singularity] WHERE [Id] = 77"); } public override InterceptionResult NonQueryExecuting( @@ -782,7 +794,7 @@ private DbCommand CreateNewCommand(DbCommand command) { var newCommand = command.Connection.CreateCommand(); newCommand.Transaction = command.Transaction; - newCommand.CommandText = "DELETE FROM Singularity WHERE Id = 77"; + newCommand.CommandText = commandText; return newCommand; } @@ -995,7 +1007,8 @@ public virtual async Task Intercept_non_query_to_replace_result(bool async, bool { using (context.Database.BeginTransaction()) { - const string nonQuery = "DELETE FROM Singularity WHERE Id = 78"; + string nonQuery = + NormalizeDelimitersInRawString("DELETE FROM [Singularity] WHERE [Id] = 78"); using var listener = Fixture.SubscribeToDiagnosticListener(context.ContextId); var result = async @@ -1049,7 +1062,7 @@ public override async Task NonQueryExecutedAsync( [InlineData(true, true)] public virtual async Task Intercept_query_that_throws(bool async, bool inject) { - const string badSql = "SELECT * FROM TheVoid"; + string badSql = NormalizeDelimitersInRawString("SELECT * FROM [TheVoid]"); var (context, interceptor) = CreateContext(inject); using (context) @@ -1118,7 +1131,7 @@ public virtual async Task Intercept_non_query_that_throws(bool async, bool injec var (context, interceptor) = CreateContext(inject); using (context) { - const string nonQuery = "DELETE FROM TheVoid WHERE Id = 555"; + string nonQuery = NormalizeDelimitersInRawString("DELETE FROM [TheVoid] WHERE [Id] = 555"); try { @@ -1193,7 +1206,8 @@ public virtual async Task Intercept_non_query_to_throw(bool async, bool inject) { using (context.Database.BeginTransaction()) { - const string nonQuery = "DELETE FROM Singularity WHERE Id = 77"; + string nonQuery = + NormalizeDelimitersInRawString("DELETE FROM [Singularity] WHERE [Id] = 77"); var exception = async ? await Assert.ThrowsAsync(() => context.Database.ExecuteSqlRawAsync(nonQuery)) @@ -1318,15 +1332,16 @@ public virtual async Task Intercept_non_query_one_app_and_one_injected_intercept { using var context = CreateContext( new ResultReplacingNonQueryCommandInterceptor(), - new MutatingNonQueryCommandInterceptor()); + new MutatingNonQueryCommandInterceptor(this)); await TestCompositeNonQueryInterceptors(context, async); } - private static async Task TestCompositeNonQueryInterceptors(UniverseContext context, bool async) + private async Task TestCompositeNonQueryInterceptors(UniverseContext context, bool async) { using (context.Database.BeginTransaction()) { - const string nonQuery = "DELETE FROM Singularity WHERE Id = 78"; + string nonQuery = + NormalizeDelimitersInRawString("DELETE FROM [Singularity] WHERE [Id] = 78"); Assert.Equal( 7, @@ -1366,7 +1381,7 @@ public virtual async Task Intercept_non_query_with_two_injected_interceptors(boo { using var context = CreateContext( null, - new MutatingNonQueryCommandInterceptor(), new ResultReplacingNonQueryCommandInterceptor()); + new MutatingNonQueryCommandInterceptor(this), new ResultReplacingNonQueryCommandInterceptor()); await TestCompositeNonQueryInterceptors(context, async); } @@ -1415,7 +1430,7 @@ public virtual async Task Intercept_scalar_with_explicitly_composed_app_intercep public virtual async Task Intercept_non_query_with_explicitly_composed_app_interceptor(bool async) { using var context = CreateContext( - new IInterceptor[] { new MutatingNonQueryCommandInterceptor(), new ResultReplacingNonQueryCommandInterceptor() }); + new IInterceptor[] { new MutatingNonQueryCommandInterceptor(this), new ResultReplacingNonQueryCommandInterceptor() }); await TestCompositeNonQueryInterceptors(context, async); } @@ -1854,5 +1869,8 @@ protected virtual void AssertFailed(DbCommand command, CommandErrorEventData eve FailedCalled = true; } } + + private string NormalizeDelimitersInRawString(string sql) + => ((RelationalTestStore)Fixture.TestStore).NormalizeDelimitersInRawString(sql); } }