Skip to content

Commit 76e098a

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

39 files changed

+2973
-2600
lines changed

appveyor.yml

-1
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

+12
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

-20
This file was deleted.

test/OpenApiClientTests/OpenApiClientTests.csproj

+4-4
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>
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

+2-2
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,124 @@
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+
// @formatter:wrap_chained_method_calls chop_if_long
43+
.RuleFor(data => data.Id, faker => faker.Random.Int(1, 100).ToString())
44+
// @formatter:wrap_chained_method_calls restore
45+
.RuleFor(data => data.Attributes, _ => attributesInPatchRequestFaker.Generate());
46+
47+
return new Faker<ChickenPatchRequestDocument>()
48+
.RuleFor(document => document.Data, _ => dataInPatchRequestFaker.Generate());
49+
});
50+
51+
private readonly Lazy<Faker<ToOneChickenInRequest>> _lazyToOneChickenInRequestFaker = new(() =>
52+
new Faker<ToOneChickenInRequest>()
53+
.RuleFor(relationship => relationship.Data, faker => new ChickenIdentifier
54+
{
55+
// @formatter:wrap_chained_method_calls chop_if_long
56+
Id = faker.Random.Int(1, 100).ToString()
57+
// @formatter:wrap_chained_method_calls restore
58+
}));
59+
60+
private readonly Lazy<Faker<NullableToOneChickenInRequest>> _lazyNullableToOneChickenInRequestFaker = new(() =>
61+
new Faker<NullableToOneChickenInRequest>()
62+
.RuleFor(relationship => relationship.Data, faker => new ChickenIdentifier
63+
{
64+
// @formatter:wrap_chained_method_calls chop_if_long
65+
Id = faker.Random.Int(1, 100).ToString()
66+
// @formatter:wrap_chained_method_calls restore
67+
}));
68+
69+
private readonly Lazy<Faker<ToManyChickenInRequest>> _lazyToManyChickenInRequestFaker = new(() =>
70+
new Faker<ToManyChickenInRequest>()
71+
.RuleFor(relationship => relationship.Data, faker => new List<ChickenIdentifier>
72+
{
73+
new()
74+
{
75+
// @formatter:wrap_chained_method_calls chop_if_long
76+
Id = faker.Random.Int(1, 100).ToString()
77+
// @formatter:wrap_chained_method_calls restore
78+
}
79+
}));
80+
81+
public Faker<ChickenPostRequestDocument> ChickenPostRequestDocument => _lazyChickenPostRequestDocumentFaker.Value;
82+
public Faker<ChickenPatchRequestDocument> ChickenPatchRequestDocument => _lazyChickenPatchRequestDocumentFaker.Value;
83+
public Faker<HenHousePostRequestDocument> HenHousePostRequestDocument => _lazyHenHousePostRequestDocumentFaker.Value;
84+
public Faker<HenHousePatchRequestDocument> HenHousePatchRequestDocument => _lazyHenHousePatchRequestDocumentFaker.Value;
85+
86+
public NullableReferenceTypesDisabledFaker()
87+
{
88+
_lazyHenHousePostRequestDocumentFaker = new Lazy<Faker<HenHousePostRequestDocument>>(HenHousePostRequestDocumentFakerFactory);
89+
_lazyHenHousePatchRequestDocumentFaker = new Lazy<Faker<HenHousePatchRequestDocument>>(HenHousePatchRequestDocumentFakerFactory);
90+
}
91+
92+
private Faker<HenHousePostRequestDocument> HenHousePostRequestDocumentFakerFactory()
93+
{
94+
Faker<HenHouseRelationshipsInPostRequest> relationshipsInPostRequestFaker = new Faker<HenHouseRelationshipsInPostRequest>()
95+
.RuleFor(relationships => relationships.OldestChicken, _ => _lazyNullableToOneChickenInRequestFaker.Value.Generate())
96+
.RuleFor(relationships => relationships.FirstChicken, _ => _lazyToOneChickenInRequestFaker.Value.Generate())
97+
.RuleFor(relationships => relationships.ChickensReadyForLaying, _ => _lazyToManyChickenInRequestFaker.Value.Generate())
98+
.RuleFor(relationships => relationships.AllChickens, _ => _lazyToManyChickenInRequestFaker.Value.Generate());
99+
100+
Faker<HenHouseDataInPostRequest> dataInPostRequestFaker = new Faker<HenHouseDataInPostRequest>()
101+
.RuleFor(data => data.Relationships, _ => relationshipsInPostRequestFaker.Generate());
102+
103+
return new Faker<HenHousePostRequestDocument>()
104+
.RuleFor(document => document.Data, _ => dataInPostRequestFaker.Generate());
105+
}
106+
107+
private Faker<HenHousePatchRequestDocument> HenHousePatchRequestDocumentFakerFactory()
108+
{
109+
Faker<HenHouseRelationshipsInPatchRequest> relationshipsInPatchRequestFaker = new Faker<HenHouseRelationshipsInPatchRequest>()
110+
.RuleFor(relationships => relationships.OldestChicken, _ => _lazyNullableToOneChickenInRequestFaker.Value.Generate())
111+
.RuleFor(relationships => relationships.FirstChicken, _ => _lazyToOneChickenInRequestFaker.Value.Generate())
112+
.RuleFor(relationships => relationships.ChickensReadyForLaying, _ => _lazyToManyChickenInRequestFaker.Value.Generate())
113+
.RuleFor(relationships => relationships.AllChickens, _ => _lazyToManyChickenInRequestFaker.Value.Generate());
114+
115+
Faker<HenHouseDataInPatchRequest> dataInPatchRequestFaker = new Faker<HenHouseDataInPatchRequest>()
116+
// @formatter:wrap_chained_method_calls chop_if_long
117+
.RuleFor(data => data.Id, faker => faker.Random.Int(1, 100).ToString())
118+
// @formatter:wrap_chained_method_calls restore
119+
.RuleFor(data => data.Relationships, _ => relationshipsInPatchRequestFaker.Generate());
120+
121+
return new Faker<HenHousePatchRequestDocument>()
122+
.RuleFor(document => document.Data, _ => dataInPatchRequestFaker.Generate());
123+
}
124+
}

0 commit comments

Comments
 (0)