From 5de2d8b5c0dcf10722786b543ddd88c3cf322114 Mon Sep 17 00:00:00 2001 From: StuartFerguson Date: Fri, 28 Aug 2026 19:36:45 +0100 Subject: [PATCH 1/2] Share database test fixture across integration tests --- .../BaseTest.cs | 84 ++++--------------- .../ContractEventTests.cs | 10 +++ .../DatabaseTestCollection.cs | 7 ++ .../DatabaseTestFixture.cs | 65 ++++++++++++++ .../EstateEventTests.cs | 14 ++-- .../FileImportLogEventTests.cs | 4 + .../FloatEventTests.cs | 4 + .../MerchantEventTests.cs | 4 + .../OperatorEventTests.cs | 4 + .../SettlementEventTests.cs | 5 ++ .../StatementEventTests.cs | 4 + .../TransactionEventTests.cs | 4 + 12 files changed, 134 insertions(+), 75 deletions(-) create mode 100644 TransactionProcessor.DatabaseTests/DatabaseTestCollection.cs create mode 100644 TransactionProcessor.DatabaseTests/DatabaseTestFixture.cs diff --git a/TransactionProcessor.DatabaseTests/BaseTest.cs b/TransactionProcessor.DatabaseTests/BaseTest.cs index 8a6653fe..a34964f0 100644 --- a/TransactionProcessor.DatabaseTests/BaseTest.cs +++ b/TransactionProcessor.DatabaseTests/BaseTest.cs @@ -1,31 +1,25 @@ -using System.Diagnostics; -using DotNet.Testcontainers.Builders; -using DotNet.Testcontainers.Networks; using Microsoft.Extensions.DependencyInjection; using Moq; -using NLog; using Shared.EntityFramework; -using Shared.IntegrationTesting; -using Shared.IntegrationTesting.TestContainers; -using Shared.Logger; -using Shouldly; using TransactionProcessor.Database.Contexts; using TransactionProcessor.Repository; -using Logger = Shared.Logger.Logger; namespace TransactionProcessor.DatabaseTests { public abstract class BaseTest : IAsyncLifetime { - protected ITransactionProcessorReadModelRepository Repository; - protected ITestOutputHelper TestOutputHelper; - public virtual async ValueTask InitializeAsync() + private readonly DatabaseTestFixture fixture; + protected ITransactionProcessorReadModelRepository Repository = null!; + protected Guid TestId; + + protected BaseTest(DatabaseTestFixture fixture) { - Logger.Initialise(new Shared.Logger.NullLogger()); - + this.fixture = fixture; this.TestId = Guid.NewGuid(); + } - await this.StartSqlContainer(); + public virtual async ValueTask InitializeAsync() + { await this.GetRepository(); EstateManagementContext context = this.GetContext(); await context.Database.EnsureCreatedAsync(TestContext.Current.CancellationToken); @@ -33,12 +27,12 @@ public virtual async ValueTask InitializeAsync() public EstateManagementContext GetContext() { - return new EstateManagementContext(GetLocalConnectionString($"TransactionProcessorReadModel-{this.TestId}")); + return new EstateManagementContext(this.GetLocalConnectionString($"TransactionProcessorReadModel-{this.TestId}")); } public async Task GetRepository() { - String dbConnString = GetLocalConnectionString($"TransactionProcessorReadModel-{this.TestId}"); + string dbConnString = this.GetLocalConnectionString($"TransactionProcessorReadModel-{this.TestId}"); Mock> resolver = new Mock>(); resolver.Setup(r => r.Resolve(It.IsAny(), It.IsAny())) @@ -56,64 +50,16 @@ public async Task GetRepository() this.Repository = new TransactionProcessorReadModelRepository(resolver.Object); } - public virtual async ValueTask DisposeAsync() { - await this.DockerHelper.StopContainersForScenarioRun(DockerServices.None); + public virtual ValueTask DisposeAsync() + { + return ValueTask.CompletedTask; } - //protected abstract Task ClearStandingData(); - //protected abstract Task SetupStandingData(); - - protected Guid TestId; - - public static INetwork DatabaseServerNetwork; public static (String usename, String password) SqlCredentials = ("sa", "thisisalongpassword123!"); public String GetLocalConnectionString(String databaseName) { - Int32? databaseHostPort = DockerHelper.GetHostPort(ContainerType.SqlServer); - - return $"server=localhost,{databaseHostPort};database={databaseName};user id={SqlCredentials.usename};password={SqlCredentials.password};Encrypt=false"; - } - - private DockerHelper DockerHelper; - - internal async Task StartSqlContainer() - { - DockerHelper = new TestDockerHelper(); - - NlogLogger logger = new NlogLogger(); - logger.Initialise(LogManager.GetLogger("Specflow"), "Specflow"); - LogManager.AddHiddenAssembly(typeof(NlogLogger).Assembly); - DockerHelper.Logger = logger; - DockerHelper.SqlCredentials = SqlCredentials; - DockerHelper.SqlServerContainerName = $"sqlserver_{this.TestId}"; - DockerHelper.RequiredDockerServices = DockerServices.SqlServer; - - //DatabaseServerNetwork = await DockerHelper.SetupTestNetwork($"nw{this.TestId}", true); - await DockerHelper.StartContainersForScenarioRun(this.TestId.ToString(), DockerServices.SqlServer); - } - - //public void Dispose() - //{ - // EstateManagementContext context = new EstateManagementContext(this.GetLocalConnectionString($"EstateReportingReadModel{this.TestId.ToString()}")); - - // Console.WriteLine($"About to delete database EstateReportingReadModel{this.TestId.ToString()}"); - // Boolean result = context.Database.EnsureDeleted(); - // Console.WriteLine($"Delete result is {result}"); - // result.ShouldBeTrue(); - - //} - } - - - - public class TestDockerHelper : DockerHelper - { - public override async Task CreateSubscriptions() - { - // Nothing here + return this.fixture.GetLocalConnectionString(databaseName); } } - } - diff --git a/TransactionProcessor.DatabaseTests/ContractEventTests.cs b/TransactionProcessor.DatabaseTests/ContractEventTests.cs index 6bd1297c..cc9cfdc0 100644 --- a/TransactionProcessor.DatabaseTests/ContractEventTests.cs +++ b/TransactionProcessor.DatabaseTests/ContractEventTests.cs @@ -13,8 +13,13 @@ namespace TransactionProcessor.DatabaseTests { + [Collection(DatabaseTestCollection.Name)] public class ReconciliationEventTests : BaseTest { + public ReconciliationEventTests(DatabaseTestFixture fixture) : base(fixture) + { + } + [Fact] public async Task AddReconciliation_ReconciliationIsAdded() { @@ -33,8 +38,13 @@ public async Task AddReconciliation_EventReplayHandled() { } } + [Collection(DatabaseTestCollection.Name)] public class ContractEventTests : BaseTest { + public ContractEventTests(DatabaseTestFixture fixture) : base(fixture) + { + } + [Fact] public async Task AddContract_ContractIsAdded() { diff --git a/TransactionProcessor.DatabaseTests/DatabaseTestCollection.cs b/TransactionProcessor.DatabaseTests/DatabaseTestCollection.cs new file mode 100644 index 00000000..5dda0911 --- /dev/null +++ b/TransactionProcessor.DatabaseTests/DatabaseTestCollection.cs @@ -0,0 +1,7 @@ +namespace TransactionProcessor.DatabaseTests +{ + public static class DatabaseTestCollection + { + public const string Name = "DatabaseTestCollection"; + } +} diff --git a/TransactionProcessor.DatabaseTests/DatabaseTestFixture.cs b/TransactionProcessor.DatabaseTests/DatabaseTestFixture.cs new file mode 100644 index 00000000..4ab5ce64 --- /dev/null +++ b/TransactionProcessor.DatabaseTests/DatabaseTestFixture.cs @@ -0,0 +1,65 @@ +using DotNet.Testcontainers.Builders; +using NLog; +using Shared.IntegrationTesting; +using Shared.IntegrationTesting.TestContainers; +using Shared.Logger; +using Logger = Shared.Logger.Logger; + +namespace TransactionProcessor.DatabaseTests +{ + public sealed class DatabaseTestFixture : IAsyncLifetime + { + private readonly DockerHelper dockerHelper; + + public DatabaseTestFixture() + { + Logger.Initialise(new Shared.Logger.NullLogger()); + + this.dockerHelper = new TestDockerHelper + { + Logger = this.CreateLogger(), + SqlCredentials = BaseTest.SqlCredentials, + RequiredDockerServices = DockerServices.SqlServer, + SqlServerContainerName = "sqlserver_database_tests" + }; + } + + public async ValueTask InitializeAsync() + { + await this.dockerHelper.StartContainersForScenarioRun("database-tests", DockerServices.SqlServer); + } + + public async ValueTask DisposeAsync() + { + await this.dockerHelper.StopContainersForScenarioRun(DockerServices.SqlServer); + } + + public string GetLocalConnectionString(string databaseName) + { + int? databaseHostPort = this.dockerHelper.GetHostPort(ContainerType.SqlServer); + + return $"server=localhost,{databaseHostPort};database={databaseName};user id={BaseTest.SqlCredentials.usename};password={BaseTest.SqlCredentials.password};Encrypt=false"; + } + + private NlogLogger CreateLogger() + { + NlogLogger logger = new NlogLogger(); + logger.Initialise(LogManager.GetLogger("Specflow"), "Specflow"); + LogManager.AddHiddenAssembly(typeof(NlogLogger).Assembly); + return logger; + } + } + + public class TestDockerHelper : DockerHelper + { + public override Task CreateSubscriptions() + { + return Task.CompletedTask; + } + } + + [CollectionDefinition(DatabaseTestCollection.Name)] + public sealed class DatabaseTestCollectionDefinition : ICollectionFixture + { + } +} diff --git a/TransactionProcessor.DatabaseTests/EstateEventTests.cs b/TransactionProcessor.DatabaseTests/EstateEventTests.cs index 184a7892..4f89fc9a 100644 --- a/TransactionProcessor.DatabaseTests/EstateEventTests.cs +++ b/TransactionProcessor.DatabaseTests/EstateEventTests.cs @@ -7,14 +7,12 @@ namespace TransactionProcessor.DatabaseTests; +[Collection(DatabaseTestCollection.Name)] public class MigrationTests : BaseTest { - public override async ValueTask InitializeAsync() { - - Logger.Initialise(new Shared.Logger.NullLogger()); - - this.TestId = Guid.NewGuid(); + public MigrationTests(DatabaseTestFixture fixture) : base(fixture) { + } - await this.StartSqlContainer(); + public override async ValueTask InitializeAsync() { await this.GetRepository(); } @@ -26,7 +24,11 @@ public async Task CreateReadModel_EstateDatabaseIsMigrated() } } +[Collection(DatabaseTestCollection.Name)] public class EstateEventTests : BaseTest { + public EstateEventTests(DatabaseTestFixture fixture) : base(fixture) { + } + [Fact] public async Task AddEstate_EstateIsAdded() { diff --git a/TransactionProcessor.DatabaseTests/FileImportLogEventTests.cs b/TransactionProcessor.DatabaseTests/FileImportLogEventTests.cs index 4ff6ed24..510cb459 100644 --- a/TransactionProcessor.DatabaseTests/FileImportLogEventTests.cs +++ b/TransactionProcessor.DatabaseTests/FileImportLogEventTests.cs @@ -7,7 +7,11 @@ namespace TransactionProcessor.DatabaseTests; +[Collection(DatabaseTestCollection.Name)] public class FileImportLogEventTests : BaseTest { + public FileImportLogEventTests(DatabaseTestFixture fixture) : base(fixture) { + } + private async Task CreateFileImportLogAsync() { Result result = await this.Repository.AddFileImportLog(TestData.DomainEvents.ImportLogCreatedEvent, TestContext.Current.CancellationToken); diff --git a/TransactionProcessor.DatabaseTests/FloatEventTests.cs b/TransactionProcessor.DatabaseTests/FloatEventTests.cs index 2385579c..21d5d8f6 100644 --- a/TransactionProcessor.DatabaseTests/FloatEventTests.cs +++ b/TransactionProcessor.DatabaseTests/FloatEventTests.cs @@ -8,7 +8,11 @@ namespace TransactionProcessor.DatabaseTests; +[Collection(DatabaseTestCollection.Name)] public class FloatEventTests : BaseTest { + public FloatEventTests(DatabaseTestFixture fixture) : base(fixture) { + } + [Fact] public async Task CreateFloat_FloatIsAdded() { diff --git a/TransactionProcessor.DatabaseTests/MerchantEventTests.cs b/TransactionProcessor.DatabaseTests/MerchantEventTests.cs index 14bf4484..22e54cb9 100644 --- a/TransactionProcessor.DatabaseTests/MerchantEventTests.cs +++ b/TransactionProcessor.DatabaseTests/MerchantEventTests.cs @@ -8,7 +8,11 @@ namespace TransactionProcessor.DatabaseTests; +[Collection(DatabaseTestCollection.Name)] public class MerchantEventTests : BaseTest { + public MerchantEventTests(DatabaseTestFixture fixture) : base(fixture) { + } + private async Task CreateMerchantAsync() { Result result = await this.Repository.AddMerchant(TestData.DomainEvents.MerchantCreatedEvent, TestContext.Current.CancellationToken); diff --git a/TransactionProcessor.DatabaseTests/OperatorEventTests.cs b/TransactionProcessor.DatabaseTests/OperatorEventTests.cs index 1c8408c2..d478be15 100644 --- a/TransactionProcessor.DatabaseTests/OperatorEventTests.cs +++ b/TransactionProcessor.DatabaseTests/OperatorEventTests.cs @@ -7,7 +7,11 @@ namespace TransactionProcessor.DatabaseTests; +[Collection(DatabaseTestCollection.Name)] public class OperatorEventTests : BaseTest { + public OperatorEventTests(DatabaseTestFixture fixture) : base(fixture) { + } + [Fact] public async Task AddOperator_OperatorIsAdded() { diff --git a/TransactionProcessor.DatabaseTests/SettlementEventTests.cs b/TransactionProcessor.DatabaseTests/SettlementEventTests.cs index ea15a9c8..c69c4807 100644 --- a/TransactionProcessor.DatabaseTests/SettlementEventTests.cs +++ b/TransactionProcessor.DatabaseTests/SettlementEventTests.cs @@ -8,8 +8,13 @@ namespace TransactionProcessor.DatabaseTests; +[Collection(DatabaseTestCollection.Name)] public class SettlementEventTests : BaseTest { + public SettlementEventTests(DatabaseTestFixture fixture) : base(fixture) + { + } + [Fact] public async Task CreateSettlement_SettlementIsAdded() { diff --git a/TransactionProcessor.DatabaseTests/StatementEventTests.cs b/TransactionProcessor.DatabaseTests/StatementEventTests.cs index 7ecaeb37..decb0cf2 100644 --- a/TransactionProcessor.DatabaseTests/StatementEventTests.cs +++ b/TransactionProcessor.DatabaseTests/StatementEventTests.cs @@ -7,7 +7,11 @@ namespace TransactionProcessor.DatabaseTests; +[Collection(DatabaseTestCollection.Name)] public class StatementEventTests : BaseTest { + public StatementEventTests(DatabaseTestFixture fixture) : base(fixture) { + } + [Fact] public async Task CreateStatement_StatementIsAdded() { diff --git a/TransactionProcessor.DatabaseTests/TransactionEventTests.cs b/TransactionProcessor.DatabaseTests/TransactionEventTests.cs index 73fd3dfd..19c9619d 100644 --- a/TransactionProcessor.DatabaseTests/TransactionEventTests.cs +++ b/TransactionProcessor.DatabaseTests/TransactionEventTests.cs @@ -9,7 +9,11 @@ namespace TransactionProcessor.DatabaseTests; +[Collection(DatabaseTestCollection.Name)] public class TransactionEventTests : BaseTest { + public TransactionEventTests(DatabaseTestFixture fixture) : base(fixture) { + } + private async Task CreateOperatorAsync() { Result result = await this.Repository.AddOperator(TestData.DomainEvents.OperatorCreatedEvent, TestContext.Current.CancellationToken); From 008b9bff1a3e1432b16539cd759b3b968ee061f7 Mon Sep 17 00:00:00 2001 From: StuartFerguson Date: Fri, 28 Aug 2026 19:56:01 +0100 Subject: [PATCH 2/2] Remove database test collection serialization --- TransactionProcessor.DatabaseTests/AssemblyInfo.cs | 5 +++++ TransactionProcessor.DatabaseTests/ContractEventTests.cs | 2 -- .../DatabaseTestCollection.cs | 7 ------- TransactionProcessor.DatabaseTests/DatabaseTestFixture.cs | 4 ---- TransactionProcessor.DatabaseTests/EstateEventTests.cs | 2 -- .../FileImportLogEventTests.cs | 1 - TransactionProcessor.DatabaseTests/FloatEventTests.cs | 1 - TransactionProcessor.DatabaseTests/MerchantEventTests.cs | 1 - TransactionProcessor.DatabaseTests/OperatorEventTests.cs | 1 - TransactionProcessor.DatabaseTests/SettlementEventTests.cs | 1 - TransactionProcessor.DatabaseTests/StatementEventTests.cs | 1 - .../TransactionEventTests.cs | 1 - 12 files changed, 5 insertions(+), 22 deletions(-) create mode 100644 TransactionProcessor.DatabaseTests/AssemblyInfo.cs delete mode 100644 TransactionProcessor.DatabaseTests/DatabaseTestCollection.cs diff --git a/TransactionProcessor.DatabaseTests/AssemblyInfo.cs b/TransactionProcessor.DatabaseTests/AssemblyInfo.cs new file mode 100644 index 00000000..510229d4 --- /dev/null +++ b/TransactionProcessor.DatabaseTests/AssemblyInfo.cs @@ -0,0 +1,5 @@ +using Xunit; + +using TransactionProcessor.DatabaseTests; + +[assembly: AssemblyFixture(typeof(DatabaseTestFixture))] diff --git a/TransactionProcessor.DatabaseTests/ContractEventTests.cs b/TransactionProcessor.DatabaseTests/ContractEventTests.cs index cc9cfdc0..6f5b8133 100644 --- a/TransactionProcessor.DatabaseTests/ContractEventTests.cs +++ b/TransactionProcessor.DatabaseTests/ContractEventTests.cs @@ -13,7 +13,6 @@ namespace TransactionProcessor.DatabaseTests { - [Collection(DatabaseTestCollection.Name)] public class ReconciliationEventTests : BaseTest { public ReconciliationEventTests(DatabaseTestFixture fixture) : base(fixture) @@ -38,7 +37,6 @@ public async Task AddReconciliation_EventReplayHandled() { } } - [Collection(DatabaseTestCollection.Name)] public class ContractEventTests : BaseTest { public ContractEventTests(DatabaseTestFixture fixture) : base(fixture) diff --git a/TransactionProcessor.DatabaseTests/DatabaseTestCollection.cs b/TransactionProcessor.DatabaseTests/DatabaseTestCollection.cs deleted file mode 100644 index 5dda0911..00000000 --- a/TransactionProcessor.DatabaseTests/DatabaseTestCollection.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace TransactionProcessor.DatabaseTests -{ - public static class DatabaseTestCollection - { - public const string Name = "DatabaseTestCollection"; - } -} diff --git a/TransactionProcessor.DatabaseTests/DatabaseTestFixture.cs b/TransactionProcessor.DatabaseTests/DatabaseTestFixture.cs index 4ab5ce64..56a5e2c1 100644 --- a/TransactionProcessor.DatabaseTests/DatabaseTestFixture.cs +++ b/TransactionProcessor.DatabaseTests/DatabaseTestFixture.cs @@ -58,8 +58,4 @@ public override Task CreateSubscriptions() } } - [CollectionDefinition(DatabaseTestCollection.Name)] - public sealed class DatabaseTestCollectionDefinition : ICollectionFixture - { - } } diff --git a/TransactionProcessor.DatabaseTests/EstateEventTests.cs b/TransactionProcessor.DatabaseTests/EstateEventTests.cs index 4f89fc9a..f73cba1b 100644 --- a/TransactionProcessor.DatabaseTests/EstateEventTests.cs +++ b/TransactionProcessor.DatabaseTests/EstateEventTests.cs @@ -7,7 +7,6 @@ namespace TransactionProcessor.DatabaseTests; -[Collection(DatabaseTestCollection.Name)] public class MigrationTests : BaseTest { public MigrationTests(DatabaseTestFixture fixture) : base(fixture) { } @@ -24,7 +23,6 @@ public async Task CreateReadModel_EstateDatabaseIsMigrated() } } -[Collection(DatabaseTestCollection.Name)] public class EstateEventTests : BaseTest { public EstateEventTests(DatabaseTestFixture fixture) : base(fixture) { } diff --git a/TransactionProcessor.DatabaseTests/FileImportLogEventTests.cs b/TransactionProcessor.DatabaseTests/FileImportLogEventTests.cs index 510cb459..78885255 100644 --- a/TransactionProcessor.DatabaseTests/FileImportLogEventTests.cs +++ b/TransactionProcessor.DatabaseTests/FileImportLogEventTests.cs @@ -7,7 +7,6 @@ namespace TransactionProcessor.DatabaseTests; -[Collection(DatabaseTestCollection.Name)] public class FileImportLogEventTests : BaseTest { public FileImportLogEventTests(DatabaseTestFixture fixture) : base(fixture) { } diff --git a/TransactionProcessor.DatabaseTests/FloatEventTests.cs b/TransactionProcessor.DatabaseTests/FloatEventTests.cs index 21d5d8f6..02b5a70e 100644 --- a/TransactionProcessor.DatabaseTests/FloatEventTests.cs +++ b/TransactionProcessor.DatabaseTests/FloatEventTests.cs @@ -8,7 +8,6 @@ namespace TransactionProcessor.DatabaseTests; -[Collection(DatabaseTestCollection.Name)] public class FloatEventTests : BaseTest { public FloatEventTests(DatabaseTestFixture fixture) : base(fixture) { } diff --git a/TransactionProcessor.DatabaseTests/MerchantEventTests.cs b/TransactionProcessor.DatabaseTests/MerchantEventTests.cs index 22e54cb9..deca4c65 100644 --- a/TransactionProcessor.DatabaseTests/MerchantEventTests.cs +++ b/TransactionProcessor.DatabaseTests/MerchantEventTests.cs @@ -8,7 +8,6 @@ namespace TransactionProcessor.DatabaseTests; -[Collection(DatabaseTestCollection.Name)] public class MerchantEventTests : BaseTest { public MerchantEventTests(DatabaseTestFixture fixture) : base(fixture) { } diff --git a/TransactionProcessor.DatabaseTests/OperatorEventTests.cs b/TransactionProcessor.DatabaseTests/OperatorEventTests.cs index d478be15..5f8b774a 100644 --- a/TransactionProcessor.DatabaseTests/OperatorEventTests.cs +++ b/TransactionProcessor.DatabaseTests/OperatorEventTests.cs @@ -7,7 +7,6 @@ namespace TransactionProcessor.DatabaseTests; -[Collection(DatabaseTestCollection.Name)] public class OperatorEventTests : BaseTest { public OperatorEventTests(DatabaseTestFixture fixture) : base(fixture) { } diff --git a/TransactionProcessor.DatabaseTests/SettlementEventTests.cs b/TransactionProcessor.DatabaseTests/SettlementEventTests.cs index c69c4807..181e5135 100644 --- a/TransactionProcessor.DatabaseTests/SettlementEventTests.cs +++ b/TransactionProcessor.DatabaseTests/SettlementEventTests.cs @@ -8,7 +8,6 @@ namespace TransactionProcessor.DatabaseTests; -[Collection(DatabaseTestCollection.Name)] public class SettlementEventTests : BaseTest { public SettlementEventTests(DatabaseTestFixture fixture) : base(fixture) diff --git a/TransactionProcessor.DatabaseTests/StatementEventTests.cs b/TransactionProcessor.DatabaseTests/StatementEventTests.cs index decb0cf2..72365cdf 100644 --- a/TransactionProcessor.DatabaseTests/StatementEventTests.cs +++ b/TransactionProcessor.DatabaseTests/StatementEventTests.cs @@ -7,7 +7,6 @@ namespace TransactionProcessor.DatabaseTests; -[Collection(DatabaseTestCollection.Name)] public class StatementEventTests : BaseTest { public StatementEventTests(DatabaseTestFixture fixture) : base(fixture) { } diff --git a/TransactionProcessor.DatabaseTests/TransactionEventTests.cs b/TransactionProcessor.DatabaseTests/TransactionEventTests.cs index 19c9619d..799e6add 100644 --- a/TransactionProcessor.DatabaseTests/TransactionEventTests.cs +++ b/TransactionProcessor.DatabaseTests/TransactionEventTests.cs @@ -9,7 +9,6 @@ namespace TransactionProcessor.DatabaseTests; -[Collection(DatabaseTestCollection.Name)] public class TransactionEventTests : BaseTest { public TransactionEventTests(DatabaseTestFixture fixture) : base(fixture) { }