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()); + await _testContext.RunOnDatabaseAsync(async dbContext => + { + await dbContext.ClearTableAsync(); + }); var requestBody = new { diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ZeroKeys/ZeroAsKeyTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ZeroKeys/ZeroAsKeyTests.cs index 7c5c682e1f..19baa0cf58 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ZeroKeys/ZeroAsKeyTests.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ZeroKeys/ZeroAsKeyTests.cs @@ -96,7 +96,10 @@ public async Task Can_create_resource_with_zero_ID() // Arrange string newTitle = _fakers.Game.Generate().Title; - await _testContext.RunOnDatabaseAsync(dbContext => dbContext.ClearTableAsync()); + await _testContext.RunOnDatabaseAsync(async dbContext => + { + await dbContext.ClearTableAsync(); + }); var requestBody = new { diff --git a/test/TestBuildingBlocks/DbContextExtensions.cs b/test/TestBuildingBlocks/DbContextExtensions.cs index f7c8eb7251..d3a8a0e8ad 100644 --- a/test/TestBuildingBlocks/DbContextExtensions.cs +++ b/test/TestBuildingBlocks/DbContextExtensions.cs @@ -10,17 +10,17 @@ public static void AddInRange(this DbContext dbContext, params object[] entities dbContext.AddRange(entities); } - public static Task ClearTableAsync(this DbContext dbContext) + public static async Task ClearTableAsync(this DbContext dbContext) where TEntity : class { - return ClearTablesAsync(dbContext, typeof(TEntity)); + await ClearTablesAsync(dbContext, typeof(TEntity)); } - public static Task ClearTablesAsync(this DbContext dbContext) + public static async Task ClearTablesAsync(this DbContext dbContext) where TEntity1 : class where TEntity2 : class { - return ClearTablesAsync(dbContext, typeof(TEntity1), typeof(TEntity2)); + await ClearTablesAsync(dbContext, typeof(TEntity1), typeof(TEntity2)); } private static async Task ClearTablesAsync(this DbContext dbContext, params Type[] modelTypes) diff --git a/test/TestBuildingBlocks/IntegrationTest.cs b/test/TestBuildingBlocks/IntegrationTest.cs index d657d02e23..73ced10d8d 100644 --- a/test/TestBuildingBlocks/IntegrationTest.cs +++ b/test/TestBuildingBlocks/IntegrationTest.cs @@ -22,40 +22,40 @@ static IntegrationTest() ThrottleSemaphore = new SemaphoreSlim(maxConcurrentTestRuns); } - public Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecuteHeadAsync(string requestUrl, + public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecuteHeadAsync(string requestUrl, Action? setRequestHeaders = null) { - return ExecuteRequestAsync(HttpMethod.Head, requestUrl, null, null, setRequestHeaders); + return await ExecuteRequestAsync(HttpMethod.Head, requestUrl, null, null, setRequestHeaders); } - public Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecuteGetAsync(string requestUrl, + public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecuteGetAsync(string requestUrl, Action? setRequestHeaders = null) { - return ExecuteRequestAsync(HttpMethod.Get, requestUrl, null, null, setRequestHeaders); + return await ExecuteRequestAsync(HttpMethod.Get, requestUrl, null, null, setRequestHeaders); } - public Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecutePostAsync(string requestUrl, + public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecutePostAsync(string requestUrl, object requestBody, string contentType = HeaderConstants.MediaType, Action? setRequestHeaders = null) { - return ExecuteRequestAsync(HttpMethod.Post, requestUrl, requestBody, contentType, setRequestHeaders); + return await ExecuteRequestAsync(HttpMethod.Post, requestUrl, requestBody, contentType, setRequestHeaders); } - public Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecutePostAtomicAsync(string requestUrl, + public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecutePostAtomicAsync(string requestUrl, object requestBody, string contentType = HeaderConstants.AtomicOperationsMediaType, Action? setRequestHeaders = null) { - return ExecuteRequestAsync(HttpMethod.Post, requestUrl, requestBody, contentType, setRequestHeaders); + return await ExecuteRequestAsync(HttpMethod.Post, requestUrl, requestBody, contentType, setRequestHeaders); } - public Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecutePatchAsync(string requestUrl, + public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecutePatchAsync(string requestUrl, object requestBody, string contentType = HeaderConstants.MediaType, Action? setRequestHeaders = null) { - return ExecuteRequestAsync(HttpMethod.Patch, requestUrl, requestBody, contentType, setRequestHeaders); + return await ExecuteRequestAsync(HttpMethod.Patch, requestUrl, requestBody, contentType, setRequestHeaders); } - public Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecuteDeleteAsync(string requestUrl, + public async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecuteDeleteAsync(string requestUrl, object? requestBody = null, string contentType = HeaderConstants.MediaType, Action? setRequestHeaders = null) { - return ExecuteRequestAsync(HttpMethod.Delete, requestUrl, requestBody, contentType, setRequestHeaders); + return await ExecuteRequestAsync(HttpMethod.Delete, requestUrl, requestBody, contentType, setRequestHeaders); } private async Task<(HttpResponseMessage httpResponse, TResponseDocument responseDocument)> ExecuteRequestAsync(HttpMethod method, @@ -116,9 +116,9 @@ static IntegrationTest() } } - public Task InitializeAsync() + public async Task InitializeAsync() { - return ThrottleSemaphore.WaitAsync(); + await ThrottleSemaphore.WaitAsync(); } public virtual Task DisposeAsync() diff --git a/test/TestBuildingBlocks/QueryableExtensions.cs b/test/TestBuildingBlocks/QueryableExtensions.cs index e3f6f33e27..71538f13c0 100644 --- a/test/TestBuildingBlocks/QueryableExtensions.cs +++ b/test/TestBuildingBlocks/QueryableExtensions.cs @@ -11,10 +11,10 @@ public static Task FirstWithIdAsync(this IQueryable Equals(resource.Id, id), cancellationToken); } - public static Task FirstWithIdOrDefaultAsync(this IQueryable resources, TId id, + public static async Task FirstWithIdOrDefaultAsync(this IQueryable resources, TId id, CancellationToken cancellationToken = default) where TResource : IIdentifiable { - return resources.FirstOrDefaultAsync(resource => Equals(resource.Id, id), cancellationToken); + return await resources.FirstOrDefaultAsync(resource => Equals(resource.Id, id), cancellationToken); } }