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/UpdatesJetTest.cs

101 lines
4.6 KiB
C#

// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.TestModels.UpdatesModel;
using Xunit;
using Xunit.Abstractions;
namespace EntityFrameworkCore.Jet.FunctionalTests
{
public class UpdatesJetTest : UpdatesRelationalTestBase<UpdatesJetFixture>
{
// ReSharper disable once UnusedParameter.Local
public UpdatesJetTest(UpdatesJetFixture fixture, ITestOutputHelper testOutputHelper)
: base(fixture)
{
//Fixture.TestSqlLoggerFactory.SetTestOutputHelper(testOutputHelper);
Fixture.TestSqlLoggerFactory.Clear();
}
public override void Save_replaced_principal()
{
base.Save_replaced_principal();
AssertSql(
@"SELECT TOP 2 `c`.`Id`, `c`.`Name`, `c`.`PrincipalId`
FROM `Categories` AS `c`",
//
@"@__category_PrincipalId_0='778' (Nullable = true)
SELECT `p`.`Id`, `p`.`DependentId`, `p`.`Name`, `p`.`Price`
FROM `Products` AS `p`
WHERE `p`.`DependentId` = @__category_PrincipalId_0",
//
@"@p1='78'
@p0='New Category' (Size = 4000)
SET NOCOUNT ON;
UPDATE `Categories` SET `Name` = @p0
WHERE `Id` = @p1;
SELECT @@ROWCOUNT;",
//
@"SELECT TOP 2 `c`.`Id`, `c`.`Name`, `c`.`PrincipalId`
FROM `Categories` AS `c`",
//
@"@__category_PrincipalId_0='778' (Nullable = true)
SELECT `p`.`Id`, `p`.`DependentId`, `p`.`Name`, `p`.`Price`
FROM `Products` AS `p`
WHERE `p`.`DependentId` = @__category_PrincipalId_0");
}
public override void Identifiers_are_generated_correctly()
{
using (var context = CreateContext())
{
var entityType = context.Model.FindEntityType(
typeof(
LoginEntityTypeWithAnExtremelyLongAndOverlyConvolutedNameThatIsUsedToVerifyThatTheStoreIdentifierGenerationLengthLimitIsWorkingCorrectly
));
Assert.Equal(
"LoginEntityTypeWithAnExtremelyLongAndOverlyConvolutedNameThatIsUsedToVerifyThatTheStoreIdentifierGenerationLengthLimitIsWorking~",
entityType.GetTableName());
Assert.Equal(
"PK_LoginEntityTypeWithAnExtremelyLongAndOverlyConvolutedNameThatIsUsedToVerifyThatTheStoreIdentifierGenerationLengthLimitIsWork~",
entityType.GetKeys().Single().GetName());
Assert.Equal(
"FK_LoginEntityTypeWithAnExtremelyLongAndOverlyConvolutedNameThatIsUsedToVerifyThatTheStoreIdentifierGenerationLengthLimitIsWork~",
entityType.GetForeignKeys().Single().GetConstraintName());
Assert.Equal(
"IX_LoginEntityTypeWithAnExtremelyLongAndOverlyConvolutedNameThatIsUsedToVerifyThatTheStoreIdentifierGenerationLengthLimitIsWork~",
entityType.GetIndexes().Single().GetName());
var entityType2 = context.Model.FindEntityType(
typeof(
LoginEntityTypeWithAnExtremelyLongAndOverlyConvolutedNameThatIsUsedToVerifyThatTheStoreIdentifierGenerationLengthLimitIsWorkingCorrectlyDetails
));
Assert.Equal(
"LoginEntityTypeWithAnExtremelyLongAndOverlyConvolutedNameThatIsUsedToVerifyThatTheStoreIdentifierGenerationLengthLimitIsWorkin~1",
entityType2.GetTableName());
Assert.Equal(
"PK_LoginDetails",
entityType2.GetKeys().Single().GetName());
Assert.Equal(
"ExtraPropertyWithAnExtremelyLongAndOverlyConvolutedNameThatIsUsedToVerifyThatTheStoreIdentifierGenerationLengthLimitIsWorkingCo~",
entityType2.GetProperties().ElementAt(1).GetColumnName());
Assert.Equal(
"ExtraPropertyWithAnExtremelyLongAndOverlyConvolutedNameThatIsUsedToVerifyThatTheStoreIdentifierGenerationLengthLimitIsWorkingC~1",
entityType2.GetProperties().ElementAt(2).GetColumnName());
Assert.Equal(
"IX_LoginEntityTypeWithAnExtremelyLongAndOverlyConvolutedNameThatIsUsedToVerifyThatTheStoreIdentifierGenerationLengthLimitIsWor~1",
entityType2.GetIndexes().Single().GetName());
}
}
private void AssertSql(params string[] expected)
=> Fixture.TestSqlLoggerFactory.AssertBaseline(expected);
}
}