Skip to content

Commit d7a803a

Browse files
committed
feat: add contracts request validators
1 parent 5365b69 commit d7a803a

12 files changed

Lines changed: 146 additions & 0 deletions

File tree

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

File renamed without changes.

Chapter-3-microservice-extraction/Contracts/Src/Fitnet.Contracts.Api.UnitTests/GlobalUsings.cs renamed to Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Api.UnitTests/GlobalUsings.cs

File renamed without changes.

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

File renamed without changes.

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

File renamed without changes.

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

File renamed without changes.

Chapter-3-microservice-extraction/Contracts/Src/Fitnet.Contracts.Api.UnitTests/Sign/SignContract/RequestValidator/SignContractRequestValidatorTests.cs renamed to Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Api.UnitTests/Sign/SignContract/RequestValidator/SignContractRequestValidatorTests.cs

File renamed without changes.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<ItemGroup>
3+
<PackageReference Include="Bogus" Version="34.0.2" />
4+
<PackageReference Include="FluentAssertions" Version="6.10.0" />
5+
<PackageReference Include="xunit" Version="2.4.2" />
6+
<PackageReference Include="xunit.analyzers" Version="1.1.0" />
7+
<PackageReference Include="xunit.categories" Version="2.0.6" />
8+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
9+
<PrivateAssets>all</PrivateAssets>
10+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
11+
</PackageReference>
12+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.1" />
13+
<PackageReference Include="coverlet.collector" Version="3.2.0">
14+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
15+
<PrivateAssets>all</PrivateAssets>
16+
</PackageReference>
17+
</ItemGroup>
18+
19+
<ItemGroup>
20+
<InternalsVisibleTo Include="EvolutionaryArchitecture.Fitnet.Contracts.Api.UnitTests" />
21+
</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+
31+
</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;
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
namespace EvolutionaryArchitecture.Fitnet.Contracts.Api.UnitTests.Prepare.RequestValidator;
2+
3+
using EvolutionaryArchitecture.Fitnet.Contracts.Api.Prepare;
4+
5+
internal sealed class InvalidPrepareContractRequestTestCases : IEnumerable<object[]>
6+
{
7+
private readonly Faker _faker = new();
8+
private readonly DateTimeOffset _fakeNow = new Faker().Date.RecentOffset();
9+
10+
public IEnumerator<object[]> GetEnumerator()
11+
{
12+
var validContractParameters = PrepareContractRequestParameters.GetValid();
13+
14+
yield return new object[] { new PrepareContractRequest(Guid.Empty, validContractParameters.MinAge, validContractParameters.MaxHeight, _fakeNow), nameof(PrepareContractRequest.CustomerId) };
15+
yield return new object[] { new PrepareContractRequest(Guid.NewGuid(), default, validContractParameters.MaxHeight, _fakeNow), nameof(PrepareContractRequest.CustomerAge) };
16+
yield return new object[] { new PrepareContractRequest(Guid.NewGuid(), _faker.Random.Number(-100, -1), validContractParameters.MaxHeight, _fakeNow), nameof(PrepareContractRequest.CustomerAge) };
17+
yield return new object[] { new PrepareContractRequest(Guid.NewGuid(), validContractParameters.MinAge, default, _fakeNow), nameof(PrepareContractRequest.CustomerHeight) };
18+
yield return new object[] { new PrepareContractRequest(Guid.NewGuid(), validContractParameters.MinAge, _faker.Random.Number(-100, -1), _fakeNow), nameof(PrepareContractRequest.CustomerHeight) };
19+
yield return new object[] { new PrepareContractRequest(Guid.NewGuid(), validContractParameters.MinAge, validContractParameters.MaxHeight, default), nameof(PrepareContractRequest.PreparedAt) };
20+
yield return new object[] { new PrepareContractRequest(Guid.NewGuid(), validContractParameters.MinAge, validContractParameters.MaxHeight, default), nameof(PrepareContractRequest.PreparedAt) };
21+
}
22+
23+
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
24+
}
Lines changed: 17 additions & 0 deletions
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+
}

0 commit comments

Comments
 (0)