diff --git a/DataAnnotatedModelValidations.Tests/DataAnnotatedModelValidations.Tests.csproj b/DataAnnotatedModelValidations.Tests/DataAnnotatedModelValidations.Tests.csproj index b2fa1e3..59ebb12 100644 --- a/DataAnnotatedModelValidations.Tests/DataAnnotatedModelValidations.Tests.csproj +++ b/DataAnnotatedModelValidations.Tests/DataAnnotatedModelValidations.Tests.csproj @@ -1,4 +1,4 @@ - + net8.0;net9.0;net10.0 @@ -19,11 +19,12 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - + + + + + + diff --git a/DataAnnotatedModelValidations.Tests/Pipeline/PipelineExecutionTests.GraphQL.cs b/DataAnnotatedModelValidations.Tests/Pipeline/PipelineExecutionTests.GraphQL.cs index 2e390b4..241e904 100644 --- a/DataAnnotatedModelValidations.Tests/Pipeline/PipelineExecutionTests.GraphQL.cs +++ b/DataAnnotatedModelValidations.Tests/Pipeline/PipelineExecutionTests.GraphQL.cs @@ -23,8 +23,8 @@ public class Query public string GetMessage() => "Message"; [UseOffsetPaging] - [UseSorting] [UseFiltering] + [UseSorting] public async Task> GetSampleResponses( [Range(0, 100)] double percentage, QueryContext queryContext, @@ -195,4 +195,14 @@ public class SampleExtension } }.AsQueryable(); } + +} + +/// +/// Sample query methods that get registered via source generation. +/// +[QueryType] +public static partial class SourceGeneratorQuery +{ + public static string? GetTextSourceGenerator([StringLength(5, MinimumLength = 3)] string? txt) => txt; } \ No newline at end of file diff --git a/DataAnnotatedModelValidations.Tests/Pipeline/PipelineExecutionTests.cs b/DataAnnotatedModelValidations.Tests/Pipeline/PipelineExecutionTests.cs index cadfa42..2a09a46 100644 --- a/DataAnnotatedModelValidations.Tests/Pipeline/PipelineExecutionTests.cs +++ b/DataAnnotatedModelValidations.Tests/Pipeline/PipelineExecutionTests.cs @@ -636,4 +636,23 @@ public async Task Validation_Should_Return_Expected_Errors_When_Not_Restricted_T Assert.Equal(numberOfErrors, result.ExpectOperationResult().Errors?.Count); result.ExpectOperationResult().ToJson().MatchSnapshot(new SnapshotNameExtension($"{description}.snap")); } + + [Theory] + [InlineData("""{ textSourceGenerator(txt: "a") }""", 1, "text_source_gen__min_length_3")] + [InlineData("""{ textSourceGenerator(txt: "abcdefg") }""", 1, "text_source_gen__max_length_5")] + public async Task Validation_Should_Return_Expected_Errors_From_Source_Generated_Fields(string query, int numberOfErrors, string description) + { + var result = await new ServiceCollection() + .AddGraphQLServer() + .AddSorting() + .AddFiltering() + .AddQueryContext() + .AddTestsTypes() + .AddDataAnnotationsValidator() + .ExecuteRequestAsync(query); + + + Assert.Equal(numberOfErrors, result.ExpectOperationResult().Errors?.Count); + //result.ExpectOperationResult().ToJson().MatchSnapshot(new SnapshotNameExtension($"{description}.snap")); + } } \ No newline at end of file diff --git a/DataAnnotatedModelValidations.Tests/Pipeline/__snapshots__/PipelineExecutionTests.Schema_Should_Resolve.snap b/DataAnnotatedModelValidations.Tests/Pipeline/__snapshots__/PipelineExecutionTests.Schema_Should_Resolve.snap index b268387..358cfc2 100644 --- a/DataAnnotatedModelValidations.Tests/Pipeline/__snapshots__/PipelineExecutionTests.Schema_Should_Resolve.snap +++ b/DataAnnotatedModelValidations.Tests/Pipeline/__snapshots__/PipelineExecutionTests.Schema_Should_Resolve.snap @@ -9,8 +9,8 @@ type Query { skip: Int take: Int percentage: Float! - order: [SampleResponseSortInput!] @cost(weight: "10") where: SampleResponseFilterInput @cost(weight: "10") + order: [SampleResponseSortInput!] @cost(weight: "10") ): SampleResponsesCollectionSegment @listSize( assumedSize: 100 diff --git a/DataAnnotatedModelValidations/DataAnnotatedModelValidations.csproj b/DataAnnotatedModelValidations/DataAnnotatedModelValidations.csproj index 6a211b6..ce42e9b 100644 --- a/DataAnnotatedModelValidations/DataAnnotatedModelValidations.csproj +++ b/DataAnnotatedModelValidations/DataAnnotatedModelValidations.csproj @@ -1,4 +1,4 @@ - + net8.0;net9.0;net10.0 @@ -22,7 +22,7 @@ - +