Skip to content

Commit aac7719

Browse files
author
Bart Koelman
committed
Annotated TestBuildingBlocks
1 parent c4a229d commit aac7719

18 files changed

+39
-62
lines changed

test/TestBuildingBlocks/AssemblyInfo.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using System.Diagnostics.CodeAnalysis;
42

53
// https://github.com/coverlet-coverage/coverlet/blob/master/Documentation/MSBuildIntegration.md#excluding-from-coverage

test/TestBuildingBlocks/DateTimeExtensions.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using System;
42

53
namespace TestBuildingBlocks

test/TestBuildingBlocks/DbContextExtensions.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using System;
42
using System.Threading.Tasks;
53
using Microsoft.EntityFrameworkCore;

test/TestBuildingBlocks/DummyTest.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using Xunit;
42

53
namespace TestBuildingBlocks

test/TestBuildingBlocks/FakeLoggerFactory.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using System;
42
using System.Collections.Concurrent;
53
using System.Collections.Generic;
@@ -64,7 +62,20 @@ public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Except
6462

6563
public IDisposable BeginScope<TState>(TState state)
6664
{
67-
return null;
65+
return NullScope.Instance;
66+
}
67+
68+
private sealed class NullScope : IDisposable
69+
{
70+
public static readonly NullScope Instance = new();
71+
72+
private NullScope()
73+
{
74+
}
75+
76+
public void Dispose()
77+
{
78+
}
6879
}
6980
}
7081

test/TestBuildingBlocks/FakerContainer.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using System;
42
using System.Diagnostics;
53
using System.Linq;
@@ -24,7 +22,7 @@ private static MethodBase GetTestMethod()
2422
{
2523
var stackTrace = new StackTrace();
2624

27-
MethodBase testMethod = stackTrace.GetFrames().Select(stackFrame => stackFrame.GetMethod()).FirstOrDefault(IsTestMethod);
25+
MethodBase? testMethod = stackTrace.GetFrames().Select(stackFrame => stackFrame.GetMethod()).FirstOrDefault(IsTestMethod);
2826

2927
if (testMethod == null)
3028
{
@@ -36,7 +34,7 @@ private static MethodBase GetTestMethod()
3634
return testMethod;
3735
}
3836

39-
private static bool IsTestMethod(MethodBase method)
37+
private static bool IsTestMethod(MethodBase? method)
4038
{
4139
if (method == null)
4240
{

test/TestBuildingBlocks/FrozenSystemClock.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using System;
42
using Microsoft.AspNetCore.Authentication;
53

test/TestBuildingBlocks/HttpResponseMessageExtensions.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using System.Net;
42
using System.Net.Http;
53
using FluentAssertions;

test/TestBuildingBlocks/IntegrationTest.cs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using System;
42
using System.Net.Http;
53
using System.Net.Http.Headers;
@@ -18,46 +16,46 @@ public abstract class IntegrationTest
1816
protected abstract JsonSerializerOptions SerializerOptions { get; }
1917

2018
public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecuteHeadAsync<TResponseDocument>(string requestUrl,
21-
Action<HttpRequestHeaders> setRequestHeaders = null)
19+
Action<HttpRequestHeaders>? setRequestHeaders = null)
2220
{
2321
return await ExecuteRequestAsync<TResponseDocument>(HttpMethod.Head, requestUrl, null, null, setRequestHeaders);
2422
}
2523

2624
public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecuteGetAsync<TResponseDocument>(string requestUrl,
27-
Action<HttpRequestHeaders> setRequestHeaders = null)
25+
Action<HttpRequestHeaders>? setRequestHeaders = null)
2826
{
2927
return await ExecuteRequestAsync<TResponseDocument>(HttpMethod.Get, requestUrl, null, null, setRequestHeaders);
3028
}
3129

3230
public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecutePostAsync<TResponseDocument>(string requestUrl,
33-
object requestBody, string contentType = HeaderConstants.MediaType, Action<HttpRequestHeaders> setRequestHeaders = null)
31+
object requestBody, string contentType = HeaderConstants.MediaType, Action<HttpRequestHeaders>? setRequestHeaders = null)
3432
{
3533
return await ExecuteRequestAsync<TResponseDocument>(HttpMethod.Post, requestUrl, requestBody, contentType, setRequestHeaders);
3634
}
3735

3836
public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecutePostAtomicAsync<TResponseDocument>(string requestUrl,
39-
object requestBody, string contentType = HeaderConstants.AtomicOperationsMediaType, Action<HttpRequestHeaders> setRequestHeaders = null)
37+
object requestBody, string contentType = HeaderConstants.AtomicOperationsMediaType, Action<HttpRequestHeaders>? setRequestHeaders = null)
4038
{
4139
return await ExecuteRequestAsync<TResponseDocument>(HttpMethod.Post, requestUrl, requestBody, contentType, setRequestHeaders);
4240
}
4341

4442
public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecutePatchAsync<TResponseDocument>(string requestUrl,
45-
object requestBody, string contentType = HeaderConstants.MediaType, Action<HttpRequestHeaders> setRequestHeaders = null)
43+
object requestBody, string contentType = HeaderConstants.MediaType, Action<HttpRequestHeaders>? setRequestHeaders = null)
4644
{
4745
return await ExecuteRequestAsync<TResponseDocument>(HttpMethod.Patch, requestUrl, requestBody, contentType, setRequestHeaders);
4846
}
4947

5048
public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecuteDeleteAsync<TResponseDocument>(string requestUrl,
51-
object requestBody = null, string contentType = HeaderConstants.MediaType, Action<HttpRequestHeaders> setRequestHeaders = null)
49+
object? requestBody = null, string contentType = HeaderConstants.MediaType, Action<HttpRequestHeaders>? setRequestHeaders = null)
5250
{
5351
return await ExecuteRequestAsync<TResponseDocument>(HttpMethod.Delete, requestUrl, requestBody, contentType, setRequestHeaders);
5452
}
5553

5654
private async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecuteRequestAsync<TResponseDocument>(HttpMethod method,
57-
string requestUrl, object requestBody, string contentType, Action<HttpRequestHeaders> setRequestHeaders)
55+
string requestUrl, object? requestBody, string? contentType, Action<HttpRequestHeaders>? setRequestHeaders)
5856
{
5957
using var request = new HttpRequestMessage(method, requestUrl);
60-
string requestText = SerializeRequest(requestBody);
58+
string? requestText = SerializeRequest(requestBody);
6159

6260
if (!string.IsNullOrEmpty(requestText))
6361
{
@@ -79,18 +77,18 @@ public abstract class IntegrationTest
7977
string responseText = await responseMessage.Content.ReadAsStringAsync();
8078
var responseDocument = DeserializeResponse<TResponseDocument>(responseText);
8179

82-
return (responseMessage, responseDocument);
80+
return (responseMessage, responseDocument!);
8381
}
8482

85-
private string SerializeRequest(object requestBody)
83+
private string? SerializeRequest(object? requestBody)
8684
{
8785
return requestBody == null ? null :
8886
requestBody is string stringRequestBody ? stringRequestBody : JsonSerializer.Serialize(requestBody, SerializerOptions);
8987
}
9088

9189
protected abstract HttpClient CreateClient();
9290

93-
private TResponseDocument DeserializeResponse<TResponseDocument>(string responseText)
91+
private TResponseDocument? DeserializeResponse<TResponseDocument>(string responseText)
9492
{
9593
if (typeof(TResponseDocument) == typeof(string))
9694
{

test/TestBuildingBlocks/IntegrationTestContext.cs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using System;
42
using System.Net.Http;
53
using System.Text.Json;
@@ -35,9 +33,9 @@ public class IntegrationTestContext<TStartup, TDbContext> : IntegrationTest, IDi
3533
{
3634
private readonly Lazy<WebApplicationFactory<TStartup>> _lazyFactory;
3735
private readonly TestControllerProvider _testControllerProvider = new();
38-
private Action<ILoggingBuilder> _loggingConfiguration;
39-
private Action<IServiceCollection> _beforeServicesConfiguration;
40-
private Action<IServiceCollection> _afterServicesConfiguration;
36+
private Action<ILoggingBuilder>? _loggingConfiguration;
37+
private Action<IServiceCollection>? _beforeServicesConfiguration;
38+
private Action<IServiceCollection>? _afterServicesConfiguration;
4139

4240
protected override JsonSerializerOptions SerializerOptions
4341
{
@@ -145,21 +143,21 @@ public async Task RunOnDatabaseAsync(Func<TDbContext, Task> asyncAction)
145143

146144
private sealed class IntegrationTestWebApplicationFactory : WebApplicationFactory<TStartup>
147145
{
148-
private Action<ILoggingBuilder> _loggingConfiguration;
149-
private Action<IServiceCollection> _beforeServicesConfiguration;
150-
private Action<IServiceCollection> _afterServicesConfiguration;
146+
private Action<ILoggingBuilder>? _loggingConfiguration;
147+
private Action<IServiceCollection>? _beforeServicesConfiguration;
148+
private Action<IServiceCollection>? _afterServicesConfiguration;
151149

152-
public void ConfigureLogging(Action<ILoggingBuilder> loggingConfiguration)
150+
public void ConfigureLogging(Action<ILoggingBuilder>? loggingConfiguration)
153151
{
154152
_loggingConfiguration = loggingConfiguration;
155153
}
156154

157-
public void ConfigureServicesBeforeStartup(Action<IServiceCollection> servicesConfiguration)
155+
public void ConfigureServicesBeforeStartup(Action<IServiceCollection>? servicesConfiguration)
158156
{
159157
_beforeServicesConfiguration = servicesConfiguration;
160158
}
161159

162-
public void ConfigureServicesAfterStartup(Action<IServiceCollection> servicesConfiguration)
160+
public void ConfigureServicesAfterStartup(Action<IServiceCollection>? servicesConfiguration)
163161
{
164162
_afterServicesConfiguration = servicesConfiguration;
165163
}

test/TestBuildingBlocks/JsonApiStringConverter.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using System;
42
using System.Linq;
53
using System.Text.Json;
@@ -16,7 +14,7 @@ public static string ExtractErrorId(string responseBody)
1614
try
1715
{
1816
using JsonDocument document = JsonDocument.Parse(responseBody);
19-
return document.RootElement.GetProperty("errors").EnumerateArray().Single().GetProperty("id").GetString();
17+
return document.RootElement.GetProperty("errors").EnumerateArray().Single()!.GetProperty("id").GetString()!;
2018
}
2119
catch (Exception exception)
2220
{

test/TestBuildingBlocks/NeverSameResourceChangeTracker.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using JsonApiDotNetCore.Resources;
42

53
namespace TestBuildingBlocks

test/TestBuildingBlocks/ObjectAssertionsExtensions.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using System;
42
using System.IO;
53
using System.Text;

test/TestBuildingBlocks/QueryableExtensions.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using System.Linq;
42
using System.Threading;
53
using System.Threading.Tasks;
@@ -17,11 +15,11 @@ public static Task<TResource> FirstWithIdAsync<TResource, TId>(this IQueryable<T
1715
return resources.FirstAsync(resource => Equals(resource.Id, id), cancellationToken);
1816
}
1917

20-
public static Task<TResource> FirstWithIdOrDefaultAsync<TResource, TId>(this IQueryable<TResource> resources, TId id,
18+
public static async Task<TResource?> FirstWithIdOrDefaultAsync<TResource, TId>(this IQueryable<TResource> resources, TId id,
2119
CancellationToken cancellationToken = default)
2220
where TResource : IIdentifiable<TId>
2321
{
24-
return resources.FirstOrDefaultAsync(resource => Equals(resource.Id, id), cancellationToken);
22+
return await resources.FirstOrDefaultAsync(resource => Equals(resource.Id, id), cancellationToken);
2523
}
2624
}
2725
}

test/TestBuildingBlocks/ServiceCollectionExtensions.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using System.Linq;
42
using System.Reflection;
53
using JsonApiDotNetCore;

test/TestBuildingBlocks/TestControllerProvider.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using System;
42
using System.Collections.Generic;
53
using System.Reflection;

test/TestBuildingBlocks/TestableStartup.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using JsonApiDotNetCore.Configuration;
42
using Microsoft.AspNetCore.Builder;
53
using Microsoft.AspNetCore.Hosting;

test/TestBuildingBlocks/Unknown.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#nullable disable
2-
31
using System;
42
using JsonApiDotNetCore.Resources;
53

0 commit comments

Comments
 (0)