using Microsoft.Extensions.DependencyInjection; using Svrnty.CQRS.Abstractions; namespace Svrnty.CQRS.Tests; public class HandlerTests { [Fact] public async Task CommandHandler_WithResult_ExecutesCorrectly() { var services = new ServiceCollection(); services.AddCommand(); var provider = services.BuildServiceProvider(); var handler = provider.GetRequiredService>(); var result = await handler.HandleAsync(new CreatePersonCommand { FirstName = "John", LastName = "Doe" }); Assert.Equal(1, result.Id); } [Fact] public async Task CommandHandler_WithoutResult_ExecutesWithoutException() { var services = new ServiceCollection(); services.AddCommand(); var provider = services.BuildServiceProvider(); var handler = provider.GetRequiredService>(); await handler.HandleAsync(new DeletePersonCommand { Id = 1 }); } [Fact] public async Task QueryHandler_ExecutesCorrectly() { var services = new ServiceCollection(); services.AddQuery, PersonQueryHandler>(); var provider = services.BuildServiceProvider(); var handler = provider.GetRequiredService>>(); var result = await handler.HandleAsync(new PersonQuery()); Assert.Equal(["Alice", "Bob"], result); } [Fact] public async Task CommandHandler_SupportsCancellationToken() { var services = new ServiceCollection(); services.AddCommand(); var provider = services.BuildServiceProvider(); var handler = provider.GetRequiredService>(); using var cts = new CancellationTokenSource(); await handler.HandleAsync(new DeletePersonCommand { Id = 1 }, cts.Token); } }