diff --git a/src/Http/Wolverine.Http.Tests/Marten/reacting_to_read_aggregate.cs b/src/Http/Wolverine.Http.Tests/Marten/reacting_to_read_aggregate.cs index 88c8886ec..5414c5efa 100644 --- a/src/Http/Wolverine.Http.Tests/Marten/reacting_to_read_aggregate.cs +++ b/src/Http/Wolverine.Http.Tests/Marten/reacting_to_read_aggregate.cs @@ -3,6 +3,7 @@ using Marten; using Marten.Events.Projections; using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Mvc; using Shouldly; using Wolverine.Marten; using Wolverine.Persistence; @@ -109,6 +110,32 @@ public async Task missing_with_problem_details_on_write() }); } + [Fact] + public async Task missing_with_problem_details_on_validation_on_write() + { + await theHost.Scenario(x => + { + x.Post.Url("/letters-validation/" + Guid.NewGuid()); + x.StatusCodeShouldBe(404); + }); + } +} + +public static class LetterAggregateEndpointWithValidation +{ + public static ProblemDetails Validate([WriteAggregate(Required = true, OnMissing = OnMissing.ProblemDetailsWith404)] LetterAggregate letters) + { + if (letters.ACount is 0) + { + return new ProblemDetails(); + } + + return WolverineContinue.NoProblems; + } + + [WolverinePost("/letters-validation/{id}")] + public static LetterAggregate PostLetter(LetterAggregate letters) + => letters; } public static class LetterAggregateEndpoint