dotnet-cqrs/tests/Svrnty.CQRS.Tests/HandlerTests.cs
Svrnty 92231df745 test: add xUnit test project for Svrnty.CQRS core library
Add tests/Svrnty.CQRS.Tests with 61 tests covering:
- CommandMeta and QueryMeta metadata creation and naming conventions
- CommandDiscovery and QueryDiscovery lookup, existence, and enumeration
- DI service registration for commands (with/without result) and queries
- Full pipeline integration (register -> discover -> resolve)
- CqrsBuilder fluent API configuration
- CqrsConfiguration generic storage and mapping callbacks
- Handler execution via DI-resolved instances

Co-Authored-By: Svrnty Inc. <eng@svrnty.com>
2026-02-27 18:38:44 -05:00

65 lines
2.1 KiB
C#

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<CreatePersonCommand, CreatePersonResult, CreatePersonCommandHandler>();
var provider = services.BuildServiceProvider();
var handler = provider.GetRequiredService<ICommandHandler<CreatePersonCommand, CreatePersonResult>>();
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<DeletePersonCommand, DeletePersonCommandHandler>();
var provider = services.BuildServiceProvider();
var handler = provider.GetRequiredService<ICommandHandler<DeletePersonCommand>>();
await handler.HandleAsync(new DeletePersonCommand { Id = 1 });
}
[Fact]
public async Task QueryHandler_ExecutesCorrectly()
{
var services = new ServiceCollection();
services.AddQuery<PersonQuery, IEnumerable<string>, PersonQueryHandler>();
var provider = services.BuildServiceProvider();
var handler = provider.GetRequiredService<IQueryHandler<PersonQuery, IEnumerable<string>>>();
var result = await handler.HandleAsync(new PersonQuery());
Assert.Equal(["Alice", "Bob"], result);
}
[Fact]
public async Task CommandHandler_SupportsCancellationToken()
{
var services = new ServiceCollection();
services.AddCommand<DeletePersonCommand, DeletePersonCommandHandler>();
var provider = services.BuildServiceProvider();
var handler = provider.GetRequiredService<ICommandHandler<DeletePersonCommand>>();
using var cts = new CancellationTokenSource();
await handler.HandleAsync(new DeletePersonCommand { Id = 1 }, cts.Token);
}
}