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>
65 lines
2.1 KiB
C#
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);
|
|
}
|
|
}
|