using Svrnty.CQRS.Abstractions.Discovery; namespace Svrnty.CQRS.Tests; public class QueryMetaTests { [Fact] public void Name_StripsQuerySuffix() { var meta = new QueryMeta(typeof(PersonQuery), typeof(object), typeof(IEnumerable)); Assert.Equal("Person", meta.Name); } [Fact] public void Name_UsesQueryNameAttribute_WhenPresent() { var meta = new QueryMeta(typeof(PersonLookupQuery), typeof(object), typeof(string)); Assert.Equal("customPersonLookup", meta.Name); } [Fact] public void LowerCamelCaseName_ConvertsFirstCharToLower() { var meta = new QueryMeta(typeof(PersonQuery), typeof(object), typeof(IEnumerable)); Assert.Equal("person", meta.LowerCamelCaseName); } [Fact] public void Category_DefaultsToBasicQuery() { var meta = new QueryMeta(typeof(PersonQuery), typeof(object), typeof(IEnumerable)); Assert.Equal("BasicQuery", meta.Category); } [Fact] public void QueryType_IsSetCorrectly() { var meta = new QueryMeta(typeof(PersonQuery), typeof(object), typeof(IEnumerable)); Assert.Equal(typeof(PersonQuery), meta.QueryType); } [Fact] public void ServiceType_IsSetCorrectly() { var serviceType = typeof(object); var meta = new QueryMeta(typeof(PersonQuery), serviceType, typeof(IEnumerable)); Assert.Equal(serviceType, meta.ServiceType); } [Fact] public void QueryResultType_IsSetCorrectly() { var resultType = typeof(IEnumerable); var meta = new QueryMeta(typeof(PersonQuery), typeof(object), resultType); Assert.Equal(resultType, meta.QueryResultType); } }