You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
EntityFrameworkCore.Jet/test/EFCore.Jet.FunctionalTests/BulkUpdates/NonSharedModelBulkUpdatesJe...

105 lines
3.0 KiB
C#

// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
using System.Threading.Tasks;
using EntityFrameworkCore.Jet.FunctionalTests.TestUtilities;
using Microsoft.EntityFrameworkCore.BulkUpdates;
using Microsoft.EntityFrameworkCore.TestUtilities;
using Xunit;
using Xunit.Abstractions;
namespace EntityFrameworkCore.Jet.FunctionalTests.BulkUpdates;
public class NonSharedModelBulkUpdatesJetTest : NonSharedModelBulkUpdatesTestBase
{
protected override ITestStoreFactory TestStoreFactory
=> JetTestStoreFactory.Instance;
[ConditionalFact]
public virtual void Check_all_tests_overridden()
=> TestHelpers.AssertAllMethodsOverridden(GetType());
public override async Task Delete_aggregate_root_when_eager_loaded_owned_collection(bool async)
{
await base.Delete_aggregate_root_when_eager_loaded_owned_collection(async);
AssertSql(
"""
DELETE FROM `Owner` AS `o`
""");
}
public override async Task Delete_aggregate_root_when_table_sharing_with_owned(bool async)
{
await base.Delete_aggregate_root_when_table_sharing_with_owned(async);
AssertSql(
"""
DELETE FROM `Owner` AS `o`
""");
}
public override async Task Delete_aggregate_root_when_table_sharing_with_non_owned_throws(bool async)
{
await base.Delete_aggregate_root_when_table_sharing_with_non_owned_throws(async);
AssertSql();
}
public override async Task Update_non_owned_property_on_entity_with_owned(bool async)
{
await base.Update_non_owned_property_on_entity_with_owned(async);
AssertSql(
"""
UPDATE `Owner` AS `o`
SET `Title` = 'SomeValue'
""");
}
public override async Task Update_non_owned_property_on_entity_with_owned2(bool async)
{
await base.Update_non_owned_property_on_entity_with_owned2(async);
AssertSql(
"""
UPDATE `Owner` AS `o`
SET `Title` = IIF(`o`.`Title` IS NULL, '', `o`.`Title`) & '_Suffix'
""");
}
public override async Task Delete_entity_with_auto_include(bool async)
{
await base.Delete_entity_with_auto_include(async);
AssertSql(
"""
DELETE FROM [c]
FROM [Context30572_Principal] AS [c]
LEFT JOIN [Context30572_Dependent] AS [c0] ON [c].[DependentId] = [c0].[Id]
""");
}
public override async Task Delete_predicate_based_on_optional_navigation(bool async)
{
await base.Delete_predicate_based_on_optional_navigation(async);
AssertSql(
"""
DELETE FROM `Posts` AS `p`
WHERE EXISTS (
SELECT 1
FROM `Posts` AS `p0`
LEFT JOIN `Blogs` AS `b` ON `p0`.`BlogId` = `b`.`Id`
WHERE (`b`.`Title` IS NOT NULL) AND (`b`.`Title` LIKE 'Arthur%') AND `p0`.`Id` = `p`.`Id`)
""");
}
private void AssertSql(params string[] expected)
=> TestSqlLoggerFactory.AssertBaseline(expected);
private void AssertExecuteUpdateSql(params string[] expected)
=> TestSqlLoggerFactory.AssertBaseline(expected, forUpdate: true);
}