diff --git a/test/EFCore.Specification.Tests/Query/GearsOfWarQueryTestBase.cs b/test/EFCore.Specification.Tests/Query/GearsOfWarQueryTestBase.cs index 424f39c049a..3020bd67816 100644 --- a/test/EFCore.Specification.Tests/Query/GearsOfWarQueryTestBase.cs +++ b/test/EFCore.Specification.Tests/Query/GearsOfWarQueryTestBase.cs @@ -7333,6 +7333,17 @@ public virtual Task Byte_array_contains_parameter(bool async) ss => ss.Set().Where(s => s.Banner != null && s.Banner.Contains(someByte))); } + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual Task OrderBy_bool_coming_from_optional_navigation(bool async) + { + return AssertQuery( + async, + ss => ss.Set().Select(w => w.SynergyWith).OrderBy(g => g.IsAutomatic), + ss => ss.Set().Select(w => w.SynergyWith).OrderBy(g => MaybeScalar(g, () => g.IsAutomatic)), + assertOrder: true); + } + protected GearsOfWarContext CreateContext() => Fixture.CreateContext(); protected virtual void ClearLog() diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs index b97cd2fc830..1a704e273f4 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs @@ -7333,6 +7333,17 @@ ELSE CAST(0 AS bit) END = CAST(1 AS bit))"); } + public override async Task OrderBy_bool_coming_from_optional_navigation(bool async) + { + await base.OrderBy_bool_coming_from_optional_navigation(async); + + AssertSql( + @"SELECT [w0].[Id], [w0].[AmmunitionType], [w0].[IsAutomatic], [w0].[Name], [w0].[OwnerFullName], [w0].[SynergyWithId] +FROM [Weapons] AS [w] +LEFT JOIN [Weapons] AS [w0] ON [w].[SynergyWithId] = [w0].[Id] +ORDER BY [w0].[IsAutomatic]"); + } + private void AssertSql(params string[] expected) => Fixture.TestSqlLoggerFactory.AssertBaseline(expected); }