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>
125 lines
3.3 KiB
C#
125 lines
3.3 KiB
C#
using Svrnty.CQRS.Abstractions.Discovery;
|
|
using Svrnty.CQRS.Discovery;
|
|
|
|
namespace Svrnty.CQRS.Tests;
|
|
|
|
public class QueryDiscoveryTests
|
|
{
|
|
private static QueryDiscovery CreateDiscovery(params IQueryMeta[] metas)
|
|
{
|
|
return new QueryDiscovery(metas);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetQueries_ReturnsAllRegistered()
|
|
{
|
|
var meta1 = new QueryMeta(typeof(PersonQuery), typeof(object), typeof(IEnumerable<string>));
|
|
var meta2 = new QueryMeta(typeof(PersonLookupQuery), typeof(object), typeof(string));
|
|
var discovery = CreateDiscovery(meta1, meta2);
|
|
|
|
var queries = discovery.GetQueries().ToList();
|
|
|
|
Assert.Equal(2, queries.Count);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetQueries_ReturnsEmpty_WhenNoneRegistered()
|
|
{
|
|
var discovery = CreateDiscovery();
|
|
|
|
var queries = discovery.GetQueries().ToList();
|
|
|
|
Assert.Empty(queries);
|
|
}
|
|
|
|
[Fact]
|
|
public void FindQuery_ByName_ReturnsCorrectMeta()
|
|
{
|
|
var meta = new QueryMeta(typeof(PersonQuery), typeof(object), typeof(IEnumerable<string>));
|
|
var discovery = CreateDiscovery(meta);
|
|
|
|
var found = discovery.FindQuery("Person");
|
|
|
|
Assert.NotNull(found);
|
|
Assert.Equal(typeof(PersonQuery), found.QueryType);
|
|
}
|
|
|
|
[Fact]
|
|
public void FindQuery_ByName_ReturnsNull_WhenNotFound()
|
|
{
|
|
var discovery = CreateDiscovery();
|
|
|
|
var found = discovery.FindQuery("NonExistent");
|
|
|
|
Assert.Null(found);
|
|
}
|
|
|
|
[Fact]
|
|
public void FindQuery_ByType_ReturnsCorrectMeta()
|
|
{
|
|
var meta = new QueryMeta(typeof(PersonQuery), typeof(object), typeof(IEnumerable<string>));
|
|
var discovery = CreateDiscovery(meta);
|
|
|
|
var found = discovery.FindQuery(typeof(PersonQuery));
|
|
|
|
Assert.NotNull(found);
|
|
Assert.Equal("Person", found.Name);
|
|
}
|
|
|
|
[Fact]
|
|
public void FindQuery_ByType_ReturnsNull_WhenNotFound()
|
|
{
|
|
var discovery = CreateDiscovery();
|
|
|
|
var found = discovery.FindQuery(typeof(PersonQuery));
|
|
|
|
Assert.Null(found);
|
|
}
|
|
|
|
[Fact]
|
|
public void QueryExists_ByName_ReturnsTrue_WhenFound()
|
|
{
|
|
var meta = new QueryMeta(typeof(PersonQuery), typeof(object), typeof(IEnumerable<string>));
|
|
var discovery = CreateDiscovery(meta);
|
|
|
|
Assert.True(discovery.QueryExists("Person"));
|
|
}
|
|
|
|
[Fact]
|
|
public void QueryExists_ByName_ReturnsFalse_WhenNotFound()
|
|
{
|
|
var discovery = CreateDiscovery();
|
|
|
|
Assert.False(discovery.QueryExists("Person"));
|
|
}
|
|
|
|
[Fact]
|
|
public void QueryExists_ByType_ReturnsTrue_WhenFound()
|
|
{
|
|
var meta = new QueryMeta(typeof(PersonQuery), typeof(object), typeof(IEnumerable<string>));
|
|
var discovery = CreateDiscovery(meta);
|
|
|
|
Assert.True(discovery.QueryExists(typeof(PersonQuery)));
|
|
}
|
|
|
|
[Fact]
|
|
public void QueryExists_ByType_ReturnsFalse_WhenNotFound()
|
|
{
|
|
var discovery = CreateDiscovery();
|
|
|
|
Assert.False(discovery.QueryExists(typeof(PersonQuery)));
|
|
}
|
|
|
|
[Fact]
|
|
public void FindQuery_WithCustomName_FindsByAttributeName()
|
|
{
|
|
var meta = new QueryMeta(typeof(PersonLookupQuery), typeof(object), typeof(string));
|
|
var discovery = CreateDiscovery(meta);
|
|
|
|
var found = discovery.FindQuery("customPersonLookup");
|
|
|
|
Assert.NotNull(found);
|
|
Assert.Equal(typeof(PersonLookupQuery), found.QueryType);
|
|
}
|
|
}
|