Skip to content

Commit 5a81854

Browse files
committed
Tests are using containerized SQL Server.
1 parent 0a11fe0 commit 5a81854

31 files changed

+295
-196
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
using System.Reflection;
2+
using Microsoft.EntityFrameworkCore.Metadata.Internal;
3+
using Thinktecture.EntityFrameworkCore.Parameters;
4+
using Thinktecture.EntityFrameworkCore.TempTables;
5+
using Thinktecture.EntityFrameworkCore.Testing;
6+
using Thinktecture.TestDatabaseContext;
7+
8+
namespace Thinktecture;
9+
10+
public class DeleteTestData : ITestIsolationOptions
11+
{
12+
private static readonly MethodInfo _deleteData = typeof(DeleteTestData).GetMethod(nameof(DeleteDataAsync), BindingFlags.Static | BindingFlags.NonPublic) ?? throw new Exception("Method 'DeleteDataAsync' not found.");
13+
14+
public bool NeedsAmbientTransaction => false;
15+
public bool NeedsUniqueSchema => false;
16+
public bool NeedsCleanup => true;
17+
18+
public async ValueTask CleanupAsync(DbContext dbContext, string schema, CancellationToken cancellationToken)
19+
{
20+
foreach (var entityType in dbContext.Model.GetEntityTypesInHierarchicalOrder().Reverse())
21+
{
22+
if (!String.IsNullOrWhiteSpace(entityType.GetTableName())
23+
&& entityType.ClrType != typeof(TestEntityWithCollation)
24+
&& entityType.ClrType != typeof(CustomTempTable)
25+
&& entityType.ClrType != typeof(OwnedEntity)
26+
&& entityType.ClrType != typeof(OwnedEntity_Owns_Inline)
27+
&& entityType.ClrType != typeof(OwnedEntity_Owns_SeparateOne)
28+
&& entityType.ClrType != typeof(OwnedEntity_Owns_SeparateMany)
29+
&& entityType.ClrType != typeof(MyParameter)
30+
&& entityType.ClrType != typeof(TestTemporalTableEntity)
31+
&& (!entityType.ClrType.IsGenericType ||
32+
(entityType.ClrType.GetGenericTypeDefinition() != typeof(TempTable<>)
33+
&& entityType.ClrType.GetGenericTypeDefinition() != typeof(TempTable<,>)
34+
&& entityType.ClrType.GetGenericTypeDefinition() != typeof(ScalarCollectionParameter<>))))
35+
{
36+
var task = (Task?)_deleteData.MakeGenericMethod(entityType.ClrType).Invoke(null, new object?[] { dbContext, cancellationToken })
37+
?? throw new Exception("Task cannot be null");
38+
39+
await task;
40+
}
41+
}
42+
}
43+
44+
private static async Task DeleteDataAsync<T>(DbContext dbContext, CancellationToken cancellationToken)
45+
where T : class
46+
{
47+
await dbContext.Set<T>().ExecuteDeleteAsync(cancellationToken);
48+
}
49+
}

tests/Thinktecture.EntityFrameworkCore.SqlServer.Tests/EntityFrameworkCore/BulkOperations/SqlServerBulkOperationExecutorTests/BulkInsertAsync.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using Microsoft.Data.SqlClient;
22
using Microsoft.EntityFrameworkCore.Infrastructure;
33
using Thinktecture.EntityFrameworkCore.TempTables;
4-
using Thinktecture.EntityFrameworkCore.Testing;
54
using Thinktecture.TestDatabaseContext;
65

76
namespace Thinktecture.EntityFrameworkCore.BulkOperations.SqlServerBulkOperationExecutorTests;
@@ -13,8 +12,8 @@ public class BulkInsertAsync : IntegrationTestsBase
1312

1413
private SqlServerBulkOperationExecutor SUT => _sut ??= ActDbContext.GetService<SqlServerBulkOperationExecutor>();
1514

16-
public BulkInsertAsync(ITestOutputHelper testOutputHelper)
17-
: base(testOutputHelper, ITestIsolationOptions.SharedTablesAmbientTransaction)
15+
public BulkInsertAsync(ITestOutputHelper testOutputHelper, SqlServerContainerFixture sqlServerContainerFixture)
16+
: base(testOutputHelper, sqlServerContainerFixture)
1817
{
1918
}
2019

tests/Thinktecture.EntityFrameworkCore.SqlServer.Tests/EntityFrameworkCore/BulkOperations/SqlServerBulkOperationExecutorTests/BulkInsertOrUpdateAsync.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using Microsoft.Data.SqlClient;
22
using Microsoft.EntityFrameworkCore.Infrastructure;
3-
using Thinktecture.EntityFrameworkCore.Testing;
43
using Thinktecture.TestDatabaseContext;
54

65
namespace Thinktecture.EntityFrameworkCore.BulkOperations.SqlServerBulkOperationExecutorTests;
@@ -12,8 +11,8 @@ public class BulkInsertOrUpdateAsync : IntegrationTestsBase
1211

1312
private SqlServerBulkOperationExecutor SUT => _sut ??= ActDbContext.GetService<SqlServerBulkOperationExecutor>();
1413

15-
public BulkInsertOrUpdateAsync(ITestOutputHelper testOutputHelper)
16-
: base(testOutputHelper, ITestIsolationOptions.SharedTablesAmbientTransaction)
14+
public BulkInsertOrUpdateAsync(ITestOutputHelper testOutputHelper, SqlServerContainerFixture sqlServerContainerFixture)
15+
: base(testOutputHelper, sqlServerContainerFixture)
1716
{
1817
}
1918

tests/Thinktecture.EntityFrameworkCore.SqlServer.Tests/EntityFrameworkCore/BulkOperations/SqlServerBulkOperationExecutorTests/BulkUpdateAsync.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using Microsoft.EntityFrameworkCore.Infrastructure;
2-
using Thinktecture.EntityFrameworkCore.Testing;
32
using Thinktecture.TestDatabaseContext;
43

54
// ReSharper disable InconsistentNaming
@@ -13,8 +12,8 @@ public class BulkUpdateAsync : IntegrationTestsBase
1312

1413
private SqlServerBulkOperationExecutor SUT => _sut ??= ActDbContext.GetService<SqlServerBulkOperationExecutor>();
1514

16-
public BulkUpdateAsync(ITestOutputHelper testOutputHelper)
17-
: base(testOutputHelper, ITestIsolationOptions.SharedTablesAmbientTransaction)
15+
public BulkUpdateAsync(ITestOutputHelper testOutputHelper, SqlServerContainerFixture sqlServerContainerFixture)
16+
: base(testOutputHelper, sqlServerContainerFixture)
1817
{
1918
}
2019

tests/Thinktecture.EntityFrameworkCore.SqlServer.Tests/EntityFrameworkCore/BulkOperations/SqlServerBulkOperationExecutorTests/TruncateTableAsync.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using Microsoft.EntityFrameworkCore.Infrastructure;
2-
using Thinktecture.EntityFrameworkCore.Testing;
32
using Thinktecture.TestDatabaseContext;
43

54
namespace Thinktecture.EntityFrameworkCore.BulkOperations.SqlServerBulkOperationExecutorTests;
@@ -10,8 +9,8 @@ public class TruncateTableAsync : IntegrationTestsBase
109
private SqlServerBulkOperationExecutor? _sut;
1110
private SqlServerBulkOperationExecutor SUT => _sut ??= ActDbContext.GetService<SqlServerBulkOperationExecutor>();
1211

13-
public TruncateTableAsync(ITestOutputHelper testOutputHelper)
14-
: base(testOutputHelper, ITestIsolationOptions.SharedTablesAmbientTransaction)
12+
public TruncateTableAsync(ITestOutputHelper testOutputHelper, SqlServerContainerFixture sqlServerContainerFixture)
13+
: base(testOutputHelper, sqlServerContainerFixture)
1514
{
1615
}
1716

tests/Thinktecture.EntityFrameworkCore.SqlServer.Tests/EntityFrameworkCore/Storage/NestedTransactionTests.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using System.Transactions;
33
using Microsoft.EntityFrameworkCore.Infrastructure;
44
using Microsoft.EntityFrameworkCore.Storage;
5-
using Thinktecture.EntityFrameworkCore.Testing;
65
using Thinktecture.TestDatabaseContext;
76
using IsolationLevel = System.Data.IsolationLevel;
87

@@ -12,8 +11,8 @@ public class NestedTransactionTests : IntegrationTestsBase
1211
{
1312
protected NestedRelationalTransactionManager SUT => (NestedRelationalTransactionManager)ActDbContext.GetService<IDbContextTransactionManager>();
1413

15-
public NestedTransactionTests(ITestOutputHelper testOutputHelper)
16-
: base(testOutputHelper, ITestIsolationOptions.CleanupOnly)
14+
public NestedTransactionTests(ITestOutputHelper testOutputHelper, SqlServerContainerFixture sqlServerContainerFixture)
15+
: base(testOutputHelper, sqlServerContainerFixture)
1716
{
1817
TestCtxProviderBuilder.UseSharedTablesIsolationLevel(IsolationLevel.Serializable);
1918
}

tests/Thinktecture.EntityFrameworkCore.SqlServer.Tests/EntityFrameworkCore/TempTables/SqlServerTempTableCreatorTests/CreatePrimaryKeyAsync.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System.Data;
22
using Microsoft.Data.SqlClient;
33
using Microsoft.EntityFrameworkCore.Infrastructure;
4-
using Thinktecture.EntityFrameworkCore.Testing;
54
using Thinktecture.TestDatabaseContext;
65

76
namespace Thinktecture.EntityFrameworkCore.TempTables.SqlServerTempTableCreatorTests;
@@ -12,8 +11,8 @@ public class CreatePrimaryKeyAsync : IntegrationTestsBase
1211
private SqlServerTempTableCreator? _sut;
1312
private SqlServerTempTableCreator SUT => _sut ??= (SqlServerTempTableCreator)ActDbContext.GetService<ITempTableCreator>();
1413

15-
public CreatePrimaryKeyAsync(ITestOutputHelper testOutputHelper)
16-
: base(testOutputHelper, ITestIsolationOptions.SharedTablesAmbientTransaction)
14+
public CreatePrimaryKeyAsync(ITestOutputHelper testOutputHelper, SqlServerContainerFixture sqlServerContainerFixture)
15+
: base(testOutputHelper, sqlServerContainerFixture)
1716
{
1817
TestCtxProviderBuilder.UseSharedTablesIsolationLevel(IsolationLevel.Serializable);
1918
}

tests/Thinktecture.EntityFrameworkCore.SqlServer.Tests/EntityFrameworkCore/TempTables/SqlServerTempTableCreatorTests/CreateTempTableAsync.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using Microsoft.EntityFrameworkCore.Infrastructure;
55
using Microsoft.EntityFrameworkCore.Storage;
66
using Thinktecture.EntityFrameworkCore.BulkOperations;
7-
using Thinktecture.EntityFrameworkCore.Testing;
87
using Thinktecture.TestDatabaseContext;
98

109
namespace Thinktecture.EntityFrameworkCore.TempTables.SqlServerTempTableCreatorTests;
@@ -17,8 +16,8 @@ public class CreateTempTableAsync : IntegrationTestsBase
1716
private SqlServerTempTableCreator? _sut;
1817
private SqlServerTempTableCreator SUT => _sut ??= (SqlServerTempTableCreator)ActDbContext.GetService<ITempTableCreator>();
1918

20-
public CreateTempTableAsync(ITestOutputHelper testOutputHelper)
21-
: base(testOutputHelper, ITestIsolationOptions.SharedTablesAmbientTransaction)
19+
public CreateTempTableAsync(ITestOutputHelper testOutputHelper, SqlServerContainerFixture sqlServerContainerFixture)
20+
: base(testOutputHelper, sqlServerContainerFixture)
2221
{
2322
_optionsWithNonUniqueName = new SqlServerTempTableCreationOptions { TableNameProvider = DefaultTempTableNameProvider.Instance, PrimaryKeyCreation = IPrimaryKeyPropertiesProvider.None };
2423
}

tests/Thinktecture.EntityFrameworkCore.SqlServer.Tests/EntityFrameworkCore/TenantDatabase/TenantDatabaseTests.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
using Thinktecture.EntityFrameworkCore.Testing;
2-
31
namespace Thinktecture.EntityFrameworkCore.TenantDatabase;
42

53
public class TenantDatabaseTests : IntegrationTestsBase
64
{
75
private string? _tenant;
86

9-
public TenantDatabaseTests(ITestOutputHelper testOutputHelper)
10-
: base(testOutputHelper, ITestIsolationOptions.SharedTablesAmbientTransaction)
7+
public TenantDatabaseTests(ITestOutputHelper testOutputHelper, SqlServerContainerFixture sqlServerContainerFixture)
8+
: base(testOutputHelper, sqlServerContainerFixture)
119
{
1210
IsTenantDatabaseSupportEnabled = true;
11+
TenantDatabaseProviderMock.Setup(p => p.GetDatabaseName(It.IsAny<string>(), It.IsAny<string>())).Returns((string)null!);
1312
TenantDatabaseProviderMock.Setup(p => p.Tenant).Returns(() => _tenant);
1413
}
1514

tests/Thinktecture.EntityFrameworkCore.SqlServer.Tests/Extensions/DbContextExtensionsTests/BulkInsertAsync.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using Thinktecture.EntityFrameworkCore.BulkOperations;
2-
using Thinktecture.EntityFrameworkCore.Testing;
32
using Thinktecture.TestDatabaseContext;
43

54
namespace Thinktecture.Extensions.DbContextExtensionsTests;
@@ -8,8 +7,8 @@ namespace Thinktecture.Extensions.DbContextExtensionsTests;
87
public class BulkInsertAsync : IntegrationTestsBase
98
{
109
/// <inheritdoc />
11-
public BulkInsertAsync(ITestOutputHelper testOutputHelper)
12-
: base(testOutputHelper, ITestIsolationOptions.SharedTablesAmbientTransaction)
10+
public BulkInsertAsync(ITestOutputHelper testOutputHelper, SqlServerContainerFixture sqlServerContainerFixture)
11+
: base(testOutputHelper, sqlServerContainerFixture)
1312
{
1413
}
1514

0 commit comments

Comments
 (0)