diff --git a/src/NetEvolve.Pulse/Dispatchers/PrioritizedEventDispatcher.cs b/src/NetEvolve.Pulse/Dispatchers/PrioritizedEventDispatcher.cs index 36c7554e..afa31f1b 100644 --- a/src/NetEvolve.Pulse/Dispatchers/PrioritizedEventDispatcher.cs +++ b/src/NetEvolve.Pulse/Dispatchers/PrioritizedEventDispatcher.cs @@ -16,7 +16,7 @@ /// /// Execution Behavior: /// Priority groups execute sequentially in ascending priority order. Within each group, handlers -/// execute in parallel using . +/// execute in parallel using . /// This ensures predictable ordering between groups while maximising throughput within each group. /// Error Handling: /// Individual handler failures do not prevent other handlers from executing, including handlers diff --git a/src/NetEvolve.Pulse/Interceptors/LoggingMessages.cs b/src/NetEvolve.Pulse/Interceptors/LoggingMessages.cs index 3c0b5e5e..f39297d8 100644 --- a/src/NetEvolve.Pulse/Interceptors/LoggingMessages.cs +++ b/src/NetEvolve.Pulse/Interceptors/LoggingMessages.cs @@ -1,4 +1,4 @@ -namespace NetEvolve.Pulse.Interceptors; +namespace NetEvolve.Pulse.Interceptors; using Microsoft.Extensions.Logging; @@ -58,7 +58,7 @@ internal static partial void LogErrorHandle( /// Logs the beginning of a stream query enumeration. /// /// - /// Emitted by LoggingStreamQueryInterceptor when enumeration of an starts. + /// Emitted by LoggingStreamQueryInterceptor when enumeration of an starts. /// [LoggerMessage(Message = "Streaming '{StreamQueryName}' (CorrelationId: {CorrelationId})")] internal static partial void LogBeginStreamQuery( @@ -72,7 +72,7 @@ internal static partial void LogBeginStreamQuery( /// Logs the successful completion of a stream query enumeration. /// /// - /// Emitted by LoggingStreamQueryInterceptor when an sequence is fully consumed. + /// Emitted by LoggingStreamQueryInterceptor when an sequence is fully consumed. /// [LoggerMessage(Message = "Streamed '{StreamQueryName}' in {ElapsedMs:F2}ms (CorrelationId: {CorrelationId})")] internal static partial void LogEndStreamQuery( @@ -87,7 +87,7 @@ internal static partial void LogEndStreamQuery( /// Logs a warning when a stream query exceeds the configured slow-stream threshold. /// /// - /// Emitted by LoggingStreamQueryInterceptor when an exceeds the slow threshold. + /// Emitted by LoggingStreamQueryInterceptor when an exceeds the slow threshold. /// [LoggerMessage( Level = LogLevel.Warning, @@ -105,7 +105,7 @@ internal static partial void LogSlowStreamQuery( /// Logs an error when a stream query fails during enumeration. /// /// - /// Emitted by LoggingStreamQueryInterceptor when an throws an exception. + /// Emitted by LoggingStreamQueryInterceptor when an throws an exception. /// [LoggerMessage( Level = LogLevel.Error, diff --git a/tests/NetEvolve.Pulse.Tests.Unit/ActivityMetricsExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/ActivityMetricsExtensionsTests.cs index f12cc2f0..f2e0040c 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/ActivityMetricsExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/ActivityMetricsExtensionsTests.cs @@ -1,9 +1,10 @@ -namespace NetEvolve.Pulse.Tests.Unit; +namespace NetEvolve.Pulse.Tests.Unit; using System; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Interceptors; using NetEvolve.Pulse.Internals; @@ -11,6 +12,7 @@ namespace NetEvolve.Pulse.Tests.Unit; using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("ActivityMetrics")] public sealed class ActivityMetricsExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/AspNetCore/EndpointRouteBuilderExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/AspNetCore/EndpointRouteBuilderExtensionsTests.cs index bc5b32db..814776e8 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/AspNetCore/EndpointRouteBuilderExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/AspNetCore/EndpointRouteBuilderExtensionsTests.cs @@ -1,12 +1,14 @@ -namespace NetEvolve.Pulse.Tests.Unit.AspNetCore; +namespace NetEvolve.Pulse.Tests.Unit.AspNetCore; using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using TUnit.Core; using PulseEndpoints = EndpointRouteBuilderExtensions; +[TestGroup("AspNetCore")] public sealed class EndpointRouteBuilderExtensionsTests { // Represents an undefined CommandHttpMethod value used to verify validation behaviour. diff --git a/tests/NetEvolve.Pulse.Tests.Unit/AssemblyScanningExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/AssemblyScanningExtensionsTests.cs index 1c0a9217..f62740cd 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/AssemblyScanningExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/AssemblyScanningExtensionsTests.cs @@ -4,9 +4,11 @@ using System.Reflection; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using TUnit.Core; +[TestGroup("AssemblyScanning")] public class AssemblyScanningExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/AzureServiceBus/AzureServiceBusExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/AzureServiceBus/AzureServiceBusExtensionsTests.cs index 25a3f837..1bb2ea64 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/AzureServiceBus/AzureServiceBusExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/AzureServiceBus/AzureServiceBusExtensionsTests.cs @@ -1,9 +1,10 @@ -namespace NetEvolve.Pulse.Tests.Unit.AzureServiceBus; +namespace NetEvolve.Pulse.Tests.Unit.AzureServiceBus; using Azure.Core; using Azure.Identity; using Azure.Messaging.ServiceBus; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; @@ -11,6 +12,7 @@ namespace NetEvolve.Pulse.Tests.Unit.AzureServiceBus; using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("AzureServiceBus")] public sealed class AzureServiceBusExtensionsTests { private const string FakeConnectionString = diff --git a/tests/NetEvolve.Pulse.Tests.Unit/AzureServiceBus/AzureServiceBusMessageTransportTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/AzureServiceBus/AzureServiceBusMessageTransportTests.cs index e6607bf9..b44b5229 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/AzureServiceBus/AzureServiceBusMessageTransportTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/AzureServiceBus/AzureServiceBusMessageTransportTests.cs @@ -1,4 +1,4 @@ -namespace NetEvolve.Pulse.Tests.Unit.AzureServiceBus; +namespace NetEvolve.Pulse.Tests.Unit.AzureServiceBus; using System.Collections.Generic; using System.Globalization; @@ -6,12 +6,14 @@ namespace NetEvolve.Pulse.Tests.Unit.AzureServiceBus; using System.Threading.Tasks; using Azure.Messaging.ServiceBus; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Outbox; using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("AzureServiceBus")] public sealed class AzureServiceBusMessageTransportTests { private const string FakeConnectionString = @@ -414,7 +416,7 @@ public override Task SendMessagesAsync( CancellationToken cancellationToken = default ) { - BatchedMessages.Add(messages.ToList()); + BatchedMessages.Add([.. messages]); return Task.CompletedTask; } diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Dapr/DaprExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Dapr/DaprExtensionsTests.cs index dfb039bb..559ee9b3 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Dapr/DaprExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Dapr/DaprExtensionsTests.cs @@ -6,6 +6,7 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; @@ -13,6 +14,7 @@ using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("Dapr")] public sealed class DaprExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Dapr/DaprMessageTransportTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Dapr/DaprMessageTransportTests.cs index 3c661b49..07775390 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Dapr/DaprMessageTransportTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Dapr/DaprMessageTransportTests.cs @@ -4,11 +4,13 @@ using System.Threading.Tasks; using global::Dapr.Client; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Outbox; using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("Dapr")] public sealed class DaprMessageTransportTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/ParallelEventDispatcherTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/ParallelEventDispatcherTests.cs index 1b6ba679..6a57ea8e 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/ParallelEventDispatcherTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/ParallelEventDispatcherTests.cs @@ -1,9 +1,11 @@ namespace NetEvolve.Pulse.Tests.Unit.Dispatchers; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Dispatchers; using NetEvolve.Pulse.Extensibility; using TUnit.Core; +[TestGroup("Dispatchers")] public class ParallelEventDispatcherTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/PrioritizedEventDispatcherTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/PrioritizedEventDispatcherTests.cs index e3cfc451..81cf9258 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/PrioritizedEventDispatcherTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/PrioritizedEventDispatcherTests.cs @@ -2,6 +2,7 @@ using System.Collections.Concurrent; using System.Threading.Tasks; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Dispatchers; using NetEvolve.Pulse.Extensibility; using TUnit.Core; @@ -9,6 +10,7 @@ /// /// Unit tests for . /// +[TestGroup("Dispatchers")] public class PrioritizedEventDispatcherTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/RateLimitedEventDispatcherTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/RateLimitedEventDispatcherTests.cs index dc8ddf31..c500cfa4 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/RateLimitedEventDispatcherTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/RateLimitedEventDispatcherTests.cs @@ -2,6 +2,7 @@ using System.Collections.Concurrent; using System.Threading.Tasks; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Dispatchers; using NetEvolve.Pulse.Extensibility; using TUnit.Core; @@ -9,6 +10,7 @@ /// /// Unit tests for . /// +[TestGroup("Dispatchers")] public class RateLimitedEventDispatcherTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/SequentialEventDispatcherTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/SequentialEventDispatcherTests.cs index 61529779..985a520a 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/SequentialEventDispatcherTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Dispatchers/SequentialEventDispatcherTests.cs @@ -1,9 +1,11 @@ namespace NetEvolve.Pulse.Tests.Unit.Dispatchers; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Dispatchers; using NetEvolve.Pulse.Extensibility; using TUnit.Core; +[TestGroup("Dispatchers")] public class SequentialEventDispatcherTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkEventOutboxTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkEventOutboxTests.cs index e9bbc514..ca3de877 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkEventOutboxTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkEventOutboxTests.cs @@ -4,11 +4,13 @@ using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("EntityFramework")] public sealed class EntityFrameworkEventOutboxTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkExtensionsTests.cs index dceb3651..12056704 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkExtensionsTests.cs @@ -1,4 +1,4 @@ -namespace NetEvolve.Pulse.Tests.Unit.EntityFramework; +namespace NetEvolve.Pulse.Tests.Unit.EntityFramework; using System; using System.Linq; @@ -6,6 +6,7 @@ namespace NetEvolve.Pulse.Tests.Unit.EntityFramework; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; @@ -13,6 +14,7 @@ namespace NetEvolve.Pulse.Tests.Unit.EntityFramework; using TUnit.Core; using TUnit.Mocks; +[TestGroup("EntityFramework")] public sealed class EntityFrameworkExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkOutboxManagementTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkOutboxManagementTests.cs index 60c6fc11..6d2a801e 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkOutboxManagementTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkOutboxManagementTests.cs @@ -3,11 +3,13 @@ using System; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("EntityFramework")] public sealed class EntityFrameworkOutboxManagementTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkOutboxRepositoryTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkOutboxRepositoryTests.cs index abd87c59..acd58224 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkOutboxRepositoryTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkOutboxRepositoryTests.cs @@ -3,9 +3,11 @@ using System; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("EntityFramework")] public sealed class EntityFrameworkOutboxRepositoryTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkOutboxTransactionScopeTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkOutboxTransactionScopeTests.cs index 9b140cf4..7131a197 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkOutboxTransactionScopeTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/EntityFrameworkOutboxTransactionScopeTests.cs @@ -3,9 +3,11 @@ using System; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("EntityFramework")] public sealed class EntityFrameworkOutboxTransactionScopeTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/ModelBuilderExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/ModelBuilderExtensionsTests.cs index 280851db..f60b383d 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/ModelBuilderExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/ModelBuilderExtensionsTests.cs @@ -3,10 +3,12 @@ using System; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse; using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("EntityFramework")] public sealed class ModelBuilderExtensionsTests { [Test] @@ -18,7 +20,7 @@ public async Task ApplyPulseConfiguration_When_modelBuilder_is_null_throws_Argum await using var context = new TestDbContext(options); _ = await Assert - .That(() => ModelBuilderExtensions.ApplyPulseConfiguration(null!, context)) + .That(() => ModelBuilderExtensions.ApplyPulseConfiguration(null!, context)) .Throws(); } diff --git a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/OutboxMessageConfigurationFactoryTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/OutboxMessageConfigurationFactoryTests.cs index a702188b..43c8365b 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/OutboxMessageConfigurationFactoryTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/OutboxMessageConfigurationFactoryTests.cs @@ -4,10 +4,12 @@ using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Configurations; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("EntityFramework")] public sealed class OutboxMessageConfigurationFactoryTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/OutboxMessageConfigurationMetadataTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/OutboxMessageConfigurationMetadataTests.cs index a95c3261..6afbfecd 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/OutboxMessageConfigurationMetadataTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/OutboxMessageConfigurationMetadataTests.cs @@ -5,10 +5,12 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("EntityFramework")] public sealed class OutboxMessageConfigurationMetadataTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/TypeValueConverterTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/TypeValueConverterTests.cs index 54dc1cc9..0768b4f8 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/TypeValueConverterTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/EntityFramework/TypeValueConverterTests.cs @@ -2,10 +2,12 @@ using System; using System.Threading.Tasks; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Configurations; using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("EntityFramework")] public sealed class TypeValueConverterTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/EventDispatcherExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/EventDispatcherExtensionsTests.cs index 58bf9753..575466e4 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/EventDispatcherExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/EventDispatcherExtensionsTests.cs @@ -1,9 +1,10 @@ -namespace NetEvolve.Pulse.Tests.Unit; +namespace NetEvolve.Pulse.Tests.Unit; using System; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Dispatchers; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Internals; @@ -11,6 +12,7 @@ namespace NetEvolve.Pulse.Tests.Unit; using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("Dispatchers")] public sealed class EventDispatcherExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/FluentValidation/FluentValidationExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/FluentValidation/FluentValidationExtensionsTests.cs index a1d83298..bf8fc192 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/FluentValidation/FluentValidationExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/FluentValidation/FluentValidationExtensionsTests.cs @@ -1,15 +1,17 @@ -namespace NetEvolve.Pulse.Tests.Unit.FluentValidation; +namespace NetEvolve.Pulse.Tests.Unit.FluentValidation; using System; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Interceptors; using TUnit.Assertions; using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("FluentValidation")] public sealed class FluentValidationExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/FluentValidation/Interceptors/FluentValidationRequestInterceptorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/FluentValidation/Interceptors/FluentValidationRequestInterceptorTests.cs index 5a9c2b87..126b3762 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/FluentValidation/Interceptors/FluentValidationRequestInterceptorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/FluentValidation/Interceptors/FluentValidationRequestInterceptorTests.cs @@ -1,4 +1,4 @@ -namespace NetEvolve.Pulse.Tests.Unit.FluentValidation.Interceptors; +namespace NetEvolve.Pulse.Tests.Unit.FluentValidation.Interceptors; using System; using System.Diagnostics.CodeAnalysis; @@ -6,12 +6,14 @@ namespace NetEvolve.Pulse.Tests.Unit.FluentValidation.Interceptors; using System.Threading.Tasks; using global::FluentValidation; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Interceptors; using TUnit.Assertions; using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("FluentValidation")] public sealed class FluentValidationRequestInterceptorTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/HandlerRegistrationExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/HandlerRegistrationExtensionsTests.cs index b5bfd161..d831261c 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/HandlerRegistrationExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/HandlerRegistrationExtensionsTests.cs @@ -3,9 +3,11 @@ using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using TUnit.Core; +[TestGroup("HandlerRegistration")] public class HandlerRegistrationExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/HttpCorrelationExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/HttpCorrelationExtensionsTests.cs index 75dbc8fa..8ad16746 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/HttpCorrelationExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/HttpCorrelationExtensionsTests.cs @@ -1,14 +1,16 @@ -namespace NetEvolve.Pulse.Tests.Unit.HttpCorrelation; +namespace NetEvolve.Pulse.Tests.Unit.HttpCorrelation; using System; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using TUnit.Assertions; using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("HttpCorrelation")] public sealed class HttpCorrelationExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/Interceptors/HttpCorrelationEventInterceptorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/Interceptors/HttpCorrelationEventInterceptorTests.cs index c83ceaa1..f5aff385 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/Interceptors/HttpCorrelationEventInterceptorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/Interceptors/HttpCorrelationEventInterceptorTests.cs @@ -1,10 +1,11 @@ -namespace NetEvolve.Pulse.Tests.Unit.HttpCorrelation.Interceptors; +namespace NetEvolve.Pulse.Tests.Unit.HttpCorrelation.Interceptors; using System; using System.Diagnostics.CodeAnalysis; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Http.Correlation.AspNetCore; using NetEvolve.Http.Correlation.TestGenerator; using NetEvolve.Pulse.Extensibility; @@ -18,6 +19,7 @@ namespace NetEvolve.Pulse.Tests.Unit.HttpCorrelation.Interceptors; "CA2000:Dispose objects before losing scope", Justification = "ServiceProvider instances are short-lived within test methods" )] +[TestGroup("HttpCorrelation")] public sealed class HttpCorrelationEventInterceptorTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/Interceptors/HttpCorrelationRequestInterceptorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/Interceptors/HttpCorrelationRequestInterceptorTests.cs index 2ea2f898..10dd212c 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/Interceptors/HttpCorrelationRequestInterceptorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/Interceptors/HttpCorrelationRequestInterceptorTests.cs @@ -1,10 +1,11 @@ -namespace NetEvolve.Pulse.Tests.Unit.HttpCorrelation.Interceptors; +namespace NetEvolve.Pulse.Tests.Unit.HttpCorrelation.Interceptors; using System; using System.Diagnostics.CodeAnalysis; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Http.Correlation.AspNetCore; using NetEvolve.Http.Correlation.TestGenerator; using NetEvolve.Pulse.Extensibility; @@ -18,6 +19,7 @@ namespace NetEvolve.Pulse.Tests.Unit.HttpCorrelation.Interceptors; "CA2000:Dispose objects before losing scope", Justification = "ServiceProvider instances are short-lived within test methods" )] +[TestGroup("HttpCorrelation")] public sealed class HttpCorrelationRequestInterceptorTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/Interceptors/HttpCorrelationStreamQueryInterceptorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/Interceptors/HttpCorrelationStreamQueryInterceptorTests.cs index 584582a7..badfe5ce 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/Interceptors/HttpCorrelationStreamQueryInterceptorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/HttpCorrelation/Interceptors/HttpCorrelationStreamQueryInterceptorTests.cs @@ -1,4 +1,4 @@ -namespace NetEvolve.Pulse.Tests.Unit.HttpCorrelation.Interceptors; +namespace NetEvolve.Pulse.Tests.Unit.HttpCorrelation.Interceptors; using System; using System.Collections.Generic; @@ -9,6 +9,7 @@ namespace NetEvolve.Pulse.Tests.Unit.HttpCorrelation.Interceptors; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Http.Correlation.Abstractions; using NetEvolve.Http.Correlation.AspNetCore; using NetEvolve.Http.Correlation.TestGenerator; @@ -23,6 +24,7 @@ namespace NetEvolve.Pulse.Tests.Unit.HttpCorrelation.Interceptors; "CA2000:Dispose objects before losing scope", Justification = "ServiceProvider instances are short-lived within test methods" )] +[TestGroup("HttpCorrelation")] public sealed class HttpCorrelationStreamQueryInterceptorTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/IdempotencyExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/IdempotencyExtensionsTests.cs index 31c77274..627782eb 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/IdempotencyExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/IdempotencyExtensionsTests.cs @@ -1,9 +1,10 @@ -namespace NetEvolve.Pulse.Tests.Unit; +namespace NetEvolve.Pulse.Tests.Unit; using System; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Idempotency; using NetEvolve.Pulse.Interceptors; @@ -12,6 +13,7 @@ namespace NetEvolve.Pulse.Tests.Unit; using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("Idempotency")] public sealed class IdempotencyExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/ActivityAndMetricsEventInterceptorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/ActivityAndMetricsEventInterceptorTests.cs index fc1de821..99f07a22 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/ActivityAndMetricsEventInterceptorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/ActivityAndMetricsEventInterceptorTests.cs @@ -1,10 +1,12 @@ namespace NetEvolve.Pulse.Tests.Unit.Interceptors; using System.Diagnostics; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Interceptors; using TUnit.Core; +[TestGroup("Interceptors")] public class ActivityAndMetricsEventInterceptorTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/ActivityAndMetricsRequestInterceptorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/ActivityAndMetricsRequestInterceptorTests.cs index 1dd92ecb..405da4fe 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/ActivityAndMetricsRequestInterceptorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/ActivityAndMetricsRequestInterceptorTests.cs @@ -1,10 +1,12 @@ namespace NetEvolve.Pulse.Tests.Unit.Interceptors; using System.Diagnostics; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Interceptors; using TUnit.Core; +[TestGroup("Interceptors")] public class ActivityAndMetricsRequestInterceptorTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/ActivityAndMetricsStreamQueryInterceptorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/ActivityAndMetricsStreamQueryInterceptorTests.cs index b84bb72f..13f80e38 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/ActivityAndMetricsStreamQueryInterceptorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/ActivityAndMetricsStreamQueryInterceptorTests.cs @@ -1,11 +1,13 @@ -namespace NetEvolve.Pulse.Tests.Unit.Interceptors; +namespace NetEvolve.Pulse.Tests.Unit.Interceptors; using System.Diagnostics; using System.Runtime.CompilerServices; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Interceptors; using TUnit.Core; +[TestGroup("Interceptors")] public class ActivityAndMetricsStreamQueryInterceptorTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/DistributedCacheQueryInterceptorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/DistributedCacheQueryInterceptorTests.cs index 2be5d867..a38d0357 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/DistributedCacheQueryInterceptorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/DistributedCacheQueryInterceptorTests.cs @@ -4,11 +4,13 @@ using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Caching; using NetEvolve.Pulse.Interceptors; using TUnit.Core; +[TestGroup("Interceptors")] public class DistributedCacheQueryInterceptorTests { private static IOptions DefaultOptions => Options.Create(new QueryCachingOptions()); diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/IdempotencyCommandInterceptorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/IdempotencyCommandInterceptorTests.cs index d0033a8d..51793f76 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/IdempotencyCommandInterceptorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/IdempotencyCommandInterceptorTests.cs @@ -4,6 +4,7 @@ namespace NetEvolve.Pulse.Tests.Unit.Interceptors; using System.Diagnostics.CodeAnalysis; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Idempotency; using NetEvolve.Pulse.Idempotency; @@ -17,6 +18,7 @@ namespace NetEvolve.Pulse.Tests.Unit.Interceptors; "CA2000:Dispose objects before losing scope", Justification = "ServiceProvider instances are short-lived within test methods" )] +[TestGroup("Interceptors")] public sealed class IdempotencyCommandInterceptorTests { [Test] @@ -213,8 +215,6 @@ await interceptor _ = await Assert.That(store.StoreCallCount).IsEqualTo(0); } - #region Test Types - private sealed record TestCommand : IIdempotentCommand { public string? CorrelationId { get; set; } @@ -249,6 +249,4 @@ public Task StoreAsync(string idempotencyKey, CancellationToken cancellationToke return Task.CompletedTask; } } - - #endregion } diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/LoggingEventInterceptorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/LoggingEventInterceptorTests.cs index 9364dbbc..06c7ce92 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/LoggingEventInterceptorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/LoggingEventInterceptorTests.cs @@ -3,11 +3,13 @@ using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Interceptors; using TUnit.Core; using TUnit.Mocks; +[TestGroup("Interceptors")] public class LoggingEventInterceptorTests { private static LoggingEventInterceptor CreateInterceptor( diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/LoggingInterceptorOptionsValidatorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/LoggingInterceptorOptionsValidatorTests.cs index afbbc1b3..10e88d59 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/LoggingInterceptorOptionsValidatorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/LoggingInterceptorOptionsValidatorTests.cs @@ -1,9 +1,11 @@ -namespace NetEvolve.Pulse.Tests.Unit.Interceptors; +namespace NetEvolve.Pulse.Tests.Unit.Interceptors; using System.Threading.Tasks; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Interceptors; using TUnit.Core; +[TestGroup("Interceptors")] public class LoggingInterceptorOptionsValidatorTests { private static readonly LoggingInterceptorOptionsValidator _validator = new(); diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/LoggingRequestInterceptorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/LoggingRequestInterceptorTests.cs index 7b61661c..66f6d23a 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/LoggingRequestInterceptorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/LoggingRequestInterceptorTests.cs @@ -3,11 +3,13 @@ using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Interceptors; using TUnit.Core; using TUnit.Mocks; +[TestGroup("Interceptors")] public class LoggingRequestInterceptorTests { private static LoggingRequestInterceptor CreateInterceptor( diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/TimeoutRequestInterceptorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/TimeoutRequestInterceptorTests.cs index 04b21dad..88bfa937 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/TimeoutRequestInterceptorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Interceptors/TimeoutRequestInterceptorTests.cs @@ -1,13 +1,15 @@ -namespace NetEvolve.Pulse.Tests.Unit.Interceptors; +namespace NetEvolve.Pulse.Tests.Unit.Interceptors; using System; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Interceptors; using TUnit.Core; +[TestGroup("Interceptors")] public sealed class TimeoutRequestInterceptorTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Internals/MediatorBuilderTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Internals/MediatorBuilderTests.cs index 94ff4cb9..b1fddbfe 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Internals/MediatorBuilderTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Internals/MediatorBuilderTests.cs @@ -1,10 +1,12 @@ -namespace NetEvolve.Pulse.Tests.Unit.Internals; +namespace NetEvolve.Pulse.Tests.Unit.Internals; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Internals; using TUnit.Core; +[TestGroup("Internals")] public class MediatorBuilderTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Internals/PulseMediatorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Internals/PulseMediatorTests.cs index ab6eb558..48c058c5 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Internals/PulseMediatorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Internals/PulseMediatorTests.cs @@ -4,10 +4,12 @@ using System.Runtime.CompilerServices; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Internals; using TUnit.Core; +[TestGroup("Internals")] public class PulseMediatorTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Kafka/KafkaExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Kafka/KafkaExtensionsTests.cs index 6c0316ea..c4143ed6 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Kafka/KafkaExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Kafka/KafkaExtensionsTests.cs @@ -1,6 +1,7 @@ -namespace NetEvolve.Pulse.Tests.Unit.Kafka; +namespace NetEvolve.Pulse.Tests.Unit.Kafka; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; @@ -8,6 +9,7 @@ namespace NetEvolve.Pulse.Tests.Unit.Kafka; using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("Kafka")] public sealed class KafkaExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Kafka/KafkaMessageTransportTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Kafka/KafkaMessageTransportTests.cs index 3400ec69..8da5b922 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Kafka/KafkaMessageTransportTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Kafka/KafkaMessageTransportTests.cs @@ -1,4 +1,4 @@ -namespace NetEvolve.Pulse.Tests.Unit.Kafka; +namespace NetEvolve.Pulse.Tests.Unit.Kafka; using System; using System.Collections.Generic; @@ -8,12 +8,14 @@ namespace NetEvolve.Pulse.Tests.Unit.Kafka; using System.Threading.Tasks; using Confluent.Kafka; using Confluent.Kafka.Admin; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Outbox; using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("Kafka")] public sealed class KafkaMessageTransportTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/LoggingExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/LoggingExtensionsTests.cs index 6ecbaaeb..5d09e6b4 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/LoggingExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/LoggingExtensionsTests.cs @@ -1,13 +1,15 @@ -namespace NetEvolve.Pulse.Tests.Unit; +namespace NetEvolve.Pulse.Tests.Unit; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Interceptors; using NetEvolve.Pulse.Internals; using TUnit.Core; +[TestGroup("Logging")] public class LoggingExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Outbox/ExponentialBackoffTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Outbox/ExponentialBackoffTests.cs index c783a450..608fc66e 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Outbox/ExponentialBackoffTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Outbox/ExponentialBackoffTests.cs @@ -1,5 +1,6 @@ namespace NetEvolve.Pulse.Tests.Unit.Outbox; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Outbox; using TUnit.Core; @@ -7,10 +8,9 @@ namespace NetEvolve.Pulse.Tests.Unit.Outbox; /// Unit tests for exponential backoff calculation in . /// Tests backoff formula, jitter application, and delay clamping. /// +[TestGroup("Outbox")] public sealed class ExponentialBackoffTests { - #region Backoff Calculation Tests - [Test] [Arguments(0, 5)] [Arguments(1, 10)] @@ -127,10 +127,6 @@ public async Task ComputeNextRetryAt_WithZeroRetryCount_UsesBaseDelay() _ = await Assert.That((nextRetryAt - expectedTime).TotalMilliseconds).IsGreaterThanOrEqualTo(-100); } - #endregion - - #region Configuration Validation Tests - [Test] public async Task OutboxProcessorOptions_HasCorrectDefaults() { @@ -162,10 +158,6 @@ public async Task OutboxProcessorOptions_CanConfigureCustomValues() _ = await Assert.That(options.AddJitter).IsFalse(); } - #endregion - - #region Edge Cases - [Test] public async Task ComputeNextRetryAt_WithLargeRetryCount_DoesNotOverflow() { @@ -210,6 +202,4 @@ public async Task ComputeNextRetryAt_WithBaseDelayGreaterThanMax_ClampsCorrectly _ = await Assert.That((nextRetryAt - expectedTime).TotalMilliseconds).IsLessThanOrEqualTo(100); _ = await Assert.That((nextRetryAt - expectedTime).TotalMilliseconds).IsGreaterThanOrEqualTo(-100); } - - #endregion } diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Outbox/InMemoryMessageTransportTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Outbox/InMemoryMessageTransportTests.cs index 69ca8e08..abb7526a 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Outbox/InMemoryMessageTransportTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Outbox/InMemoryMessageTransportTests.cs @@ -1,8 +1,9 @@ -namespace NetEvolve.Pulse.Tests.Unit.Outbox; +namespace NetEvolve.Pulse.Tests.Unit.Outbox; using System.Collections.Generic; using System.Text.Json; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Outbox; @@ -12,10 +13,9 @@ /// Unit tests for . /// Tests constructor validation, event deserialization, and mediator dispatch. /// +[TestGroup("Outbox")] public sealed class InMemoryMessageTransportTests { - #region Constructor Tests - [Test] public async Task Constructor_WithNullMediator_ThrowsArgumentNullException() { @@ -48,10 +48,6 @@ public async Task Constructor_WithValidParameters_CreatesInstance() _ = await Assert.That(transport).IsNotNull(); } - #endregion - - #region SendAsync Tests - [Test] public async Task SendAsync_WithNullMessage_ThrowsArgumentNullException() { @@ -197,10 +193,6 @@ public async Task SendAsync_WhenMediatorThrows_PropagatesException() } } - #endregion - - #region Helper Methods - private static OutboxMessage CreateOutboxMessage(TestTransportEvent @event) { var payload = JsonSerializer.Serialize(@event, @event.GetType()); @@ -217,10 +209,6 @@ private static OutboxMessage CreateOutboxMessage(TestTransportEvent @event) }; } - #endregion - - #region Test Doubles - #pragma warning disable CS8767 // Nullability of reference types in type of parameter doesn't match private sealed class TestMediator : IMediator { @@ -309,6 +297,4 @@ private sealed class NonEventClass { public string Value { get; set; } = string.Empty; } - - #endregion } diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxEventHandlerTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxEventHandlerTests.cs index bb5c47ee..6cc46066 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxEventHandlerTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxEventHandlerTests.cs @@ -1,6 +1,7 @@ namespace NetEvolve.Pulse.Tests.Unit.Outbox; using System.Threading.Tasks; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Outbox; @@ -10,10 +11,9 @@ namespace NetEvolve.Pulse.Tests.Unit.Outbox; /// Unit tests for . /// Tests outbox delegation and in-process event exclusion semantics. /// +[TestGroup("Outbox")] public sealed class OutboxEventHandlerTests { - #region HandleAsync Tests - [Test] public async Task HandleAsync_WithRegularEvent_StoresEventInOutbox() { @@ -83,10 +83,6 @@ public async Task HandleAsync_WithCancelledToken_PropagatesCancellation() _ = await Assert.That(() => handler.HandleAsync(@event, cts.Token)).Throws(); } - #endregion - - #region Test Doubles - private sealed class TrackingEventOutbox : IEventOutbox { public List StoredEvents { get; } = []; @@ -123,6 +119,4 @@ private sealed class TestOptOutInProcessEvent : IEventInProcess public DateTimeOffset? PublishedAt { get; set; } public bool HandleInProcess => false; } - - #endregion } diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxExtensionsTests.cs index 3cc31ca5..e713c62f 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxExtensionsTests.cs @@ -1,9 +1,10 @@ -namespace NetEvolve.Pulse.Tests.Unit.Outbox; +namespace NetEvolve.Pulse.Tests.Unit.Outbox; using System; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Internals; @@ -16,6 +17,7 @@ namespace NetEvolve.Pulse.Tests.Unit.Outbox; /// Unit tests for . /// Tests service registration including the open-generic . /// +[TestGroup("Outbox")] public sealed class OutboxExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxProcessorHostedServiceTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxProcessorHostedServiceTests.cs index 6bde5a1f..19539579 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxProcessorHostedServiceTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxProcessorHostedServiceTests.cs @@ -1,9 +1,10 @@ -namespace NetEvolve.Pulse.Tests.Unit.Outbox; +namespace NetEvolve.Pulse.Tests.Unit.Outbox; using System.Diagnostics.Metrics; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Outbox; @@ -13,10 +14,9 @@ /// Unit tests for . /// Tests constructor validation, message processing logic, and error handling. /// +[TestGroup("Outbox")] public sealed class OutboxProcessorHostedServiceTests { - #region Constructor Tests - [Test] public async Task Constructor_WithNullRepository_ThrowsArgumentNullException() { @@ -86,10 +86,6 @@ public async Task Constructor_WithValidParameters_CreatesInstance() _ = await Assert.That(service).IsNotNull(); } - #endregion - - #region StartAsync/StopAsync Tests - [Test] public async Task StartAsync_WithCancellationToken_StartsProcessing() { @@ -134,10 +130,6 @@ public async Task StopAsync_WhenRunning_StopsGracefully() _ = await Assert.That(repository.GetPendingCallCount).IsGreaterThanOrEqualTo(1); } - #endregion - - #region Message Processing Tests - [Test] public async Task ExecuteAsync_WithPendingMessages_ProcessesAndCompletesMessages() { @@ -222,10 +214,6 @@ public async Task ExecuteAsync_WithNoMessages_WaitsForPollingInterval() _ = await Assert.That(repository.GetPendingCallCount).IsGreaterThanOrEqualTo(2); } - #endregion - - #region Error Handling Tests - [Test] public async Task ExecuteAsync_WithTransportFailure_MarksMessageAsFailed() { @@ -304,10 +292,6 @@ public async Task ExecuteAsync_WithTransientFailure_RetriesAndSucceeds() _ = await Assert.That(repository.CompletedMessageIds).Contains(message.Id); } - #endregion - - #region Batch Processing Tests - [Test] public async Task ExecuteAsync_WithBatchSendingEnabled_SendsInBatch() { @@ -406,10 +390,6 @@ public async Task ExecuteAsync_WithBatchSize_RespectsLimit() _ = await Assert.That(repository.LastBatchSizeRequested).IsEqualTo(2); } - #endregion - - #region Per-Event-Type Override Tests - [Test] public async Task ExecuteAsync_WithPerEventTypeMaxRetryCount_UsesOverrideForMatchingEventType() { @@ -620,10 +600,6 @@ public async Task OutboxEventTypeOptions_WithNullOverrideProperties_FallsBackToG } } - #endregion - - #region Metrics Tests - [Test] [NotInParallel("OutboxMetrics")] public async Task ExecuteAsync_WithPendingMessages_RecordsProcessedMetric() @@ -862,10 +838,6 @@ public async Task ExecuteAsync_WithPendingMessages_ObservableGaugeReflectsPendin } } - #endregion - - #region Exponential Backoff Tests - [Test] public async Task ExecuteAsync_WithExponentialBackoffEnabled_SetsNextRetryAt() { @@ -1028,10 +1000,6 @@ public async Task GetFailedForRetryAsync_WithPastNextRetryAt_IncludesMessage() _ = await Assert.That(failedForRetry.Count).IsEqualTo(1); } - #endregion - - #region Helper Methods - private static ILogger CreateLogger() => new ServiceCollection() .AddLogging() @@ -1049,10 +1017,6 @@ private static OutboxMessage CreateMessage(Type? eventType = null) => Status = OutboxMessageStatus.Pending, }; - #endregion - - #region Test Doubles - private sealed class InMemoryOutboxRepository : IOutboxRepository { internal readonly List _messages = []; @@ -1349,6 +1313,4 @@ private sealed record OtherEvent : IEvent public string Id { get; init; } = Guid.NewGuid().ToString(); public DateTimeOffset? PublishedAt { get; set; } } - - #endregion } diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxStatisticsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxStatisticsTests.cs index 57fd02c7..1f64f114 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxStatisticsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Outbox/OutboxStatisticsTests.cs @@ -1,8 +1,10 @@ -namespace NetEvolve.Pulse.Tests.Unit.Outbox; +namespace NetEvolve.Pulse.Tests.Unit.Outbox; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility.Outbox; using TUnit.Core; +[TestGroup("Outbox")] public sealed class OutboxStatisticsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Polly/Interceptors/PollyEventInterceptorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Polly/Interceptors/PollyEventInterceptorTests.cs index 56b21b5d..395b98cc 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Polly/Interceptors/PollyEventInterceptorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Polly/Interceptors/PollyEventInterceptorTests.cs @@ -7,6 +7,7 @@ using global::Polly.CircuitBreaker; using global::Polly.Retry; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Interceptors; using TUnit.Assertions; @@ -18,6 +19,7 @@ "CA2000:Dispose objects before losing scope", Justification = "ServiceProvider instances are short-lived within test methods" )] +[TestGroup("Polly")] public sealed class PollyEventInterceptorTests { private static ServiceProvider CreateServiceProvider( @@ -113,7 +115,7 @@ public async Task HandleAsync_WithSuccessfulHandler_CompletesSuccessfully() await interceptor .HandleAsync( message, - (evt, _) => + (_, _) => { handlerCalled = true; return Task.CompletedTask; @@ -149,7 +151,7 @@ public async Task HandleAsync_WithRetryPolicy_RetriesOnFailure() await interceptor .HandleAsync( message, - (evt, _) => + (_, _) => { attemptCount++; if (attemptCount < 3) @@ -191,7 +193,7 @@ public async Task HandleAsync_WithRetryPolicyExhausted_ThrowsException() await interceptor .HandleAsync( message, - (evt, _) => + (_, _) => { attemptCount++; throw new InvalidOperationException("Persistent failure"); @@ -231,7 +233,7 @@ public async Task HandleAsync_WithCombinedPolicies_ExecutesInOrder() await interceptor .HandleAsync( message, - (evt, _) => + (_, _) => { attemptCount++; if (attemptCount < 2) @@ -274,7 +276,7 @@ public async Task HandleAsync_WithCircuitBreaker_BlocksAfterFailureThreshold() await interceptor .HandleAsync( message, - (evt, _) => + (_, _) => { attemptCount++; throw new InvalidOperationException("Failure"); @@ -289,7 +291,7 @@ await interceptor await interceptor .HandleAsync( message, - (evt, _) => + (_, _) => { attemptCount++; throw new InvalidOperationException("Failure"); @@ -302,7 +304,7 @@ await interceptor // Circuit should be open now, next request should be rejected immediately _ = await Assert .That(async () => - await interceptor.HandleAsync(message, (evt, _) => Task.CompletedTask).ConfigureAwait(false) + await interceptor.HandleAsync(message, (_, _) => Task.CompletedTask).ConfigureAwait(false) ) .Throws(); diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Polly/Interceptors/PollyRequestInterceptorTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Polly/Interceptors/PollyRequestInterceptorTests.cs index 4f03d2fd..c0cb6f36 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Polly/Interceptors/PollyRequestInterceptorTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Polly/Interceptors/PollyRequestInterceptorTests.cs @@ -7,6 +7,7 @@ using global::Polly.CircuitBreaker; using global::Polly.Retry; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Interceptors; using TUnit.Assertions; @@ -18,6 +19,7 @@ "CA2000:Dispose objects before losing scope", Justification = "ServiceProvider instances are short-lived within test methods" )] +[TestGroup("Polly")] public sealed class PollyRequestInterceptorTests { private static ServiceProvider CreateServiceProvider( diff --git a/tests/NetEvolve.Pulse.Tests.Unit/Polly/PollyExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/Polly/PollyExtensionsTests.cs index 71274a06..70d7e0c1 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/Polly/PollyExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/Polly/PollyExtensionsTests.cs @@ -1,4 +1,4 @@ -namespace NetEvolve.Pulse.Tests.Unit.Polly; +namespace NetEvolve.Pulse.Tests.Unit.Polly; using System; using System.Linq; @@ -6,6 +6,7 @@ namespace NetEvolve.Pulse.Tests.Unit.Polly; using global::Polly; using global::Polly.Retry; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse; using NetEvolve.Pulse.Extensibility; using TUnit.Assertions; @@ -13,6 +14,7 @@ namespace NetEvolve.Pulse.Tests.Unit.Polly; using TUnit.Core; using TUnit.Mocks; +[TestGroup("Polly")] public sealed class PollyExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlEventOutboxTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlEventOutboxTests.cs index 3713de54..da7d3792 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlEventOutboxTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlEventOutboxTests.cs @@ -3,12 +3,14 @@ using System; using System.Threading.Tasks; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Outbox; using Npgsql; using TUnit.Core; +[TestGroup("PostgreSql")] public sealed class PostgreSqlEventOutboxTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlExtensionsTests.cs index 57562592..929bf307 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlExtensionsTests.cs @@ -1,10 +1,11 @@ -namespace NetEvolve.Pulse.Tests.Unit.PostgreSql; +namespace NetEvolve.Pulse.Tests.Unit.PostgreSql; using System; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; @@ -12,6 +13,7 @@ namespace NetEvolve.Pulse.Tests.Unit.PostgreSql; using TUnit.Core; using TUnit.Mocks; +[TestGroup("PostgreSql")] public sealed class PostgreSqlExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxManagementTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxManagementTests.cs index e5f822aa..8e00fbd6 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxManagementTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxManagementTests.cs @@ -3,9 +3,11 @@ using System; using System.Threading.Tasks; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("PostgreSql")] public sealed class PostgreSqlOutboxManagementTests { private const string ValidConnectionString = "Host=localhost;Database=Test;Username=postgres;Password=secret;"; diff --git a/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxOptionsExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxOptionsExtensionsTests.cs index 706bc8fb..958e96f9 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxOptionsExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxOptionsExtensionsTests.cs @@ -1,11 +1,13 @@ namespace NetEvolve.Pulse.Tests.Unit.PostgreSql; using System.Threading.Tasks; +using NetEvolve.Extensions.TUnit; using TUnit.Assertions.Extensions; using TUnit.Core; -using static global::NetEvolve.Pulse.Outbox.PostgreSqlOutboxOptionsExtensions; -using OutboxOptions = global::NetEvolve.Pulse.Outbox.OutboxOptions; +using static NetEvolve.Pulse.Outbox.PostgreSqlOutboxOptionsExtensions; +using OutboxOptions = Pulse.Outbox.OutboxOptions; +[TestGroup("PostgreSql")] public sealed class PostgreSqlOutboxOptionsExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxRepositoryTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxRepositoryTests.cs index 9a00ee57..f908e730 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxRepositoryTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxRepositoryTests.cs @@ -3,9 +3,11 @@ using System; using System.Threading.Tasks; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("PostgreSql")] public sealed class PostgreSqlOutboxRepositoryTests { private const string ValidConnectionString = "Host=localhost;Database=Test;Username=postgres;Password=secret;"; diff --git a/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxTransactionScopeTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxTransactionScopeTests.cs index 6b469550..39d0ad1c 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxTransactionScopeTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/PostgreSql/PostgreSqlOutboxTransactionScopeTests.cs @@ -1,9 +1,11 @@ namespace NetEvolve.Pulse.Tests.Unit.PostgreSql; using System.Threading.Tasks; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("PostgreSql")] public sealed class PostgreSqlOutboxTransactionScopeTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/QueryCachingExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/QueryCachingExtensionsTests.cs index a30177f6..4531aa94 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/QueryCachingExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/QueryCachingExtensionsTests.cs @@ -5,6 +5,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Caching; using NetEvolve.Pulse.Interceptors; @@ -13,6 +14,7 @@ using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("QueryCaching")] public sealed class QueryCachingExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/RabbitMQ/RabbitMqExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/RabbitMQ/RabbitMqExtensionsTests.cs index c1b513bb..50ed0d60 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/RabbitMQ/RabbitMqExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/RabbitMQ/RabbitMqExtensionsTests.cs @@ -1,12 +1,14 @@ -namespace NetEvolve.Pulse.Tests.Unit.RabbitMQ; +namespace NetEvolve.Pulse.Tests.Unit.RabbitMQ; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Outbox; using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("RabbitMQ")] public sealed class RabbitMqExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/RabbitMQ/RabbitMqMessageTransportTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/RabbitMQ/RabbitMqMessageTransportTests.cs index 36f0cf3a..181931e0 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/RabbitMQ/RabbitMqMessageTransportTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/RabbitMQ/RabbitMqMessageTransportTests.cs @@ -1,8 +1,9 @@ -namespace NetEvolve.Pulse.Tests.Unit.RabbitMQ; +namespace NetEvolve.Pulse.Tests.Unit.RabbitMQ; using System.Text; using global::RabbitMQ.Client; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Internals; @@ -10,6 +11,7 @@ namespace NetEvolve.Pulse.Tests.Unit.RabbitMQ; using TUnit.Assertions.Extensions; using TUnit.Core; +[TestGroup("RabbitMQ")] public sealed class RabbitMqMessageTransportTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteEventOutboxTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteEventOutboxTests.cs index 9bf480e3..a18fb5f7 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteEventOutboxTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteEventOutboxTests.cs @@ -1,4 +1,4 @@ -namespace NetEvolve.Pulse.Tests.Unit.SQLite; +namespace NetEvolve.Pulse.Tests.Unit.SQLite; using System; using System.Reflection; @@ -6,11 +6,13 @@ namespace NetEvolve.Pulse.Tests.Unit.SQLite; using System.Threading.Tasks; using Microsoft.Data.Sqlite; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("SQLite")] public sealed class SQLiteEventOutboxTests { [Test] @@ -216,7 +218,7 @@ private static IEvent CreateLongTypeEvent() typeName, TypeAttributes.Public | TypeAttributes.Class | TypeAttributes.Sealed, typeof(object), - new[] { typeof(IEvent) } + [typeof(IEvent)] ); var idField = typeBuilder.DefineField("_id", typeof(string), FieldAttributes.Private); @@ -276,7 +278,7 @@ Type propertyType | MethodAttributes.SpecialName | MethodAttributes.HideBySig, null, - new[] { propertyType } + [propertyType] ); var setIl = setMethod.GetILGenerator(); setIl.Emit(OpCodes.Ldarg_0); diff --git a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteExtensionsTests.cs index c2944a10..9f29d44b 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteExtensionsTests.cs @@ -1,10 +1,11 @@ -namespace NetEvolve.Pulse.Tests.Unit.SQLite; +namespace NetEvolve.Pulse.Tests.Unit.SQLite; using System; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; @@ -12,6 +13,7 @@ namespace NetEvolve.Pulse.Tests.Unit.SQLite; using TUnit.Core; using TUnit.Mocks; +[TestGroup("SQLite")] public sealed class SQLiteExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxManagementDatabaseTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxManagementDatabaseTests.cs index 1cf7d236..de6d06cf 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxManagementDatabaseTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxManagementDatabaseTests.cs @@ -1,9 +1,10 @@ -namespace NetEvolve.Pulse.Tests.Unit.SQLite; +namespace NetEvolve.Pulse.Tests.Unit.SQLite; using System; using System.Threading.Tasks; using Microsoft.Data.Sqlite; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Outbox; @@ -12,6 +13,7 @@ namespace NetEvolve.Pulse.Tests.Unit.SQLite; /// /// Database-focused tests for using an in-memory SQLite database. /// +[TestGroup("SQLite")] public sealed class SQLiteOutboxManagementDatabaseTests : IAsyncDisposable { private readonly string _dbIdentifier = $"mgmt_{Guid.NewGuid():N}"; diff --git a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxManagementTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxManagementTests.cs index 179f603f..26757952 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxManagementTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxManagementTests.cs @@ -1,11 +1,13 @@ -namespace NetEvolve.Pulse.Tests.Unit.SQLite; +namespace NetEvolve.Pulse.Tests.Unit.SQLite; using System; using System.Threading.Tasks; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("SQLite")] public sealed class SQLiteOutboxManagementTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxOptionsExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxOptionsExtensionsTests.cs index 1c0d739a..9ea899c9 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxOptionsExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxOptionsExtensionsTests.cs @@ -1,11 +1,13 @@ namespace NetEvolve.Pulse.Tests.Unit.SQLite; using System.Threading.Tasks; +using NetEvolve.Extensions.TUnit; using TUnit.Assertions.Extensions; using TUnit.Core; -using static global::NetEvolve.Pulse.Outbox.OutboxOptionsExtensions; -using OutboxOptions = global::NetEvolve.Pulse.Outbox.OutboxOptions; +using static NetEvolve.Pulse.Outbox.OutboxOptionsExtensions; +using OutboxOptions = Pulse.Outbox.OutboxOptions; +[TestGroup("SQLite")] public sealed class OutboxOptionsExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxRepositoryDatabaseTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxRepositoryDatabaseTests.cs index aa8a8bf1..91bf8000 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxRepositoryDatabaseTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxRepositoryDatabaseTests.cs @@ -1,9 +1,10 @@ -namespace NetEvolve.Pulse.Tests.Unit.SQLite; +namespace NetEvolve.Pulse.Tests.Unit.SQLite; using System; using System.Threading.Tasks; using Microsoft.Data.Sqlite; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Outbox; @@ -12,6 +13,7 @@ namespace NetEvolve.Pulse.Tests.Unit.SQLite; /// /// Database-level unit tests for using an in-memory SQLite database. /// +[TestGroup("SQLite")] public sealed class SQLiteOutboxRepositoryDatabaseTests : IAsyncDisposable { // Named shared in-memory database - unique per test instance diff --git a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxRepositoryTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxRepositoryTests.cs index c26418a2..188586c7 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxRepositoryTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxRepositoryTests.cs @@ -1,11 +1,13 @@ -namespace NetEvolve.Pulse.Tests.Unit.SQLite; +namespace NetEvolve.Pulse.Tests.Unit.SQLite; using System; using System.Threading.Tasks; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("SQLite")] public sealed class SQLiteOutboxRepositoryTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxTransactionScopeTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxTransactionScopeTests.cs index a1c9f28c..4ca77221 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxTransactionScopeTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/SQLite/SQLiteOutboxTransactionScopeTests.cs @@ -1,9 +1,11 @@ -namespace NetEvolve.Pulse.Tests.Unit.SQLite; +namespace NetEvolve.Pulse.Tests.Unit.SQLite; using System.Threading.Tasks; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("SQLite")] public sealed class SQLiteOutboxTransactionScopeTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/ServiceCollectionExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/ServiceCollectionExtensionsTests.cs index b9070f43..68d68cac 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/ServiceCollectionExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/ServiceCollectionExtensionsTests.cs @@ -2,11 +2,13 @@ using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Interceptors; using NetEvolve.Pulse.Internals; using TUnit.Core; +[TestGroup("ServiceCollection")] public class ServiceCollectionExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerEventOutboxTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerEventOutboxTests.cs index 55b804d7..79cb4727 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerEventOutboxTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerEventOutboxTests.cs @@ -4,11 +4,13 @@ using System.Threading.Tasks; using Microsoft.Data.SqlClient; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("SqlServer")] public sealed class SqlServerEventOutboxTests { [Test] @@ -20,7 +22,7 @@ public async Task Constructor_WithNullConnection_ThrowsArgumentNullException() = [Test] public async Task Constructor_WithNullOptions_ThrowsArgumentNullException() { - using var connection = new SqlConnection("Server=.;Encrypt=true;"); + await using var connection = new SqlConnection("Server=.;Encrypt=true;"); _ = await Assert .That(() => new SqlServerEventOutbox(connection, null!, TimeProvider.System)) @@ -30,7 +32,7 @@ public async Task Constructor_WithNullOptions_ThrowsArgumentNullException() [Test] public async Task Constructor_WithNullTimeProvider_ThrowsArgumentNullException() { - using var connection = new SqlConnection("Server=.;Encrypt=true;"); + await using var connection = new SqlConnection("Server=.;Encrypt=true;"); _ = await Assert .That(() => new SqlServerEventOutbox(connection, Options.Create(new OutboxOptions()), null!)) @@ -40,7 +42,7 @@ public async Task Constructor_WithNullTimeProvider_ThrowsArgumentNullException() [Test] public async Task Constructor_WithValidArguments_CreatesInstance() { - using var connection = new SqlConnection("Server=.;Encrypt=true;"); + await using var connection = new SqlConnection("Server=.;Encrypt=true;"); var outbox = new SqlServerEventOutbox(connection, Options.Create(new OutboxOptions()), TimeProvider.System); @@ -50,7 +52,7 @@ public async Task Constructor_WithValidArguments_CreatesInstance() [Test] public async Task Constructor_WithTransaction_CreatesInstance() { - using var connection = new SqlConnection("Server=.;Encrypt=true;"); + await using var connection = new SqlConnection("Server=.;Encrypt=true;"); var outbox = new SqlServerEventOutbox( connection, @@ -65,7 +67,7 @@ public async Task Constructor_WithTransaction_CreatesInstance() [Test] public async Task StoreAsync_WithNullMessage_ThrowsArgumentNullException() { - using var connection = new SqlConnection("Server=.;Encrypt=true;"); + await using var connection = new SqlConnection("Server=.;Encrypt=true;"); var outbox = new SqlServerEventOutbox(connection, Options.Create(new OutboxOptions()), TimeProvider.System); _ = await Assert @@ -76,7 +78,7 @@ public async Task StoreAsync_WithNullMessage_ThrowsArgumentNullException() [Test] public async Task StoreAsync_WithLongCorrelationId_ThrowsInvalidOperationException() { - using var connection = new SqlConnection("Server=.;Encrypt=true;"); + await using var connection = new SqlConnection("Server=.;Encrypt=true;"); var outbox = new SqlServerEventOutbox(connection, Options.Create(new OutboxOptions()), TimeProvider.System); var message = new TestEvent { diff --git a/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerExtensionsTests.cs index a0d402ee..b8618d39 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerExtensionsTests.cs @@ -1,10 +1,11 @@ -namespace NetEvolve.Pulse.Tests.Unit.SqlServer; +namespace NetEvolve.Pulse.Tests.Unit.SqlServer; using System; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse; using NetEvolve.Pulse.Extensibility; using NetEvolve.Pulse.Extensibility.Outbox; @@ -12,6 +13,7 @@ namespace NetEvolve.Pulse.Tests.Unit.SqlServer; using TUnit.Core; using TUnit.Mocks; +[TestGroup("SqlServer")] public sealed class SqlServerExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxManagementTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxManagementTests.cs index f5cea8be..76360914 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxManagementTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxManagementTests.cs @@ -3,9 +3,11 @@ using System; using System.Threading.Tasks; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("SqlServer")] public sealed class SqlServerOutboxManagementTests { private const string ValidConnectionString = "Server=.;Database=Test;Integrated Security=true;"; diff --git a/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxOptionsExtensionsTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxOptionsExtensionsTests.cs index 0cf0e8cf..e15da219 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxOptionsExtensionsTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxOptionsExtensionsTests.cs @@ -1,11 +1,13 @@ namespace NetEvolve.Pulse.Tests.Unit.SqlServer; using System.Threading.Tasks; +using NetEvolve.Extensions.TUnit; using TUnit.Assertions.Extensions; using TUnit.Core; -using static global::NetEvolve.Pulse.Outbox.SqlServerOutboxOptionsExtensions; -using OutboxOptions = global::NetEvolve.Pulse.Outbox.OutboxOptions; +using static NetEvolve.Pulse.Outbox.SqlServerOutboxOptionsExtensions; +using OutboxOptions = Pulse.Outbox.OutboxOptions; +[TestGroup("SqlServer")] public sealed class SqlServerOutboxOptionsExtensionsTests { [Test] diff --git a/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxRepositoryTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxRepositoryTests.cs index 8324c9e7..d40049bb 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxRepositoryTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxRepositoryTests.cs @@ -3,9 +3,11 @@ using System; using System.Threading.Tasks; using Microsoft.Extensions.Options; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("SqlServer")] public sealed class SqlServerOutboxRepositoryTests { private const string ValidConnectionString = "Server=.;Database=Test;Integrated Security=true;"; diff --git a/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxTransactionScopeTests.cs b/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxTransactionScopeTests.cs index 3c4610ae..4ad47817 100644 --- a/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxTransactionScopeTests.cs +++ b/tests/NetEvolve.Pulse.Tests.Unit/SqlServer/SqlServerOutboxTransactionScopeTests.cs @@ -1,9 +1,11 @@ namespace NetEvolve.Pulse.Tests.Unit.SqlServer; using System.Threading.Tasks; +using NetEvolve.Extensions.TUnit; using NetEvolve.Pulse.Outbox; using TUnit.Core; +[TestGroup("SqlServer")] public sealed class SqlServerOutboxTransactionScopeTests { [Test]