From 4306297200bfe7e9199611a31ce91d18db14a8a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20B=C4=85czek?= <74410956+kamilbaczek@users.noreply.github.com> Date: Sun, 16 Nov 2025 14:26:53 +0100 Subject: [PATCH 1/2] feat: upgrade xUnit to version 3 and clean up package references --- .../Src/Directory.Build.props | 50 +++++++++---------- .../Fitnet.ArchitectureTests.csproj | 7 ++- .../Fitnet.IntegrationTests.csproj | 7 ++- .../SignContract/SignContractTestData.cs | 6 +-- .../Fitnet.UnitTests/Fitnet.UnitTests.csproj | 7 ++- ...608060456_MakeSignedAtColumnNotRequired.cs | 1 + ...545_AddCustomerIdColumntoContractsTable.cs | 1 + ...tsAddColumnsToSupportContractExpiration.cs | 1 + .../20230503180337_Create_Offers_table.cs | 1 + .../20230503180338_CreatePassesTable.cs | 1 + 10 files changed, 42 insertions(+), 40 deletions(-) diff --git a/Chapter-1-initial-architecture/Src/Directory.Build.props b/Chapter-1-initial-architecture/Src/Directory.Build.props index 27437e42..43f86f66 100644 --- a/Chapter-1-initial-architecture/Src/Directory.Build.props +++ b/Chapter-1-initial-architecture/Src/Directory.Build.props @@ -1,29 +1,29 @@ - - EvolutionaryArchitecture.$(MSBuildProjectName) - $(AssemblyName) - net9.0 - latest - true - true - enable - enable - true - true - - - - - + + EvolutionaryArchitecture.$(MSBuildProjectName) + $(AssemblyName) + net9.0 + latest + true + true + enable + enable + true + true + + + + + + + + + - - - - \ No newline at end of file diff --git a/Chapter-1-initial-architecture/Src/Fitnet.ArchitectureTests/Fitnet.ArchitectureTests.csproj b/Chapter-1-initial-architecture/Src/Fitnet.ArchitectureTests/Fitnet.ArchitectureTests.csproj index 8211855d..5df53237 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet.ArchitectureTests/Fitnet.ArchitectureTests.csproj +++ b/Chapter-1-initial-architecture/Src/Fitnet.ArchitectureTests/Fitnet.ArchitectureTests.csproj @@ -7,13 +7,12 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Fitnet.IntegrationTests.csproj b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Fitnet.IntegrationTests.csproj index 748d7b7a..702f2bf9 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Fitnet.IntegrationTests.csproj +++ b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Fitnet.IntegrationTests.csproj @@ -11,18 +11,17 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - diff --git a/Chapter-1-initial-architecture/Src/Fitnet.UnitTests/Contracts/SignContract/SignContractTestData.cs b/Chapter-1-initial-architecture/Src/Fitnet.UnitTests/Contracts/SignContract/SignContractTestData.cs index f3821e04..63a6f8aa 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet.UnitTests/Contracts/SignContract/SignContractTestData.cs +++ b/Chapter-1-initial-architecture/Src/Fitnet.UnitTests/Contracts/SignContract/SignContractTestData.cs @@ -4,17 +4,17 @@ internal sealed class SignContractTestData : TheoryData - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Chapter-1-initial-architecture/Src/Fitnet/Contracts/Data/Database/Migrations/20230608060456_MakeSignedAtColumnNotRequired.cs b/Chapter-1-initial-architecture/Src/Fitnet/Contracts/Data/Database/Migrations/20230608060456_MakeSignedAtColumnNotRequired.cs index 4e4bdd56..50518cfc 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet/Contracts/Data/Database/Migrations/20230608060456_MakeSignedAtColumnNotRequired.cs +++ b/Chapter-1-initial-architecture/Src/Fitnet/Contracts/Data/Database/Migrations/20230608060456_MakeSignedAtColumnNotRequired.cs @@ -1,6 +1,7 @@ #nullable disable namespace EvolutionaryArchitecture.Fitnet.Contracts.Data.Database.Migrations; + using System; using Microsoft.EntityFrameworkCore.Migrations; diff --git a/Chapter-1-initial-architecture/Src/Fitnet/Contracts/Data/Database/Migrations/20230608060545_AddCustomerIdColumntoContractsTable.cs b/Chapter-1-initial-architecture/Src/Fitnet/Contracts/Data/Database/Migrations/20230608060545_AddCustomerIdColumntoContractsTable.cs index 2bdc3ade..d0546e05 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet/Contracts/Data/Database/Migrations/20230608060545_AddCustomerIdColumntoContractsTable.cs +++ b/Chapter-1-initial-architecture/Src/Fitnet/Contracts/Data/Database/Migrations/20230608060545_AddCustomerIdColumntoContractsTable.cs @@ -1,6 +1,7 @@ #nullable disable namespace EvolutionaryArchitecture.Fitnet.Contracts.Data.Database.Migrations; + using System; using Microsoft.EntityFrameworkCore.Migrations; diff --git a/Chapter-1-initial-architecture/Src/Fitnet/Contracts/Data/Database/Migrations/20230618131127_ContractsAddColumnsToSupportContractExpiration.cs b/Chapter-1-initial-architecture/Src/Fitnet/Contracts/Data/Database/Migrations/20230618131127_ContractsAddColumnsToSupportContractExpiration.cs index 30e31b28..1e8db3d1 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet/Contracts/Data/Database/Migrations/20230618131127_ContractsAddColumnsToSupportContractExpiration.cs +++ b/Chapter-1-initial-architecture/Src/Fitnet/Contracts/Data/Database/Migrations/20230618131127_ContractsAddColumnsToSupportContractExpiration.cs @@ -1,6 +1,7 @@ #nullable disable namespace EvolutionaryArchitecture.Fitnet.Contracts.Data.Database.Migrations; + using System; using Microsoft.EntityFrameworkCore.Migrations; diff --git a/Chapter-1-initial-architecture/Src/Fitnet/Offers/Data/Database/Migrations/20230503180337_Create_Offers_table.cs b/Chapter-1-initial-architecture/Src/Fitnet/Offers/Data/Database/Migrations/20230503180337_Create_Offers_table.cs index a5e2b173..7ab42e2b 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet/Offers/Data/Database/Migrations/20230503180337_Create_Offers_table.cs +++ b/Chapter-1-initial-architecture/Src/Fitnet/Offers/Data/Database/Migrations/20230503180337_Create_Offers_table.cs @@ -1,6 +1,7 @@ #nullable disable namespace SuperSimpleArchitecture.Fitnet.Migrations.OffersPersistenceMigrations; + using System; using System.Diagnostics.CodeAnalysis; using Microsoft.EntityFrameworkCore.Migrations; diff --git a/Chapter-1-initial-architecture/Src/Fitnet/Passes/Data/Database/Migrations/20230503180338_CreatePassesTable.cs b/Chapter-1-initial-architecture/Src/Fitnet/Passes/Data/Database/Migrations/20230503180338_CreatePassesTable.cs index 26dd8601..3cf19867 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet/Passes/Data/Database/Migrations/20230503180338_CreatePassesTable.cs +++ b/Chapter-1-initial-architecture/Src/Fitnet/Passes/Data/Database/Migrations/20230503180338_CreatePassesTable.cs @@ -1,6 +1,7 @@ #nullable disable namespace EvolutionaryArchitecture.Fitnet.Migrations; + using System; using Microsoft.EntityFrameworkCore.Migrations; From 4b483225f46b3c688d36632eb56885e2e0ce6b45 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Tue, 9 Dec 2025 20:46:33 +0100 Subject: [PATCH 2/2] feat: upgrade xUnit to v3 (#225) --- .../Fitnet.ArchitectureTests.csproj | 6 +++--- .../Common/TestEngine/DatabaseContainer.cs | 4 ++-- .../PrepareContract/PrepareContractTests.cs | 18 +++++++++--------- .../SignContract/SignContractTests.cs | 14 +++++++------- .../Fitnet.IntegrationTests.csproj | 10 +++++----- .../MarkPassAsExpiredTests.cs | 10 +++++----- .../Passes/RegisterPass/RegisterPassTests.cs | 6 +++--- .../GenerateNewPassesPerMonthReportTests.cs | 8 ++++---- .../Fitnet.UnitTests/Fitnet.UnitTests.csproj | 7 ++++--- .../GlobalExceptionHandlerTests.cs | 4 ++-- 10 files changed, 44 insertions(+), 43 deletions(-) diff --git a/Chapter-1-initial-architecture/Src/Fitnet.ArchitectureTests/Fitnet.ArchitectureTests.csproj b/Chapter-1-initial-architecture/Src/Fitnet.ArchitectureTests/Fitnet.ArchitectureTests.csproj index 5df53237..be0e7048 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet.ArchitectureTests/Fitnet.ArchitectureTests.csproj +++ b/Chapter-1-initial-architecture/Src/Fitnet.ArchitectureTests/Fitnet.ArchitectureTests.csproj @@ -7,12 +7,12 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Common/TestEngine/DatabaseContainer.cs b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Common/TestEngine/DatabaseContainer.cs index 1a7f4f52..4f471d6e 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Common/TestEngine/DatabaseContainer.cs +++ b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Common/TestEngine/DatabaseContainer.cs @@ -11,7 +11,7 @@ public sealed class DatabaseContainer : IAsyncLifetime private PostgreSqlContainer? _container; internal string? ConnectionString; - public async Task InitializeAsync() + public async ValueTask InitializeAsync() { _container = new PostgreSqlBuilder() .WithDatabase(Database) @@ -24,5 +24,5 @@ public async Task InitializeAsync() ConnectionString = _container.GetConnectionString(); } - public async Task DisposeAsync() => await _container!.StopAsync(); + public async ValueTask DisposeAsync() => await _container!.StopAsync(); } diff --git a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Contracts/PrepareContract/PrepareContractTests.cs b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Contracts/PrepareContract/PrepareContractTests.cs index 636a52d6..a210c260 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Contracts/PrepareContract/PrepareContractTests.cs +++ b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Contracts/PrepareContract/PrepareContractTests.cs @@ -37,11 +37,11 @@ internal async Task Given_valid_contract_preparation_request_When_preparing_new_ var customerId = Guid.NewGuid(); var requestParameters = PrepareContractRequestParameters.GetValid(); var prepareContractResponse = await PrepareCorrectContract(requestParameters, customerId); - var preparedContractId = await prepareContractResponse.Content.ReadFromJsonAsync(); + var preparedContractId = await prepareContractResponse.Content.ReadFromJsonAsync(TestContext.Current.CancellationToken); var signContractRequestParameters = SignContractRequestParameters.GetValid(preparedContractId); var signContractRequest = new SignContractRequest(signContractRequestParameters.SignedAt); var signContractResponse = - await _applicationHttpClient.PatchAsJsonAsync(signContractRequestParameters.Url, signContractRequest); + await _applicationHttpClient.PatchAsJsonAsync(signContractRequestParameters.Url, signContractRequest, TestContext.Current.CancellationToken); signContractResponse.StatusCode.ShouldBe(HttpStatusCode.NoContent); // Act @@ -62,12 +62,12 @@ internal async Task Given_contract_preparation_request_with_invalid_age_Then_sho // Act using var prepareContractResponse = - await _applicationHttpClient.PostAsJsonAsync(ContractsApiPaths.Prepare, prepareContractRequest); + await _applicationHttpClient.PostAsJsonAsync(ContractsApiPaths.Prepare, prepareContractRequest, TestContext.Current.CancellationToken); // Assert prepareContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict); - var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync(); + var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync(TestContext.Current.CancellationToken); responseMessage?.Status.ShouldBe((int)HttpStatusCode.Conflict); responseMessage?.Title.ShouldBe("Contract can not be prepared for a person who is not adult"); } @@ -83,12 +83,12 @@ internal async Task Given_contract_preparation_request_with_invalid_height_Then_ // Act using var prepareContractResponse = - await _applicationHttpClient.PostAsJsonAsync(ContractsApiPaths.Prepare, prepareContractRequest); + await _applicationHttpClient.PostAsJsonAsync(ContractsApiPaths.Prepare, prepareContractRequest, TestContext.Current.CancellationToken); // Assert prepareContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict); - var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync(); + var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync(TestContext.Current.CancellationToken); responseMessage?.Status.ShouldBe((int)HttpStatusCode.Conflict); responseMessage?.Title.ShouldBe("Customer height must fit maximum limit for gym instruments"); } @@ -107,7 +107,7 @@ internal async Task // Assert prepareContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict); - var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync(); + var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync(TestContext.Current.CancellationToken); responseMessage?.Status.ShouldBe((int)HttpStatusCode.Conflict); responseMessage?.Title.ShouldBe("Previous contract must be signed by the customer"); } @@ -123,9 +123,9 @@ private async Task PrepareCorrectContract(PrepareContractRe return prepareContractResponse; } - public Task InitializeAsync() => Task.CompletedTask; + public ValueTask InitializeAsync() => ValueTask.CompletedTask; - public async Task DisposeAsync() + public async ValueTask DisposeAsync() { _applicationHttpClient.Dispose(); await applicationInMemoryFactory.DisposeAsync(); diff --git a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Contracts/SignContract/SignContractTests.cs b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Contracts/SignContract/SignContractTests.cs index 53b58014..ef6f822a 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Contracts/SignContract/SignContractTests.cs +++ b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Contracts/SignContract/SignContractTests.cs @@ -25,9 +25,9 @@ public SignContractTests(WebApplicationFactory applicationInMemoryFacto .CreateClient(); } - public Task InitializeAsync() => Task.CompletedTask; + public ValueTask InitializeAsync() => ValueTask.CompletedTask; - public async Task DisposeAsync() + public async ValueTask DisposeAsync() { _applicationHttpClient.Dispose(); await _applicationInMemoryFactory.DisposeAsync(); @@ -43,7 +43,7 @@ internal async Task Given_valid_contract_signature_request_Then_should_return_no // Act using var signContractResponse = - await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest); + await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest, TestContext.Current.CancellationToken); // Assert signContractResponse.StatusCode.ShouldBe(HttpStatusCode.NoContent); @@ -58,7 +58,7 @@ internal async Task Given_valid_contract_signature_request_Then_contract_signed_ var signContractRequest = new SignContractRequest(requestParameters.SignedAt); // Act - await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest); + await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest, TestContext.Current.CancellationToken); // Assert EnsureThatContractSignedEventWasPublished(); @@ -76,7 +76,7 @@ internal async Task Given_contract_signature_request_with_not_existing_id_Then_s // Act using var signContractResponse = - await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest); + await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest, TestContext.Current.CancellationToken); // Assert signContractResponse.StatusCode.ShouldBe(HttpStatusCode.NotFound); @@ -94,12 +94,12 @@ internal async Task // Act using var signContractResponse = - await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest); + await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest, TestContext.Current.CancellationToken); // Assert signContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict); - var responseMessage = await signContractResponse.Content.ReadFromJsonAsync(); + var responseMessage = await signContractResponse.Content.ReadFromJsonAsync(TestContext.Current.CancellationToken); responseMessage?.Status.ShouldBe((int)HttpStatusCode.Conflict); responseMessage?.Title.ShouldBe("Contract can not be signed because more than 30 days have passed from the contract preparation"); } diff --git a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Fitnet.IntegrationTests.csproj b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Fitnet.IntegrationTests.csproj index 702f2bf9..64ca184c 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Fitnet.IntegrationTests.csproj +++ b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Fitnet.IntegrationTests.csproj @@ -2,7 +2,7 @@ false - $(NoWarn);S3604 + $(NoWarn);S3604;xUnit1050 @@ -10,15 +10,15 @@ - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Passes/MarkPassAsExpired/MarkPassAsExpiredTests.cs b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Passes/MarkPassAsExpired/MarkPassAsExpiredTests.cs index af61f34e..ec0043db 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Passes/MarkPassAsExpired/MarkPassAsExpiredTests.cs +++ b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Passes/MarkPassAsExpired/MarkPassAsExpiredTests.cs @@ -36,7 +36,7 @@ internal async Task Given_valid_mark_pass_as_expired_request_Then_should_return_ var url = BuildUrl(registeredPassId); // Act - await _applicationHttpClient.PatchAsJsonAsync(url, EmptyContent); + await _applicationHttpClient.PatchAsJsonAsync(url, EmptyContent, TestContext.Current.CancellationToken); // Assert EnsureThatPassExpiredEventWasPublished(); @@ -51,7 +51,7 @@ internal async Task Given_valid_mark_pass_as_expired_request_Then_should_publish var url = BuildUrl(registeredPassId); // Act - using var markAsExpiredResponse = await _applicationHttpClient.PatchAsJsonAsync(url, EmptyContent); + using var markAsExpiredResponse = await _applicationHttpClient.PatchAsJsonAsync(url, EmptyContent, TestContext.Current.CancellationToken); // Assert markAsExpiredResponse.StatusCode.ShouldBe(HttpStatusCode.NoContent); @@ -65,7 +65,7 @@ internal async Task Given_mark_pass_as_expired_request_with_not_existing_id_Then var url = BuildUrl(notExistingId); // Act - using var markAsExpiredResponse = await _applicationHttpClient.PatchAsJsonAsync(url, EmptyContent); + using var markAsExpiredResponse = await _applicationHttpClient.PatchAsJsonAsync(url, EmptyContent, TestContext.Current.CancellationToken); // Assert markAsExpiredResponse.StatusCode.ShouldBe(HttpStatusCode.NotFound); @@ -103,9 +103,9 @@ private async Task GetCreatedPass(Guid customerId) private void EnsureThatPassExpiredEventWasPublished() => _fakeEventBus.Received(1) .PublishAsync(Arg.Any(), Arg.Any()); - public Task InitializeAsync() => Task.CompletedTask; + public ValueTask InitializeAsync() => ValueTask.CompletedTask; - public async Task DisposeAsync() + public async ValueTask DisposeAsync() { _applicationHttpClient.Dispose(); await _applicationInMemoryFactory.DisposeAsync(); diff --git a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Passes/RegisterPass/RegisterPassTests.cs b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Passes/RegisterPass/RegisterPassTests.cs index 71e0ed1a..0dd132db 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Passes/RegisterPass/RegisterPassTests.cs +++ b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Passes/RegisterPass/RegisterPassTests.cs @@ -21,9 +21,9 @@ public RegisterPassTests(WebApplicationFactory applicationInMemoryFacto _applicationHttpClient = _applicationInMemory.CreateClient(); } - public Task InitializeAsync() => Task.CompletedTask; + public ValueTask InitializeAsync() => ValueTask.CompletedTask; - public async Task DisposeAsync() + public async ValueTask DisposeAsync() { _applicationHttpClient.Dispose(); await _applicationInMemory.DisposeAsync(); @@ -38,7 +38,7 @@ internal async Task Given_contract_signed_event_Then_should_register_pass() var @event = ContractSignedEventFaker.Create(); // Act - await integrationEventHandlerScope.Consume(@event); + await integrationEventHandlerScope.Consume(@event, TestContext.Current.CancellationToken); // Assert EnsureThatPassRegisteredEventWasPublished(); diff --git a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Reports/GenerateNewPassesPerMonthReport/GenerateNewPassesPerMonthReportTests.cs b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Reports/GenerateNewPassesPerMonthReport/GenerateNewPassesPerMonthReportTests.cs index 99bc0655..f714e98c 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Reports/GenerateNewPassesPerMonthReport/GenerateNewPassesPerMonthReportTests.cs +++ b/Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Reports/GenerateNewPassesPerMonthReport/GenerateNewPassesPerMonthReportTests.cs @@ -34,11 +34,11 @@ internal async Task Given_valid_generate_new_report_request_Then_should_return_c await RegisterPasses(passRegistrationDateRanges); // Act - using var getReportResult = await _applicationHttpClient.GetAsync(ReportsApiPaths.GenerateNewReport); + using var getReportResult = await _applicationHttpClient.GetAsync(ReportsApiPaths.GenerateNewReport, TestContext.Current.CancellationToken); // Assert getReportResult.StatusCode.ShouldBe(HttpStatusCode.OK); - var reportData = await getReportResult.Content.ReadFromJsonAsync(); + var reportData = await getReportResult.Content.ReadFromJsonAsync(TestContext.Current.CancellationToken); await Verify(reportData); } @@ -59,9 +59,9 @@ private async Task RegisterPass(DateTimeOffset from, DateTimeOffset to) await integrationEventHandler.Handle(@event, CancellationToken.None); } - public Task InitializeAsync() => Task.CompletedTask; + public ValueTask InitializeAsync() => ValueTask.CompletedTask; - public async Task DisposeAsync() + public async ValueTask DisposeAsync() { _applicationHttpClient.Dispose(); await _applicationInMemoryFactory.DisposeAsync(); diff --git a/Chapter-1-initial-architecture/Src/Fitnet.UnitTests/Fitnet.UnitTests.csproj b/Chapter-1-initial-architecture/Src/Fitnet.UnitTests/Fitnet.UnitTests.csproj index 9235fb35..8e76dd5e 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet.UnitTests/Fitnet.UnitTests.csproj +++ b/Chapter-1-initial-architecture/Src/Fitnet.UnitTests/Fitnet.UnitTests.csproj @@ -2,18 +2,19 @@ false + $(NoWarn);xUnit1050 - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Chapter-1-initial-architecture/Src/Fitnet.UnitTests/GlobalExceptionHandlerTests.cs b/Chapter-1-initial-architecture/Src/Fitnet.UnitTests/GlobalExceptionHandlerTests.cs index f8f93bcc..1b9bc546 100644 --- a/Chapter-1-initial-architecture/Src/Fitnet.UnitTests/GlobalExceptionHandlerTests.cs +++ b/Chapter-1-initial-architecture/Src/Fitnet.UnitTests/GlobalExceptionHandlerTests.cs @@ -20,7 +20,7 @@ internal async Task Given_business_rule_validation_exception_Then_returns_confli var exceptionHandler = new GlobalExceptionHandler(_logger); // Act - await exceptionHandler.TryHandleAsync(_context, new BusinessRuleValidationException(exceptionMessage), default); + await exceptionHandler.TryHandleAsync(_context, new BusinessRuleValidationException(exceptionMessage), TestContext.Current.CancellationToken); // Assert _context.Response.StatusCode.ShouldBe((int)HttpStatusCode.Conflict); @@ -37,7 +37,7 @@ internal async Task Given_other_than_business_rule_validation_exception_Then_ret var exceptionHandler = new GlobalExceptionHandler(_logger); // Act - await exceptionHandler.TryHandleAsync(_context, new InvalidCastException("test"), CancellationToken.None); + await exceptionHandler.TryHandleAsync(_context, new InvalidCastException("test"), TestContext.Current.CancellationToken); // Assert _context.Response.StatusCode.ShouldBe((int)HttpStatusCode.InternalServerError);