Skip to content

Commit a8e40cb

Browse files
committed
✅ Add tests for valid request handling in validation request handlers
1 parent 389f0ae commit a8e40cb

3 files changed

Lines changed: 111 additions & 2 deletions

File tree

src/Sidio.Mediator.Validation.Tests/Http/ValidationHttpRequestHandlerTests.cs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ namespace Sidio.Mediator.Validation.Tests.Http;
77

88
public sealed class ValidationHttpRequestHandlerTests
99
{
10-
1110
[Fact]
1211
public async Task HandleAsync_RequestIsNotValid_ReturnsValidationResults()
1312
{
@@ -31,6 +30,32 @@ public async Task HandleAsync_RequestIsNotValid_ReturnsValidationResults()
3130
result.ValidationErrors.Should().NotBeEmpty();
3231
}
3332

33+
[Fact]
34+
public async Task HandleAsync_RequestIsValid_ReturnsResults()
35+
{
36+
// Arrange
37+
var services = new ServiceCollection();
38+
services.AddLogging();
39+
services.AddMediator(typeof(IAssemblyMarker));
40+
services.AddMediatorValidation(typeof(IAssemblyMarker));
41+
42+
var serviceProvider = services.BuildServiceProvider();
43+
var request = new TestRequest
44+
{
45+
Name = "Valid name"
46+
};
47+
var requestHandler = serviceProvider.GetRequiredService<IHttpRequestHandler<TestRequest, string>>();
48+
49+
// Act
50+
var result = await requestHandler.HandleAsync(request, CancellationToken.None);
51+
52+
// Assert
53+
result.Should().NotBeNull();
54+
result.IsSuccess.Should().BeTrue();
55+
result.HttpStatusCode.Should().Be(HttpStatusCode.OK);
56+
result.ValidationErrors.Should().BeEmpty();
57+
}
58+
3459
public sealed class TestRequest : IHttpRequest<string>
3560
{
3661
public string? Name { get; init; }

src/Sidio.Mediator.Validation.Tests/ValidationRequestHandlerTests.Generic.cs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ namespace Sidio.Mediator.Validation.Tests;
55

66
public sealed class ValidationRequestHandlerTestsTyped
77
{
8-
98
[Fact]
109
public async Task HandleAsync_RequestIsNotValid_ReturnsValidationResults()
1110
{
@@ -28,6 +27,31 @@ public async Task HandleAsync_RequestIsNotValid_ReturnsValidationResults()
2827
result.ValidationErrors.Should().NotBeEmpty();
2928
}
3029

30+
[Fact]
31+
public async Task HandleAsync_RequestIsValid_ReturnsResults()
32+
{
33+
// Arrange
34+
var services = new ServiceCollection();
35+
services.AddLogging();
36+
services.AddMediator(typeof(IAssemblyMarker));
37+
services.AddMediatorValidation(typeof(IAssemblyMarker));
38+
39+
var serviceProvider = services.BuildServiceProvider();
40+
var request = new TestRequest
41+
{
42+
Name = "Valid name",
43+
};
44+
var requestHandler = serviceProvider.GetRequiredService<IRequestHandler<TestRequest, string>>();
45+
46+
// Act
47+
var result = await requestHandler.HandleAsync(request, CancellationToken.None);
48+
49+
// Assert
50+
result.Should().NotBeNull();
51+
result.IsSuccess.Should().BeTrue();
52+
result.ValidationErrors.Should().BeEmpty();
53+
}
54+
3155
public sealed class TestRequest : IRequest<string>
3256
{
3357
public string? Name { get; init; }

src/Sidio.Mediator.Validation.Tests/ValidationRequestHandlerTests.cs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,53 @@ public async Task HandleAsync_RequestIsNotValid_ReturnsValidationResults()
2727
result.ValidationErrors.Should().NotBeEmpty();
2828
}
2929

30+
[Fact]
31+
public async Task HandleAsync_RequestIsValid_ReturnsResults()
32+
{
33+
// Arrange
34+
var services = new ServiceCollection();
35+
services.AddLogging();
36+
services.AddMediator(typeof(IAssemblyMarker));
37+
services.AddMediatorValidation(typeof(IAssemblyMarker));
38+
39+
var serviceProvider = services.BuildServiceProvider();
40+
var request = new TestRequest
41+
{
42+
Name = "Valid Name"
43+
};
44+
var requestHandler = serviceProvider.GetRequiredService<IRequestHandler<TestRequest>>();
45+
46+
// Act
47+
var result = await requestHandler.HandleAsync(request, CancellationToken.None);
48+
49+
// Assert
50+
result.Should().NotBeNull();
51+
result.IsSuccess.Should().BeTrue();
52+
result.ValidationErrors.Should().BeEmpty();
53+
}
54+
55+
[Fact]
56+
public async Task HandleAsync_WithoutValidation_ReturnsResults()
57+
{
58+
// Arrange
59+
var services = new ServiceCollection();
60+
services.AddLogging();
61+
services.AddMediator(typeof(IAssemblyMarker));
62+
services.AddMediatorValidation(typeof(IAssemblyMarker));
63+
64+
var serviceProvider = services.BuildServiceProvider();
65+
var request = new TestRequest2();
66+
var requestHandler = serviceProvider.GetRequiredService<IRequestHandler<TestRequest2>>();
67+
68+
// Act
69+
var result = await requestHandler.HandleAsync(request, CancellationToken.None);
70+
71+
// Assert
72+
result.Should().NotBeNull();
73+
result.IsSuccess.Should().BeTrue();
74+
result.ValidationErrors.Should().BeEmpty();
75+
}
76+
3077
public sealed class TestRequest : IRequest
3178
{
3279
public string? Name { get; init; }
@@ -47,4 +94,17 @@ public TestRequestValidator()
4794
RuleFor(x => x.Name).NotEmpty();
4895
}
4996
}
97+
98+
public sealed class TestRequest2 : IRequest
99+
{
100+
public string? Name { get; init; }
101+
}
102+
103+
public sealed class TestRequestHandler2 : IRequestHandler<TestRequest2>
104+
{
105+
public Task<Result> HandleAsync(TestRequest2 request, CancellationToken cancellationToken = default)
106+
{
107+
return Task.FromResult(Result.Success());
108+
}
109+
}
50110
}

0 commit comments

Comments
 (0)