Skip to content

Commit fd74819

Browse files
committed
Organise tests such that they map directly to the tables in #1231 and #1111
1 parent d4f1d69 commit fd74819

39 files changed

+2965
-2600
lines changed

appveyor.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ environment:
1414

1515
branches:
1616
only:
17-
- openapi-required-and-nullable-properties # TODO: remove
1817
- master
1918
- openapi
2019
- develop

test/OpenApiClientTests/FakeHttpClientWrapper.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Net;
22
using System.Net.Http.Headers;
33
using System.Text;
4+
using System.Text.Json;
45
using JsonApiDotNetCore.OpenApi.Client;
56

67
namespace OpenApiClientTests;
@@ -22,6 +23,17 @@ private FakeHttpClientWrapper(HttpClient httpClient, FakeHttpMessageHandler hand
2223
_handler = handler;
2324
}
2425

26+
public JsonElement ParseRequestBody()
27+
{
28+
if (RequestBody == null)
29+
{
30+
throw new InvalidOperationException();
31+
}
32+
33+
using JsonDocument jsonDocument = JsonDocument.Parse(RequestBody);
34+
return jsonDocument.RootElement.Clone();
35+
}
36+
2537
public static FakeHttpClientWrapper Create(HttpStatusCode statusCode, string? responseBody)
2638
{
2739
HttpResponseMessage response = CreateResponse(statusCode, responseBody);

test/OpenApiClientTests/ObjectExtensions.cs

Lines changed: 0 additions & 20 deletions
This file was deleted.

test/OpenApiClientTests/OpenApiClientTests.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,15 @@
5252
<CodeGenerator>NSwagCSharp</CodeGenerator>
5353
<Options>/UseBaseUrl:false /ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.Exceptions</Options>
5454
</OpenApiReference>
55-
<OpenApiReference Include="SchemaProperties\NullableReferenceTypesEnabled\swagger.g.json">
56-
<Namespace>OpenApiClientTests.SchemaProperties.NullableReferenceTypesEnabled.GeneratedCode</Namespace>
55+
<OpenApiReference Include="ResourceFieldsValidation\NullableReferenceTypesEnabled\swagger.g.json">
56+
<Namespace>OpenApiClientTests.ResourceFieldsValidation.NullableReferenceTypesEnabled.GeneratedCode</Namespace>
5757
<ClassName>NullableReferenceTypesEnabledClient</ClassName>
5858
<OutputPath>NullableReferenceTypesEnabledClient.cs</OutputPath>
5959
<CodeGenerator>NSwagCSharp</CodeGenerator>
6060
<Options>/UseBaseUrl:false /ClientClassAccessModifier:internal /GenerateExceptionClasses:false /AdditionalNamespaceUsages:JsonApiDotNetCore.OpenApi.Client.Exceptions /GenerateNullableReferenceTypes:true</Options>
6161
</OpenApiReference>
62-
<OpenApiReference Include="SchemaProperties\NullableReferenceTypesDisabled\swagger.g.json">
63-
<Namespace>OpenApiClientTests.SchemaProperties.NullableReferenceTypesDisabled.GeneratedCode</Namespace>
62+
<OpenApiReference Include="ResourceFieldsValidation\NullableReferenceTypesDisabled\swagger.g.json">
63+
<Namespace>OpenApiClientTests.ResourceFieldsValidation.NullableReferenceTypesDisabled.GeneratedCode</Namespace>
6464
<ClassName>NullableReferenceTypesDisabledClient</ClassName>
6565
<OutputPath>NullableReferenceTypesDisabledClient.cs</OutputPath>
6666
<CodeGenerator>NSwagCSharp</CodeGenerator>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using JsonApiDotNetCore.OpenApi.Client;
22
using Newtonsoft.Json;
33

4-
namespace OpenApiClientTests.SchemaProperties.NullableReferenceTypesDisabled.GeneratedCode;
4+
namespace OpenApiClientTests.ResourceFieldsValidation.NullableReferenceTypesDisabled.GeneratedCode;
55

66
internal partial class NullableReferenceTypesDisabledClient : JsonApiClient
77
{

test/OpenApiClientTests/SchemaProperties/NullableReferenceTypesDisabled/NullabilityTests.cs renamed to test/OpenApiClientTests/ResourceFieldsValidation/NullableReferenceTypesDisabled/NullabilityTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
using System.Reflection;
22
using FluentAssertions;
3-
using OpenApiClientTests.SchemaProperties.NullableReferenceTypesDisabled.GeneratedCode;
3+
using OpenApiClientTests.ResourceFieldsValidation.NullableReferenceTypesDisabled.GeneratedCode;
44
using Xunit;
55

6-
namespace OpenApiClientTests.SchemaProperties.NullableReferenceTypesDisabled;
6+
namespace OpenApiClientTests.ResourceFieldsValidation.NullableReferenceTypesDisabled;
77

88
public sealed class NullabilityTests
99
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
using Bogus;
2+
using OpenApiClientTests.ResourceFieldsValidation.NullableReferenceTypesDisabled.GeneratedCode;
3+
4+
namespace OpenApiClientTests.ResourceFieldsValidation.NullableReferenceTypesDisabled;
5+
6+
// @formatter:wrap_chained_method_calls chop_always
7+
// @formatter:keep_existing_linebreaks true
8+
9+
internal sealed class NullableReferenceTypesDisabledFaker
10+
{
11+
private readonly Lazy<Faker<HenHousePostRequestDocument>> _lazyHenHousePostRequestDocumentFaker;
12+
private readonly Lazy<Faker<HenHousePatchRequestDocument>> _lazyHenHousePatchRequestDocumentFaker;
13+
14+
private readonly Lazy<Faker<ChickenPostRequestDocument>> _lazyChickenPostRequestDocumentFaker = new(() =>
15+
{
16+
Faker<ChickenAttributesInPostRequest> attributesInPostRequestFaker = new Faker<ChickenAttributesInPostRequest>()
17+
.RuleFor(attributes => attributes.Name, faker => faker.Name.FirstName())
18+
.RuleFor(attributes => attributes.NameOfCurrentFarm, faker => faker.Company.CompanyName())
19+
.RuleFor(attributes => attributes.Age, faker => faker.Random.Int(1, 20))
20+
.RuleFor(attributes => attributes.Weight, faker => faker.Random.Int(20, 50))
21+
.RuleFor(attributes => attributes.TimeAtCurrentFarmInDays, faker => faker.Random.Int(1, 356))
22+
.RuleFor(attributes => attributes.HasProducedEggs, _ => true);
23+
24+
Faker<ChickenDataInPostRequest> dataInPostRequestFaker = new Faker<ChickenDataInPostRequest>()
25+
.RuleFor(data => data.Attributes, _ => attributesInPostRequestFaker.Generate());
26+
27+
return new Faker<ChickenPostRequestDocument>()
28+
.RuleFor(document => document.Data, _ => dataInPostRequestFaker.Generate());
29+
});
30+
31+
private readonly Lazy<Faker<ChickenPatchRequestDocument>> _lazyChickenPatchRequestDocumentFaker = new(() =>
32+
{
33+
Faker<ChickenAttributesInPatchRequest> attributesInPatchRequestFaker = new Faker<ChickenAttributesInPatchRequest>()
34+
.RuleFor(attributes => attributes.Name, faker => faker.Name.FirstName())
35+
.RuleFor(attributes => attributes.NameOfCurrentFarm, faker => faker.Company.CompanyName())
36+
.RuleFor(attributes => attributes.Age, faker => faker.Random.Int(1, 20))
37+
.RuleFor(attributes => attributes.Weight, faker => faker.Random.Int(20, 50))
38+
.RuleFor(attributes => attributes.TimeAtCurrentFarmInDays, faker => faker.Random.Int(1, 356))
39+
.RuleFor(attributes => attributes.HasProducedEggs, _ => true);
40+
41+
Faker<ChickenDataInPatchRequest> dataInPatchRequestFaker = new Faker<ChickenDataInPatchRequest>()
42+
.RuleFor(data => data.Id, faker => faker.Random.Int(1, 100)
43+
.ToString())
44+
.RuleFor(data => data.Attributes, _ => attributesInPatchRequestFaker.Generate());
45+
46+
return new Faker<ChickenPatchRequestDocument>()
47+
.RuleFor(document => document.Data, _ => dataInPatchRequestFaker.Generate());
48+
});
49+
50+
private readonly Lazy<Faker<ToOneChickenInRequest>> _lazyToOneChickenInRequestFaker = new(() =>
51+
new Faker<ToOneChickenInRequest>()
52+
.RuleFor(relationship => relationship.Data, faker => new ChickenIdentifier
53+
{
54+
Id = faker.Random.Int(1, 100)
55+
.ToString()
56+
}));
57+
58+
private readonly Lazy<Faker<NullableToOneChickenInRequest>> _lazyNullableToOneChickenInRequestFaker = new(() =>
59+
new Faker<NullableToOneChickenInRequest>()
60+
.RuleFor(relationship => relationship.Data, faker => new ChickenIdentifier
61+
{
62+
Id = faker.Random.Int(1, 100)
63+
.ToString()
64+
}));
65+
66+
private readonly Lazy<Faker<ToManyChickenInRequest>> _lazyToManyChickenInRequestFaker = new(() =>
67+
new Faker<ToManyChickenInRequest>()
68+
.RuleFor(relationship => relationship.Data, faker => new List<ChickenIdentifier>
69+
{
70+
new()
71+
{
72+
Id = faker.Random.Int(1, 100)
73+
.ToString()
74+
}
75+
}));
76+
77+
public Faker<ChickenPostRequestDocument> ChickenPostRequestDocument => _lazyChickenPostRequestDocumentFaker.Value;
78+
public Faker<ChickenPatchRequestDocument> ChickenPatchRequestDocument => _lazyChickenPatchRequestDocumentFaker.Value;
79+
public Faker<HenHousePostRequestDocument> HenHousePostRequestDocument => _lazyHenHousePostRequestDocumentFaker.Value;
80+
public Faker<HenHousePatchRequestDocument> HenHousePatchRequestDocument => _lazyHenHousePatchRequestDocumentFaker.Value;
81+
82+
public NullableReferenceTypesDisabledFaker()
83+
{
84+
_lazyHenHousePostRequestDocumentFaker = new Lazy<Faker<HenHousePostRequestDocument>>(HenHousePostRequestDocumentFakerFactory);
85+
_lazyHenHousePatchRequestDocumentFaker = new Lazy<Faker<HenHousePatchRequestDocument>>(HenHousePatchRequestDocumentFakerFactory);
86+
}
87+
88+
private Faker<HenHousePostRequestDocument> HenHousePostRequestDocumentFakerFactory()
89+
{
90+
Faker<HenHouseRelationshipsInPostRequest> relationshipsInPostRequestFaker = new Faker<HenHouseRelationshipsInPostRequest>()
91+
.RuleFor(relationships => relationships.OldestChicken, _ => _lazyNullableToOneChickenInRequestFaker.Value.Generate())
92+
.RuleFor(relationships => relationships.FirstChicken, _ => _lazyToOneChickenInRequestFaker.Value.Generate())
93+
.RuleFor(relationships => relationships.ChickensReadyForLaying, _ => _lazyToManyChickenInRequestFaker.Value.Generate())
94+
.RuleFor(relationships => relationships.AllChickens, _ => _lazyToManyChickenInRequestFaker.Value.Generate());
95+
96+
Faker<HenHouseDataInPostRequest> dataInPostRequestFaker = new Faker<HenHouseDataInPostRequest>()
97+
.RuleFor(data => data.Relationships, _ => relationshipsInPostRequestFaker.Generate());
98+
99+
return new Faker<HenHousePostRequestDocument>()
100+
.RuleFor(document => document.Data, _ => dataInPostRequestFaker.Generate());
101+
}
102+
103+
private Faker<HenHousePatchRequestDocument> HenHousePatchRequestDocumentFakerFactory()
104+
{
105+
Faker<HenHouseRelationshipsInPatchRequest> relationshipsInPatchRequestFaker = new Faker<HenHouseRelationshipsInPatchRequest>()
106+
.RuleFor(relationships => relationships.OldestChicken, _ => _lazyNullableToOneChickenInRequestFaker.Value.Generate())
107+
.RuleFor(relationships => relationships.FirstChicken, _ => _lazyToOneChickenInRequestFaker.Value.Generate())
108+
.RuleFor(relationships => relationships.ChickensReadyForLaying, _ => _lazyToManyChickenInRequestFaker.Value.Generate())
109+
.RuleFor(relationships => relationships.AllChickens, _ => _lazyToManyChickenInRequestFaker.Value.Generate());
110+
111+
Faker<HenHouseDataInPatchRequest> dataInPatchRequestFaker = new Faker<HenHouseDataInPatchRequest>()
112+
.RuleFor(data => data.Id, faker => faker.Random.Int(1, 100)
113+
.ToString())
114+
.RuleFor(data => data.Relationships, _ => relationshipsInPatchRequestFaker.Generate());
115+
116+
return new Faker<HenHousePatchRequestDocument>()
117+
.RuleFor(document => document.Data, _ => dataInPatchRequestFaker.Generate());
118+
}
119+
}

0 commit comments

Comments
 (0)