Skip to content

Commit 4bdafec

Browse files
committed
tests: add tests for contracts request validators
1 parent 7ef6c27 commit 4bdafec

6 files changed

Lines changed: 72 additions & 7 deletions

File tree

Chapter-3-microservice-extraction/Contracts/Src/Fitnet.Contracts.Api.UnitTests/Fitnet.Contracts.Api.UnitTests.csproj

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,13 @@
1919
<ItemGroup>
2020
<InternalsVisibleTo Include="EvolutionaryArchitecture.Fitnet.Contracts.Api.UnitTests" />
2121
</ItemGroup>
22+
23+
<ItemGroup>
24+
<ProjectReference Include="..\Fitnet.Contracts.Api\Fitnet.Contracts.Api.csproj" />
25+
</ItemGroup>
26+
27+
<ItemGroup>
28+
<ProjectReference Include="..\Fitnet.Contracts.Api\Fitnet.Contracts.Api.csproj" />
29+
</ItemGroup>
30+
2231
</Project>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
global using System.Collections;
2+
global using Bogus;
3+
global using Xunit;

Chapter-3-microservice-extraction/Contracts/Src/Fitnet.Contracts.Api.UnitTests/RequestValidator/InvalidPrepareContractRequestTestCases.cs renamed to Chapter-3-microservice-extraction/Contracts/Src/Fitnet.Contracts.Api.UnitTests/Prepare/RequestValidator/InvalidPrepareContractRequestTestCases.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
namespace EvolutionaryArchitecture.Fitnet.Contracts.Api.UnitTests.RequestValidator;
1+
namespace EvolutionaryArchitecture.Fitnet.Contracts.Api.UnitTests.Prepare.RequestValidator;
22

3-
using System.Collections;
4-
using Bogus;
3+
using EvolutionaryArchitecture.Fitnet.Contracts.Api.Prepare;
54

65
internal sealed class InvalidPrepareContractRequestTestCases : IEnumerable<object[]>
76
{
@@ -10,7 +9,7 @@ internal sealed class InvalidPrepareContractRequestTestCases : IEnumerable<objec
109

1110
public IEnumerator<object[]> GetEnumerator()
1211
{
13-
var validContractParameters = PrepareContractParameters.GetValid();
12+
var validContractParameters = PrepareContractRequestParameters.GetValid();
1413

1514
yield return new object[] { new PrepareContractRequest(Guid.Empty, validContractParameters.MinAge, validContractParameters.MaxHeight, _fakeNow), nameof(PrepareContractRequest.CustomerId) };
1615
yield return new object[] { new PrepareContractRequest(Guid.NewGuid(), default, validContractParameters.MaxHeight, _fakeNow), nameof(PrepareContractRequest.CustomerAge) };
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
namespace EvolutionaryArchitecture.Fitnet.Contracts.Api.UnitTests.Prepare.RequestValidator;
2+
3+
internal sealed record PrepareContractRequestParameters(int MinAge, int MaxAge, int MinHeight, int MaxHeight)
4+
{
5+
private const int MinimumAge = 18;
6+
private const int MaximumAge = 100;
7+
private const int MinimumHeight = 0;
8+
private const int MaximumHeight = 210;
9+
10+
internal static PrepareContractRequestParameters GetValid() => new(MinimumAge, MaximumAge, MinimumHeight, MaximumHeight);
11+
12+
internal static PrepareContractRequestParameters GetWithInvalidAge() =>
13+
new(0, MinimumAge - 1, MinimumHeight, MaximumHeight);
14+
15+
internal static PrepareContractRequestParameters GetWithInvalidHeight() =>
16+
new(MinimumAge, MaximumAge, MaximumHeight + 1, MaximumHeight + 1);
17+
}

Chapter-3-microservice-extraction/Contracts/Src/Fitnet.Contracts.Api.UnitTests/RequestValidator/PrepareContractRequestValidatorTests.cs renamed to Chapter-3-microservice-extraction/Contracts/Src/Fitnet.Contracts.Api.UnitTests/Prepare/RequestValidator/PrepareContractRequestValidatorTests.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
namespace EvolutionaryArchitecture.Fitnet.Contracts.Api.UnitTests.RequestValidator;
1+
namespace EvolutionaryArchitecture.Fitnet.Contracts.Api.UnitTests.Prepare.RequestValidator;
22

3-
using Bogus;
3+
using EvolutionaryArchitecture.Fitnet.Contracts.Api.Prepare;
4+
using FluentValidation.TestHelper;
45

56
public sealed class PrepareContractRequestValidatorTests
67
{
@@ -11,7 +12,7 @@ public sealed class PrepareContractRequestValidatorTests
1112
internal void Given_prepare_contract_request_validation_When_request_is_valid_Then_result_should_have_no_errors()
1213
{
1314
// Arrange
14-
var validContractParameters = PrepareContractParameters.GetValid();
15+
var validContractParameters = PrepareContractRequestParameters.GetValid();
1516
var request = new PrepareContractRequest(Guid.NewGuid(), validContractParameters.MinAge, validContractParameters.MaxHeight, _fakeNow);
1617

1718
// Act
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
namespace EvolutionaryArchitecture.Fitnet.Contracts.Api.UnitTests.Sign.SignContract.RequestValidator;
2+
3+
using EvolutionaryArchitecture.Fitnet.Contracts.Api.Sign;
4+
using FluentValidation.TestHelper;
5+
6+
public sealed class SignContractRequestValidatorTests
7+
{
8+
private readonly SignContractRequestValidator _validator = new();
9+
private readonly DateTimeOffset _fakeNow = new Faker().Date.RecentOffset();
10+
11+
[Fact]
12+
internal void Given_sign_contract_request_validation_When_request_is_valid_Then_result_should_have_no_errors()
13+
{
14+
// Arrange
15+
var request = new SignContractRequest(_fakeNow);
16+
17+
// Act
18+
var result = _validator.TestValidate(request);
19+
20+
// Assert
21+
result.ShouldNotHaveAnyValidationErrors();
22+
}
23+
24+
[Fact]
25+
internal void Given_sign_contract_request_validation_When_signed_at_not_provided_Then_result_should_have_error()
26+
{
27+
// Arrange
28+
var request = new SignContractRequest(default);
29+
30+
// Act
31+
var result = _validator.TestValidate(request);
32+
33+
// Assert
34+
result.ShouldHaveValidationErrorFor(signContractRequest => signContractRequest.SignedAt);
35+
}
36+
}

0 commit comments

Comments
 (0)