From 972c50c2bf2e790a0b45c61be86b4609311610a7 Mon Sep 17 00:00:00 2001
From: Bart Koelman <10324372+bkoelman@users.noreply.github.com>
Date: Fri, 22 Mar 2024 03:53:31 +0100
Subject: [PATCH] Revert "Resharper: Replace async method with Task return"
Reverting this Resharper rule because it makes stack traces harder to understand, while the gain it provides is theoretical.
Resharper turned off this suggestion in the default ruleset in a later version.
This reverts commit 3e1b27b6c4723b08e827904e9ffdd30f8fb71383.
---
WarningSeverities.DotSettings | 1 -
.../Repositories/DapperRepository.cs | 4 +-
.../AtomicOperations/OperationsProcessor.cs | 4 +-
.../Controllers/JsonApiController.cs | 40 +++++++++----------
.../JsonApiOperationsController.cs | 4 +-
.../Middleware/JsonApiOutputFormatter.cs | 4 +-
.../Serialization/Response/JsonApiWriter.cs | 8 ++--
.../Services/JsonApiResourceService.cs | 12 +++---
.../AtomicOperations/AtomicOperationsTests.cs | 5 ++-
.../CreateMusicTrackOperationsController.cs | 4 +-
...micSerializationResourceDefinitionTests.cs | 5 ++-
.../Transactions/AtomicRollbackTests.cs | 10 ++++-
.../Meta/ResponseMetaTests.cs | 5 ++-
.../Meta/TopLevelCountTests.cs | 5 ++-
.../Microservices/MessagingGroupDefinition.cs | 4 +-
.../Microservices/MessagingUserDefinition.cs | 4 +-
.../OutboxTests.Group.cs | 5 ++-
.../OutboxTests.User.cs | 5 ++-
.../SoftDeletionAwareResourceService.cs | 10 +++--
.../ZeroKeys/EmptyGuidAsKeyTests.cs | 5 ++-
.../ZeroKeys/ZeroAsKeyTests.cs | 5 ++-
.../TestBuildingBlocks/DbContextExtensions.cs | 8 ++--
test/TestBuildingBlocks/IntegrationTest.cs | 28 ++++++-------
.../TestBuildingBlocks/QueryableExtensions.cs | 4 +-
24 files changed, 110 insertions(+), 79 deletions(-)
diff --git a/WarningSeverities.DotSettings b/WarningSeverities.DotSettings
index a0fae5acd2..060df315df 100644
--- a/WarningSeverities.DotSettings
+++ b/WarningSeverities.DotSettings
@@ -166,7 +166,6 @@
WARNING
WARNING
WARNING
- WARNING
WARNING
WARNING
WARNING
diff --git a/src/Examples/DapperExample/Repositories/DapperRepository.cs b/src/Examples/DapperExample/Repositories/DapperRepository.cs
index c263ad7767..bbbeda2ea3 100644
--- a/src/Examples/DapperExample/Repositories/DapperRepository.cs
+++ b/src/Examples/DapperExample/Repositories/DapperRepository.cs
@@ -161,7 +161,7 @@ public async Task> GetAsync(QueryLayer queryLayer
}
///
- public Task CountAsync(FilterExpression? filter, CancellationToken cancellationToken)
+ public async Task CountAsync(FilterExpression? filter, CancellationToken cancellationToken)
{
var queryLayer = new QueryLayer(ResourceType)
{
@@ -173,7 +173,7 @@ public Task CountAsync(FilterExpression? filter, CancellationToken cancella
CommandDefinition sqlCommand = _dapperFacade.GetSqlCommand(selectNode, cancellationToken);
LogSqlCommand(sqlCommand);
- return ExecuteQueryAsync(connection => connection.ExecuteScalarAsync(sqlCommand), cancellationToken);
+ return await ExecuteQueryAsync(async connection => await connection.ExecuteScalarAsync(sqlCommand), cancellationToken);
}
///
diff --git a/src/JsonApiDotNetCore/AtomicOperations/OperationsProcessor.cs b/src/JsonApiDotNetCore/AtomicOperations/OperationsProcessor.cs
index 9e78fcfcbe..cf1cdd7b65 100644
--- a/src/JsonApiDotNetCore/AtomicOperations/OperationsProcessor.cs
+++ b/src/JsonApiDotNetCore/AtomicOperations/OperationsProcessor.cs
@@ -99,7 +99,7 @@ public OperationsProcessor(IOperationProcessorAccessor operationProcessorAccesso
return results;
}
- protected virtual Task ProcessOperationAsync(OperationContainer operation, CancellationToken cancellationToken)
+ protected virtual async Task ProcessOperationAsync(OperationContainer operation, CancellationToken cancellationToken)
{
cancellationToken.ThrowIfCancellationRequested();
@@ -108,7 +108,7 @@ public OperationsProcessor(IOperationProcessorAccessor operationProcessorAccesso
_targetedFields.CopyFrom(operation.TargetedFields);
_request.CopyFrom(operation.Request);
- return _operationProcessorAccessor.ProcessAsync(operation, cancellationToken);
+ return await _operationProcessorAccessor.ProcessAsync(operation, cancellationToken);
}
protected void TrackLocalIdsForOperation(OperationContainer operation)
diff --git a/src/JsonApiDotNetCore/Controllers/JsonApiController.cs b/src/JsonApiDotNetCore/Controllers/JsonApiController.cs
index b457dd5d99..127b37ca84 100644
--- a/src/JsonApiDotNetCore/Controllers/JsonApiController.cs
+++ b/src/JsonApiDotNetCore/Controllers/JsonApiController.cs
@@ -42,78 +42,78 @@ protected JsonApiController(IJsonApiOptions options, IResourceGraph resourceGrap
///
[HttpGet]
[HttpHead]
- public override Task GetAsync(CancellationToken cancellationToken)
+ public override async Task GetAsync(CancellationToken cancellationToken)
{
- return base.GetAsync(cancellationToken);
+ return await base.GetAsync(cancellationToken);
}
///
[HttpGet("{id}")]
[HttpHead("{id}")]
- public override Task GetAsync([Required] TId id, CancellationToken cancellationToken)
+ public override async Task GetAsync([Required] TId id, CancellationToken cancellationToken)
{
- return base.GetAsync(id, cancellationToken);
+ return await base.GetAsync(id, cancellationToken);
}
///
[HttpGet("{id}/{relationshipName}")]
[HttpHead("{id}/{relationshipName}")]
- public override Task GetSecondaryAsync([Required] TId id, [Required] string relationshipName, CancellationToken cancellationToken)
+ public override async Task GetSecondaryAsync([Required] TId id, [Required] string relationshipName, CancellationToken cancellationToken)
{
- return base.GetSecondaryAsync(id, relationshipName, cancellationToken);
+ return await base.GetSecondaryAsync(id, relationshipName, cancellationToken);
}
///
[HttpGet("{id}/relationships/{relationshipName}")]
[HttpHead("{id}/relationships/{relationshipName}")]
- public override Task GetRelationshipAsync([Required] TId id, [Required] string relationshipName, CancellationToken cancellationToken)
+ public override async Task GetRelationshipAsync([Required] TId id, [Required] string relationshipName, CancellationToken cancellationToken)
{
- return base.GetRelationshipAsync(id, relationshipName, cancellationToken);
+ return await base.GetRelationshipAsync(id, relationshipName, cancellationToken);
}
///
[HttpPost]
- public override Task PostAsync([Required] TResource resource, CancellationToken cancellationToken)
+ public override async Task PostAsync([Required] TResource resource, CancellationToken cancellationToken)
{
- return base.PostAsync(resource, cancellationToken);
+ return await base.PostAsync(resource, cancellationToken);
}
///
[HttpPost("{id}/relationships/{relationshipName}")]
- public override Task PostRelationshipAsync([Required] TId id, [Required] string relationshipName,
+ public override async Task PostRelationshipAsync([Required] TId id, [Required] string relationshipName,
[Required] ISet rightResourceIds, CancellationToken cancellationToken)
{
- return base.PostRelationshipAsync(id, relationshipName, rightResourceIds, cancellationToken);
+ return await base.PostRelationshipAsync(id, relationshipName, rightResourceIds, cancellationToken);
}
///
[HttpPatch("{id}")]
- public override Task PatchAsync([Required] TId id, [Required] TResource resource, CancellationToken cancellationToken)
+ public override async Task PatchAsync([Required] TId id, [Required] TResource resource, CancellationToken cancellationToken)
{
- return base.PatchAsync(id, resource, cancellationToken);
+ return await base.PatchAsync(id, resource, cancellationToken);
}
///
[HttpPatch("{id}/relationships/{relationshipName}")]
// Parameter `[Required] object? rightValue` makes Swashbuckle generate the OpenAPI request body as required. We don't actually validate ModelState, so it doesn't hurt.
- public override Task PatchRelationshipAsync([Required] TId id, [Required] string relationshipName, [Required] object? rightValue,
+ public override async Task PatchRelationshipAsync([Required] TId id, [Required] string relationshipName, [Required] object? rightValue,
CancellationToken cancellationToken)
{
- return base.PatchRelationshipAsync(id, relationshipName, rightValue, cancellationToken);
+ return await base.PatchRelationshipAsync(id, relationshipName, rightValue, cancellationToken);
}
///
[HttpDelete("{id}")]
- public override Task DeleteAsync([Required] TId id, CancellationToken cancellationToken)
+ public override async Task DeleteAsync([Required] TId id, CancellationToken cancellationToken)
{
- return base.DeleteAsync(id, cancellationToken);
+ return await base.DeleteAsync(id, cancellationToken);
}
///
[HttpDelete("{id}/relationships/{relationshipName}")]
- public override Task DeleteRelationshipAsync([Required] TId id, [Required] string relationshipName,
+ public override async Task DeleteRelationshipAsync([Required] TId id, [Required] string relationshipName,
[Required] ISet rightResourceIds, CancellationToken cancellationToken)
{
- return base.DeleteRelationshipAsync(id, relationshipName, rightResourceIds, cancellationToken);
+ return await base.DeleteRelationshipAsync(id, relationshipName, rightResourceIds, cancellationToken);
}
}
diff --git a/src/JsonApiDotNetCore/Controllers/JsonApiOperationsController.cs b/src/JsonApiDotNetCore/Controllers/JsonApiOperationsController.cs
index 9b5b747c22..bc14d4886e 100644
--- a/src/JsonApiDotNetCore/Controllers/JsonApiOperationsController.cs
+++ b/src/JsonApiDotNetCore/Controllers/JsonApiOperationsController.cs
@@ -18,8 +18,8 @@ public abstract class JsonApiOperationsController(
{
///
[HttpPost]
- public override Task PostOperationsAsync([Required] IList operations, CancellationToken cancellationToken)
+ public override async Task PostOperationsAsync([Required] IList operations, CancellationToken cancellationToken)
{
- return base.PostOperationsAsync(operations, cancellationToken);
+ return await base.PostOperationsAsync(operations, cancellationToken);
}
}
diff --git a/src/JsonApiDotNetCore/Middleware/JsonApiOutputFormatter.cs b/src/JsonApiDotNetCore/Middleware/JsonApiOutputFormatter.cs
index f88e11c33d..80d7863251 100644
--- a/src/JsonApiDotNetCore/Middleware/JsonApiOutputFormatter.cs
+++ b/src/JsonApiDotNetCore/Middleware/JsonApiOutputFormatter.cs
@@ -16,11 +16,11 @@ public bool CanWriteResult(OutputFormatterCanWriteContext context)
}
///
- public Task WriteAsync(OutputFormatterWriteContext context)
+ public async Task WriteAsync(OutputFormatterWriteContext context)
{
ArgumentGuard.NotNull(context);
var writer = context.HttpContext.RequestServices.GetRequiredService();
- return writer.WriteAsync(context.Object, context.HttpContext);
+ await writer.WriteAsync(context.Object, context.HttpContext);
}
}
diff --git a/src/JsonApiDotNetCore/Serialization/Response/JsonApiWriter.cs b/src/JsonApiDotNetCore/Serialization/Response/JsonApiWriter.cs
index 8ea0d060e2..22de5284a2 100644
--- a/src/JsonApiDotNetCore/Serialization/Response/JsonApiWriter.cs
+++ b/src/JsonApiDotNetCore/Serialization/Response/JsonApiWriter.cs
@@ -44,14 +44,14 @@ public JsonApiWriter(IJsonApiRequest request, IJsonApiOptions options, IResponse
}
///
- public Task WriteAsync(object? model, HttpContext httpContext)
+ public async Task WriteAsync(object? model, HttpContext httpContext)
{
ArgumentGuard.NotNull(httpContext);
if (model == null && !CanWriteBody((HttpStatusCode)httpContext.Response.StatusCode))
{
// Prevent exception from Kestrel server, caused by writing data:null json response.
- return Task.CompletedTask;
+ return;
}
string? responseBody = GetResponseBody(model, httpContext);
@@ -59,7 +59,7 @@ public Task WriteAsync(object? model, HttpContext httpContext)
if (httpContext.Request.Method == HttpMethod.Head.Method)
{
httpContext.Response.GetTypedHeaders().ContentLength = responseBody == null ? 0 : Encoding.UTF8.GetByteCount(responseBody);
- return Task.CompletedTask;
+ return;
}
_traceWriter.LogMessage(() =>
@@ -70,7 +70,7 @@ public Task WriteAsync(object? model, HttpContext httpContext)
return $"Sending {httpContext.Response.StatusCode} response for {method} request at '{url}' with body: <<{responseBody}>>";
});
- return SendResponseBodyAsync(httpContext.Response, responseBody);
+ await SendResponseBodyAsync(httpContext.Response, responseBody);
}
private static bool CanWriteBody(HttpStatusCode statusCode)
diff --git a/src/JsonApiDotNetCore/Services/JsonApiResourceService.cs b/src/JsonApiDotNetCore/Services/JsonApiResourceService.cs
index c9a19ff73d..5984b6215b 100644
--- a/src/JsonApiDotNetCore/Services/JsonApiResourceService.cs
+++ b/src/JsonApiDotNetCore/Services/JsonApiResourceService.cs
@@ -244,19 +244,19 @@ protected async Task AssertPrimaryResourceDoesNotExistAsync(TResource resource,
}
}
- protected virtual Task InitializeResourceAsync(TResource resourceForDatabase, CancellationToken cancellationToken)
+ protected virtual async Task InitializeResourceAsync(TResource resourceForDatabase, CancellationToken cancellationToken)
{
- return _resourceDefinitionAccessor.OnPrepareWriteAsync(resourceForDatabase, WriteOperationKind.CreateResource, cancellationToken);
+ await _resourceDefinitionAccessor.OnPrepareWriteAsync(resourceForDatabase, WriteOperationKind.CreateResource, cancellationToken);
}
- private Task AccurizeResourceTypesInHierarchyToAssignInRelationshipsAsync(TResource primaryResource, CancellationToken cancellationToken)
+ private async Task AccurizeResourceTypesInHierarchyToAssignInRelationshipsAsync(TResource primaryResource, CancellationToken cancellationToken)
{
- return ValidateResourcesToAssignInRelationshipsExistWithRefreshAsync(primaryResource, true, cancellationToken);
+ await ValidateResourcesToAssignInRelationshipsExistWithRefreshAsync(primaryResource, true, cancellationToken);
}
- protected Task AssertResourcesToAssignInRelationshipsExistAsync(TResource primaryResource, CancellationToken cancellationToken)
+ protected async Task AssertResourcesToAssignInRelationshipsExistAsync(TResource primaryResource, CancellationToken cancellationToken)
{
- return ValidateResourcesToAssignInRelationshipsExistWithRefreshAsync(primaryResource, false, cancellationToken);
+ await ValidateResourcesToAssignInRelationshipsExistWithRefreshAsync(primaryResource, false, cancellationToken);
}
private async Task ValidateResourcesToAssignInRelationshipsExistWithRefreshAsync(TResource primaryResource, bool onlyIfTypeHierarchy,
diff --git a/test/DapperTests/IntegrationTests/AtomicOperations/AtomicOperationsTests.cs b/test/DapperTests/IntegrationTests/AtomicOperations/AtomicOperationsTests.cs
index 286820b702..a3d665cc61 100644
--- a/test/DapperTests/IntegrationTests/AtomicOperations/AtomicOperationsTests.cs
+++ b/test/DapperTests/IntegrationTests/AtomicOperations/AtomicOperationsTests.cs
@@ -421,7 +421,10 @@ public async Task Can_rollback_on_error()
const string personLocalId = "new-person";
- await _testContext.RunOnDatabaseAsync(dbContext => _testContext.ClearAllTablesAsync(dbContext));
+ await _testContext.RunOnDatabaseAsync(async dbContext =>
+ {
+ await _testContext.ClearAllTablesAsync(dbContext);
+ });
var requestBody = new
{
diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Controllers/CreateMusicTrackOperationsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Controllers/CreateMusicTrackOperationsController.cs
index 8285661ede..01a378e5aa 100644
--- a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Controllers/CreateMusicTrackOperationsController.cs
+++ b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Controllers/CreateMusicTrackOperationsController.cs
@@ -18,11 +18,11 @@ public sealed class CreateMusicTrackOperationsController(
IJsonApiOptions options, IResourceGraph resourceGraph, ILoggerFactory loggerFactory, IOperationsProcessor processor, IJsonApiRequest request,
ITargetedFields targetedFields) : JsonApiOperationsController(options, resourceGraph, loggerFactory, processor, request, targetedFields)
{
- public override Task PostOperationsAsync(IList operations, CancellationToken cancellationToken)
+ public override async Task PostOperationsAsync(IList operations, CancellationToken cancellationToken)
{
AssertOnlyCreatingMusicTracks(operations);
- return base.PostOperationsAsync(operations, cancellationToken);
+ return await base.PostOperationsAsync(operations, cancellationToken);
}
private static void AssertOnlyCreatingMusicTracks(IEnumerable operations)
diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/ResourceDefinitions/Serialization/AtomicSerializationResourceDefinitionTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/ResourceDefinitions/Serialization/AtomicSerializationResourceDefinitionTests.cs
index b8095b38f9..4e2fa4f937 100644
--- a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/ResourceDefinitions/Serialization/AtomicSerializationResourceDefinitionTests.cs
+++ b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/ResourceDefinitions/Serialization/AtomicSerializationResourceDefinitionTests.cs
@@ -42,7 +42,10 @@ public async Task Transforms_on_create_resource_with_side_effects()
List newCompanies = _fakers.RecordCompany.Generate(2);
- await _testContext.RunOnDatabaseAsync(dbContext => dbContext.ClearTableAsync());
+ await _testContext.RunOnDatabaseAsync(async dbContext =>
+ {
+ await dbContext.ClearTableAsync();
+ });
var requestBody = new
{
diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Transactions/AtomicRollbackTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Transactions/AtomicRollbackTests.cs
index 5fe125928c..82646686d4 100644
--- a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Transactions/AtomicRollbackTests.cs
+++ b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Transactions/AtomicRollbackTests.cs
@@ -27,7 +27,10 @@ public async Task Can_rollback_on_error()
DateTimeOffset newBornAt = _fakers.Performer.Generate().BornAt;
string newTitle = _fakers.MusicTrack.Generate().Title;
- await _testContext.RunOnDatabaseAsync(dbContext => dbContext.ClearTablesAsync());
+ await _testContext.RunOnDatabaseAsync(async dbContext =>
+ {
+ await dbContext.ClearTablesAsync();
+ });
string unknownPerformerId = Unknown.StringId.For();
@@ -110,7 +113,10 @@ public async Task Can_restore_to_previous_savepoint_on_error()
// Arrange
string newTrackTitle = _fakers.MusicTrack.Generate().Title;
- await _testContext.RunOnDatabaseAsync(dbContext => dbContext.ClearTablesAsync());
+ await _testContext.RunOnDatabaseAsync(async dbContext =>
+ {
+ await dbContext.ClearTablesAsync();
+ });
const string trackLid = "track-1";
diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ResponseMetaTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ResponseMetaTests.cs
index 472803c67d..ed00732532 100644
--- a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ResponseMetaTests.cs
+++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ResponseMetaTests.cs
@@ -29,7 +29,10 @@ public ResponseMetaTests(IntegrationTestContext,
public async Task Returns_top_level_meta()
{
// Arrange
- await _testContext.RunOnDatabaseAsync(dbContext => dbContext.ClearTableAsync());
+ await _testContext.RunOnDatabaseAsync(async dbContext =>
+ {
+ await dbContext.ClearTableAsync();
+ });
const string route = "/supportTickets";
diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/TopLevelCountTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/TopLevelCountTests.cs
index fbad011db0..d074c87160 100644
--- a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/TopLevelCountTests.cs
+++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/TopLevelCountTests.cs
@@ -83,7 +83,10 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
public async Task Renders_resource_count_for_empty_collection()
{
// Arrange
- await _testContext.RunOnDatabaseAsync(dbContext => dbContext.ClearTableAsync());
+ await _testContext.RunOnDatabaseAsync(async dbContext =>
+ {
+ await dbContext.ClearTableAsync();
+ });
const string route = "/supportTickets";
diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/MessagingGroupDefinition.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/MessagingGroupDefinition.cs
index e6c1d53314..7c392eaf7a 100644
--- a/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/MessagingGroupDefinition.cs
+++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/MessagingGroupDefinition.cs
@@ -166,8 +166,8 @@ protected async Task FinishWriteAsync(DomainGroup group, WriteOperationKind writ
protected abstract Task FlushMessageAsync(OutgoingMessage message, CancellationToken cancellationToken);
- protected virtual Task GetGroupToDeleteAsync(Guid groupId, CancellationToken cancellationToken)
+ protected virtual async Task GetGroupToDeleteAsync(Guid groupId, CancellationToken cancellationToken)
{
- return _groupSet.Include(group => group.Users).FirstOrDefaultAsync(group => group.Id == groupId, cancellationToken);
+ return await _groupSet.Include(group => group.Users).FirstOrDefaultAsync(group => group.Id == groupId, cancellationToken);
}
}
diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/MessagingUserDefinition.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/MessagingUserDefinition.cs
index 72c38677dd..34e2feb786 100644
--- a/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/MessagingUserDefinition.cs
+++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/MessagingUserDefinition.cs
@@ -113,8 +113,8 @@ protected async Task FinishWriteAsync(DomainUser user, WriteOperationKind writeO
protected abstract Task FlushMessageAsync(OutgoingMessage message, CancellationToken cancellationToken);
- protected virtual Task GetUserToDeleteAsync(Guid userId, CancellationToken cancellationToken)
+ protected virtual async Task GetUserToDeleteAsync(Guid userId, CancellationToken cancellationToken)
{
- return _userSet.Include(domainUser => domainUser.Group).FirstOrDefaultAsync(domainUser => domainUser.Id == userId, cancellationToken);
+ return await _userSet.Include(domainUser => domainUser.Group).FirstOrDefaultAsync(domainUser => domainUser.Id == userId, cancellationToken);
}
}
diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/TransactionalOutboxPattern/OutboxTests.Group.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/TransactionalOutboxPattern/OutboxTests.Group.cs
index 505675269f..cc5b5e84ab 100644
--- a/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/TransactionalOutboxPattern/OutboxTests.Group.cs
+++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/TransactionalOutboxPattern/OutboxTests.Group.cs
@@ -19,7 +19,10 @@ public async Task Create_group_writes_to_outbox()
string newGroupName = _fakers.DomainGroup.Generate().Name;
- await _testContext.RunOnDatabaseAsync(dbContext => dbContext.ClearTableAsync());
+ await _testContext.RunOnDatabaseAsync(async dbContext =>
+ {
+ await dbContext.ClearTableAsync();
+ });
var requestBody = new
{
diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/TransactionalOutboxPattern/OutboxTests.User.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/TransactionalOutboxPattern/OutboxTests.User.cs
index d725731020..5ec47bb34a 100644
--- a/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/TransactionalOutboxPattern/OutboxTests.User.cs
+++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Microservices/TransactionalOutboxPattern/OutboxTests.User.cs
@@ -20,7 +20,10 @@ public async Task Create_user_writes_to_outbox()
string newLoginName = _fakers.DomainUser.Generate().LoginName;
string newDisplayName = _fakers.DomainUser.Generate().DisplayName!;
- await _testContext.RunOnDatabaseAsync(dbContext => dbContext.ClearTableAsync());
+ await _testContext.RunOnDatabaseAsync(async dbContext =>
+ {
+ await dbContext.ClearTableAsync();
+ });
var requestBody = new
{
diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/SoftDeletionAwareResourceService.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/SoftDeletionAwareResourceService.cs
index c7449397a9..9baef849ed 100644
--- a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/SoftDeletionAwareResourceService.cs
+++ b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/SoftDeletionAwareResourceService.cs
@@ -73,14 +73,16 @@ public override async Task AddToToManyRelationshipAsync(TId leftId, string relat
await base.AddToToManyRelationshipAsync(leftId, relationshipName, rightResourceIds, cancellationToken);
}
- public override Task DeleteAsync(TId id, CancellationToken cancellationToken)
+ public override async Task DeleteAsync(TId id, CancellationToken cancellationToken)
{
if (IsSoftDeletable(typeof(TResource)))
{
- return SoftDeleteAsync(id, cancellationToken);
+ await SoftDeleteAsync(id, cancellationToken);
+ }
+ else
+ {
+ await base.DeleteAsync(id, cancellationToken);
}
-
- return base.DeleteAsync(id, cancellationToken);
}
private async Task SoftDeleteAsync(TId id, CancellationToken cancellationToken)
diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ZeroKeys/EmptyGuidAsKeyTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ZeroKeys/EmptyGuidAsKeyTests.cs
index fbe71bb1a1..93881be9eb 100644
--- a/test/JsonApiDotNetCoreTests/IntegrationTests/ZeroKeys/EmptyGuidAsKeyTests.cs
+++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ZeroKeys/EmptyGuidAsKeyTests.cs
@@ -97,7 +97,10 @@ public async Task Can_create_resource_with_empty_ID()
// Arrange
string newName = _fakers.Map.Generate().Name;
- await _testContext.RunOnDatabaseAsync(dbContext => dbContext.ClearTableAsync