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.
102 lines
4.8 KiB
C#
102 lines
4.8 KiB
C#
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System.Linq;
|
|
using EntityFrameworkCore.Jet.FunctionalTests.TestUtilities;
|
|
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` = {AssertSqlHelper.Parameter("@__category_PrincipalId_0")}",
|
|
//
|
|
$@"@p1='78'
|
|
@p0='New Category' (Size = 4000)
|
|
|
|
SET NOCOUNT ON;
|
|
UPDATE `Categories` SET `Name` = {AssertSqlHelper.Parameter("@p0")}
|
|
WHERE `Id` = {AssertSqlHelper.Parameter("@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` = {AssertSqlHelper.Parameter("@__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);
|
|
}
|
|
}
|