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);