// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using EntityFrameworkCore.Jet.FunctionalTests.TestUtilities; using Microsoft.EntityFrameworkCore.Query; using Microsoft.EntityFrameworkCore.TestUtilities; using Xunit.Abstractions; namespace EntityFrameworkCore.Jet.FunctionalTests.Query { public class IncludeOneToOneJetTest : IncludeOneToOneTestBase { public IncludeOneToOneJetTest(OneToOneQueryJetFixture fixture, ITestOutputHelper testOutputHelper) : base(fixture) { fixture.TestSqlLoggerFactory.Clear(); } public override void Include_person() { base.Include_person(); AssertSql( $@"SELECT `a`.`Id`, `a`.`City`, `a`.`Street`, `p`.`Id`, `p`.`Name` FROM `Address` AS `a` INNER JOIN `Person` AS `p` ON `a`.`Id` = `p`.`Id`"); } public override void Include_person_shadow() { base.Include_person_shadow(); AssertSql( $@"SELECT `a`.`Id`, `a`.`City`, `a`.`PersonId`, `a`.`Street`, `p`.`Id`, `p`.`Name` FROM `Address2` AS `a` INNER JOIN `Person2` AS `p` ON `a`.`PersonId` = `p`.`Id`"); } public override void Include_address() { base.Include_address(); AssertSql( $@"SELECT `p`.`Id`, `p`.`Name`, `a`.`Id`, `a`.`City`, `a`.`Street` FROM `Person` AS `p` LEFT JOIN `Address` AS `a` ON `p`.`Id` = `a`.`Id`"); } public override void Include_address_shadow() { base.Include_address_shadow(); AssertSql( $@"SELECT `p`.`Id`, `p`.`Name`, `a`.`Id`, `a`.`City`, `a`.`PersonId`, `a`.`Street` FROM `Person2` AS `p` LEFT JOIN `Address2` AS `a` ON `p`.`Id` = `a`.`PersonId`"); } private void AssertSql(params string[] expected) => Fixture.TestSqlLoggerFactory.AssertBaseline(expected); public class OneToOneQueryJetFixture : OneToOneQueryFixtureBase { protected override ITestStoreFactory TestStoreFactory => JetTestStoreFactory.Instance; public TestSqlLoggerFactory TestSqlLoggerFactory => (TestSqlLoggerFactory)ListLoggerFactory; } } }