diff --git a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Api.UnitTests/ExceptionMiddlewareTests.cs b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Api.UnitTests/ExceptionMiddlewareTests.cs index d453e53d..abc1e68b 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Api.UnitTests/ExceptionMiddlewareTests.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Api.UnitTests/ExceptionMiddlewareTests.cs @@ -2,6 +2,9 @@ namespace EvolutionaryArchitecture.Fitnet.Common.Api.UnitTests; using ErrorHandling; using Core.BusinessRules; +using System.IO; +using System.Threading.Tasks; +using System; public sealed class ExceptionMiddlewareTests { @@ -19,10 +22,10 @@ internal async Task Given_business_rule_validation_exception_Then_returns_confli await middleware.InvokeAsync(_context); // Assert - _context.Response.StatusCode.Should().Be((int)HttpStatusCode.Conflict); + _context.Response.StatusCode.ShouldBe((int)HttpStatusCode.Conflict); var responseMessage = await GetExceptionResponseMessage(); - responseMessage.Should().Be(exceptionMessage); + responseMessage.ShouldBe(exceptionMessage); } [Fact] @@ -37,10 +40,10 @@ internal async Task Given_other_than_business_rule_validation_exception_Then_ret await middleware.InvokeAsync(_context); // Assert - _context.Response.StatusCode.Should().Be((int)HttpStatusCode.InternalServerError); + _context.Response.StatusCode.ShouldBe((int)HttpStatusCode.InternalServerError); var responseMessage = await GetExceptionResponseMessage(); - responseMessage.Should().Be(exceptionMessage); + responseMessage.ShouldBe(exceptionMessage); } private static DefaultHttpContext GetHttpContext() => diff --git a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Api.UnitTests/Fitnet.Common.Api.UnitTests.csproj b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Api.UnitTests/Fitnet.Common.Api.UnitTests.csproj index 956cd5e7..ef476753 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Api.UnitTests/Fitnet.Common.Api.UnitTests.csproj +++ b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Api.UnitTests/Fitnet.Common.Api.UnitTests.csproj @@ -11,6 +11,7 @@ + all diff --git a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Api.UnitTests/GlobalUsings.cs b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Api.UnitTests/GlobalUsings.cs index e4af52de..481eb798 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Api.UnitTests/GlobalUsings.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Api.UnitTests/GlobalUsings.cs @@ -1,5 +1,5 @@ global using System.Net; global using Xunit; -global using FluentAssertions; global using Microsoft.AspNetCore.Http; -global using Newtonsoft.Json; \ No newline at end of file +global using Newtonsoft.Json; +global using Shouldly; diff --git a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Core.UnitTests/BusinessRulesEngine/BusinessRuleValidatorTests.cs b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Core.UnitTests/BusinessRulesEngine/BusinessRuleValidatorTests.cs index d4db0562..3eaca8b3 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Core.UnitTests/BusinessRulesEngine/BusinessRuleValidatorTests.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Core.UnitTests/BusinessRulesEngine/BusinessRuleValidatorTests.cs @@ -10,10 +10,13 @@ internal void Given_concrete_business_rule_which_is_met_Then_validation_should_p // Arrange // Act - var act = () => BusinessRuleValidator.Validate(new FakeBusinessRule(20)); + static void FakeBusinessRule() + { + BusinessRuleValidator.Validate(new FakeBusinessRule(20)); + } // Assert - act.Should().NotThrow(); + Should.NotThrow(FakeBusinessRule); } [Fact] @@ -22,9 +25,13 @@ internal void Given_concrete_business_rule_which_is_not_met_Then_validation_shou // Arrange // Act - var act = () => BusinessRuleValidator.Validate(new FakeBusinessRule(1)); + static void NotMetRuleAction() + { + BusinessRuleValidator.Validate(new FakeBusinessRule(1)); + } // Assert - act.Should().Throw().WithMessage("Fake business rule was not met"); + var exception = Should.Throw(NotMetRuleAction); + exception.Message.ShouldBe("Fake business rule was not met"); } } diff --git a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Core.UnitTests/Fitnet.Common.Core.UnitTests.csproj b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Core.UnitTests/Fitnet.Common.Core.UnitTests.csproj index b88d4a4d..0700fcf4 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Core.UnitTests/Fitnet.Common.Core.UnitTests.csproj +++ b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Core.UnitTests/Fitnet.Common.Core.UnitTests.csproj @@ -11,6 +11,7 @@ + all diff --git a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Core.UnitTests/GlobalUsings.cs b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Core.UnitTests/GlobalUsings.cs index 7fef4b0e..3a6ad15e 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Core.UnitTests/GlobalUsings.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.Core.UnitTests/GlobalUsings.cs @@ -1,2 +1,2 @@ +global using Shouldly; global using Xunit; -global using FluentAssertions; \ No newline at end of file diff --git a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/Database/IDatabaseConfiguration.cs b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/Database/IDatabaseConfiguration.cs index 59761e4f..1a330742 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/Database/IDatabaseConfiguration.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/Database/IDatabaseConfiguration.cs @@ -2,5 +2,5 @@ namespace EvolutionaryArchitecture.Fitnet.Common.IntegrationTestsToolbox.TestEng public interface IDatabaseConfiguration { - public Dictionary Get(); -} \ No newline at end of file + Dictionary Get(); +} diff --git a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/EventBus/EventBusExtensions.cs b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/EventBus/EventBusExtensions.cs index b9ec2a23..972c6e54 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/EventBus/EventBusExtensions.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/TestEngine/EventBus/EventBusExtensions.cs @@ -54,6 +54,6 @@ public static async Task>> WaitToConsumeM } } - return testHarness.Consumed!.Select(cancellationToken)!.ToList(); + return [.. testHarness.Consumed!.Select(cancellationToken)]; } } diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Api.UnitTests/Fitnet.Contracts.Api.UnitTests.csproj b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Api.UnitTests/Fitnet.Contracts.Api.UnitTests.csproj index 324dd683..f028d4ab 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Api.UnitTests/Fitnet.Contracts.Api.UnitTests.csproj +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Api.UnitTests/Fitnet.Contracts.Api.UnitTests.csproj @@ -1,7 +1,6 @@ - all diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/Fitnet.Contracts.Core.UnitTests.csproj b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/Fitnet.Contracts.Core.UnitTests.csproj index e6d3410d..cc5e5759 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/Fitnet.Contracts.Core.UnitTests.csproj +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/Fitnet.Contracts.Core.UnitTests.csproj @@ -7,7 +7,7 @@ - + all diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/GlobalUsings.cs b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/GlobalUsings.cs index 7b25dddc..4eff019a 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/GlobalUsings.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/GlobalUsings.cs @@ -1,2 +1,3 @@ -global using FluentAssertions; +global using System; +global using Shouldly; global using Xunit; diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/PrepareContract/BusinessRules/ContractCanBePreparedOnlyForAdultRuleTests.cs b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/PrepareContract/BusinessRules/ContractCanBePreparedOnlyForAdultRuleTests.cs index 8d526dae..f1fda7f6 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/PrepareContract/BusinessRules/ContractCanBePreparedOnlyForAdultRuleTests.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/PrepareContract/BusinessRules/ContractCanBePreparedOnlyForAdultRuleTests.cs @@ -9,35 +9,31 @@ public sealed class ContractCanBePreparedOnlyForAdultRuleTests internal void Given_customer_age_which_is_less_than_18_Then_validation_should_throw() { // Arrange + const int minorAge = 17; - // Act - var act = () => BusinessRuleValidator.Validate(new ContractCanBePreparedOnlyForAdultRule(17)); - - // Assert - act.Should().Throw().WithMessage("Contract can not be prepared for a person who is not adult"); + // Act & Assert + var exception = Should.Throw(() => + BusinessRuleValidator.Validate(new ContractCanBePreparedOnlyForAdultRule(minorAge))); + exception.Message.ShouldBe("Contract can not be prepared for a person who is not adult"); } [Fact] internal void Given_customer_age_which_is_equal_to_18_Then_validation_should_pass() { // Arrange + const int exactLegalAge = 18; - // Act - var act = () => BusinessRuleValidator.Validate(new ContractCanBePreparedOnlyForAdultRule(18)); - - // Assert - act.Should().NotThrow(); + // Act & Assert + Should.NotThrow(() => BusinessRuleValidator.Validate(new ContractCanBePreparedOnlyForAdultRule(exactLegalAge))); } [Fact] internal void Given_customer_age_which_is_greater_than_18_Then_validation_should_pass() { // Arrange + const int adultAge = 19; - // Act - var act = () => BusinessRuleValidator.Validate(new ContractCanBePreparedOnlyForAdultRule(19)); - - // Assert - act.Should().NotThrow(); + // Act & Assert + Should.NotThrow(() => BusinessRuleValidator.Validate(new ContractCanBePreparedOnlyForAdultRule(adultAge))); } } diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/PrepareContract/BusinessRules/CustomerMustBeSmallerThanMaximumHeightLimitRuleTests.cs b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/PrepareContract/BusinessRules/CustomerMustBeSmallerThanMaximumHeightLimitRuleTests.cs index b1d89425..73d9e2ca 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/PrepareContract/BusinessRules/CustomerMustBeSmallerThanMaximumHeightLimitRuleTests.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/PrepareContract/BusinessRules/CustomerMustBeSmallerThanMaximumHeightLimitRuleTests.cs @@ -11,11 +11,11 @@ internal void Given_customer_height_which_is_greater_than_maximum_height_limit_T // Arrange const int height = 211; - // Act - var act = () => BusinessRuleValidator.Validate(new CustomerMustBeSmallerThanMaximumHeightLimitRule(height)); + // Act & Assert + var exception = Should.Throw(() => + BusinessRuleValidator.Validate(new CustomerMustBeSmallerThanMaximumHeightLimitRule(height))); - // Assert - act.Should().Throw().WithMessage("Customer height must fit maximum limit for gym instruments"); + exception.Message.ShouldBe("Customer height must fit maximum limit for gym instruments"); } [Fact] @@ -24,11 +24,8 @@ internal void Given_customer_height_which_is_equal_to_maximum_height_limit_Then_ // Arrange const int height = 210; - // Act - var act = () => BusinessRuleValidator.Validate(new CustomerMustBeSmallerThanMaximumHeightLimitRule(height)); - - // Assert - act.Should().NotThrow(); + // Act & Assert + Should.NotThrow(() => BusinessRuleValidator.Validate(new CustomerMustBeSmallerThanMaximumHeightLimitRule(height))); } [Fact] @@ -37,10 +34,7 @@ internal void Given_customer_height_which_is_less_than_maximum_height_limit_Then // Arrange const int height = 209; - // Act - var act = () => BusinessRuleValidator.Validate(new CustomerMustBeSmallerThanMaximumHeightLimitRule(height)); - - // Assert - act.Should().NotThrow(); + // Act & Assert + Should.NotThrow(() => BusinessRuleValidator.Validate(new CustomerMustBeSmallerThanMaximumHeightLimitRule(height))); } } diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/PrepareContract/BusinessRules/PreviousContractHasToBeSignedRuleTests.cs b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/PrepareContract/BusinessRules/PreviousContractHasToBeSignedRuleTests.cs index 67ca924c..fb3e5e13 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/PrepareContract/BusinessRules/PreviousContractHasToBeSignedRuleTests.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/PrepareContract/BusinessRules/PreviousContractHasToBeSignedRuleTests.cs @@ -6,39 +6,22 @@ namespace EvolutionaryArchitecture.Fitnet.Contracts.Core.UnitTests.PrepareContra public sealed class PreviousContractHasToBeSignedRuleTests { [Fact] - internal void Given_previous_contract_signed_Then_validation_should_pass() - { - // Arrange - - // Act - var act = () => BusinessRuleValidator.Validate(new PreviousContractHasToBeSignedRule(true)); - - // Assert - act.Should().NotThrow(); - } + internal void Given_previous_contract_signed_Then_validation_should_pass() => + // Arrange & Act & Assert + Should.NotThrow(() => BusinessRuleValidator.Validate(new PreviousContractHasToBeSignedRule(true))); [Fact] - internal void Given_previous_contract_not_exists_Then_validation_should_pass() - { - // Arrange - - // Act - var act = () => BusinessRuleValidator.Validate(new PreviousContractHasToBeSignedRule(null)); - - // Assert - act.Should().NotThrow(); - } - + internal void Given_previous_contract_not_exists_Then_validation_should_pass() => + // Arrange & Act & Assert + Should.NotThrow(() => BusinessRuleValidator.Validate(new PreviousContractHasToBeSignedRule(null))); [Fact] internal void Given_previous_contract_unsigned_Then_validation_should_throw() { - // Arrange - - // Act - var act = () => BusinessRuleValidator.Validate(new PreviousContractHasToBeSignedRule(false)); + // Arrange & Act & Assert + var exception = Should.Throw(() => + BusinessRuleValidator.Validate(new PreviousContractHasToBeSignedRule(false))); - // Assert - act.Should().Throw().WithMessage("Previous contract must be signed by the customer"); + exception.Message.ShouldBe("Previous contract must be signed by the customer"); } } diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/SignContract/BusinessRules/ContractCanOnlyBeSignedWithin30DaysFromPreparationTests.cs b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/SignContract/BusinessRules/ContractCanOnlyBeSignedWithin30DaysFromPreparationTests.cs index f5ef8321..26e841cd 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/SignContract/BusinessRules/ContractCanOnlyBeSignedWithin30DaysFromPreparationTests.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/SignContract/BusinessRules/ContractCanOnlyBeSignedWithin30DaysFromPreparationTests.cs @@ -8,46 +8,29 @@ public sealed class ContractCanOnlyBeSignedWithin30DaysFromPreparationTests [Fact] internal void Given_signed_at_date_which_is_more_than_30_days_from_prepared_at_date_Then_validation_should_throw() { - // Arrange - - // Act - var act = () => + // Arrange & Act & Assert + var exception = Should.Throw(() => BusinessRuleValidator.Validate( new ContractCanOnlyBeSignedWithin30DaysFromPreparation(DateTimeOffset.Now, - DateTimeOffset.Now.AddDays(31))); + DateTimeOffset.Now.AddDays(31)))); - // Assert - act.Should().Throw().WithMessage( + exception.Message.ShouldBe( "Contract can not be signed because more than 30 days have passed from the contract preparation"); } [Fact] - internal void Given_signed_at_date_which_is_30_days_from_prepared_at_date_Then_validation_should_pass() - { - // Arrange - - // Act - var act = () => + internal void Given_signed_at_date_which_is_30_days_from_prepared_at_date_Then_validation_should_pass() => + // Arrange & Act & Assert + Should.NotThrow(() => BusinessRuleValidator.Validate( new ContractCanOnlyBeSignedWithin30DaysFromPreparation(DateTimeOffset.Now, - DateTimeOffset.Now.AddDays(30))); - - // Assert - act.Should().NotThrow(); - } + DateTimeOffset.Now.AddDays(30)))); [Fact] - internal void Given_signed_at_date_which_is_less_than_30_days_from_prepared_at_date_Then_validation_should_pass() - { - // Arrange - - // Act - var act = () => + internal void Given_signed_at_date_which_is_less_than_30_days_from_prepared_at_date_Then_validation_should_pass() => + // Arrange & Act & Assert + Should.NotThrow(() => BusinessRuleValidator.Validate( new ContractCanOnlyBeSignedWithin30DaysFromPreparation(DateTimeOffset.Now, - DateTimeOffset.Now.AddDays(29))); - - // Assert - act.Should().NotThrow(); - } + DateTimeOffset.Now.AddDays(29)))); } diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/SignContract/SignContractTests.cs b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/SignContract/SignContractTests.cs index 5324c7bc..b2cc2e82 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/SignContract/SignContractTests.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/SignContract/SignContractTests.cs @@ -19,7 +19,7 @@ internal void Given_sign_contract_Then_expiration_date_is_set_to_contract_durati contract.Sign(signedAt, fakeNow); // Assert - contract.ExpiringAt.Should().Be(expectedExpirationDate); + contract.ExpiringAt.ShouldBe(expectedExpirationDate); } private static Contract PrepareContract(DateTimeOffset preparedAt) diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/Fitnet.Contracts.IntegrationTests.csproj b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/Fitnet.Contracts.IntegrationTests.csproj index d3d4b5e1..cf061282 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/Fitnet.Contracts.IntegrationTests.csproj +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/Fitnet.Contracts.IntegrationTests.csproj @@ -8,6 +8,7 @@ + diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/GlobalUsings.cs b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/GlobalUsings.cs index da8998bb..7e1157cc 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/GlobalUsings.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/GlobalUsings.cs @@ -2,4 +2,4 @@ global using System.Net.Http.Json; global using Xunit; global using Bogus; -global using FluentAssertions; \ No newline at end of file +global using Shouldly; diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/PrepareContract/PrepareContractTests.cs b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/PrepareContract/PrepareContractTests.cs index 8abc017a..c2fdf181 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/PrepareContract/PrepareContractTests.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/PrepareContract/PrepareContractTests.cs @@ -27,7 +27,7 @@ internal async Task Given_valid_contract_preparation_request_Then_should_return_ var prepareContractResponse = await PrepareCorrectContract(requestParameters); // Assert - prepareContractResponse.Should().HaveStatusCode(HttpStatusCode.Created); + prepareContractResponse.StatusCode.ShouldBe(HttpStatusCode.Created); } [Fact] @@ -44,11 +44,11 @@ internal async Task Given_contract_preparation_request_with_invalid_age_Then_sho await _applicationHttpClient.PostAsJsonAsync(ContractsApiPaths.Prepare, prepareContractRequest); // Assert - prepareContractResponse.Should().HaveStatusCode(HttpStatusCode.Conflict); + prepareContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict); var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync(); - responseMessage?.StatusCode.Should().Be((int)HttpStatusCode.Conflict); - responseMessage?.Message.Should().Be("Contract can not be prepared for a person who is not adult"); + responseMessage?.StatusCode.ShouldBe((int)HttpStatusCode.Conflict); + responseMessage?.Message.ShouldBe("Contract can not be prepared for a person who is not adult"); } [Fact] @@ -65,11 +65,11 @@ internal async Task Given_contract_preparation_request_with_invalid_height_Then_ await _applicationHttpClient.PostAsJsonAsync(ContractsApiPaths.Prepare, prepareContractRequest); // Assert - prepareContractResponse.Should().HaveStatusCode(HttpStatusCode.Conflict); + prepareContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict); var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync(); - responseMessage?.StatusCode.Should().Be((int)HttpStatusCode.Conflict); - responseMessage?.Message.Should().Be("Customer height must fit maximum limit for gym instruments"); + responseMessage?.StatusCode.ShouldBe((int)HttpStatusCode.Conflict); + responseMessage?.Message.ShouldBe("Customer height must fit maximum limit for gym instruments"); } [Fact] @@ -84,10 +84,10 @@ internal async Task Given_contract_preparation_request_When_contract_for_custome var prepareContractResponse = await PrepareCorrectContract(requestParameters, customerId); // Assert - prepareContractResponse.Should().HaveStatusCode(HttpStatusCode.Conflict); + prepareContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict); var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync(); - responseMessage?.StatusCode.Should().Be((int)HttpStatusCode.Conflict); - responseMessage?.Message.Should().Be("Previous contract must be signed by the customer"); + responseMessage?.StatusCode.ShouldBe((int)HttpStatusCode.Conflict); + responseMessage?.Message.ShouldBe("Previous contract must be signed by the customer"); } private async Task PrepareCorrectContract(PrepareContractRequestParameters requestParameters, Guid? customerId = null) diff --git a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/SignContract/SignContractTests.cs b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/SignContract/SignContractTests.cs index 613a588d..ff1813b8 100644 --- a/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/SignContract/SignContractTests.cs +++ b/Chapter-3-microservice-extraction/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/SignContract/SignContractTests.cs @@ -31,7 +31,7 @@ internal async Task Given_valid_contract_signature_request_Then_should_return_no await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest); // Assert - signContractResponse.Should().HaveStatusCode(HttpStatusCode.NoContent); + signContractResponse.StatusCode.ShouldBe(HttpStatusCode.NoContent); } [Fact] @@ -46,7 +46,7 @@ internal async Task Given_contract_signature_request_with_not_existing_id_Then_s await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest); // Assert - signContractResponse.Should().HaveStatusCode(HttpStatusCode.NotFound); + signContractResponse.StatusCode.ShouldBe(HttpStatusCode.NotFound); } [Fact] @@ -64,12 +64,11 @@ internal async Task await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest); // Assert - signContractResponse.Should().HaveStatusCode(HttpStatusCode.Conflict); + signContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict); var responseMessage = await signContractResponse.Content.ReadFromJsonAsync(); - responseMessage?.StatusCode.Should().Be((int)HttpStatusCode.Conflict); - responseMessage?.Message.Should() - .Be("Contract can not be signed because more than 30 days have passed from the contract preparation"); + responseMessage?.StatusCode.ShouldBe((int)HttpStatusCode.Conflict); + responseMessage?.Message.ShouldBe("Contract can not be signed because more than 30 days have passed from the contract preparation"); } private async Task PrepareContract() diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Tests/Fitnet.Offers.IntegrationTests/Fitnet.Offers.IntegrationTests.csproj b/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Tests/Fitnet.Offers.IntegrationTests/Fitnet.Offers.IntegrationTests.csproj index afdc71c6..4bf9bcf8 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Tests/Fitnet.Offers.IntegrationTests/Fitnet.Offers.IntegrationTests.csproj +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Tests/Fitnet.Offers.IntegrationTests/Fitnet.Offers.IntegrationTests.csproj @@ -8,6 +8,7 @@ + diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Tests/Fitnet.Offers.IntegrationTests/GlobalUsings.cs b/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Tests/Fitnet.Offers.IntegrationTests/GlobalUsings.cs index 4d8f42cd..20a6e635 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Tests/Fitnet.Offers.IntegrationTests/GlobalUsings.cs +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Tests/Fitnet.Offers.IntegrationTests/GlobalUsings.cs @@ -1,4 +1,4 @@ global using Xunit; global using Bogus; -global using FluentAssertions; global using MassTransit.Testing; +global using Shouldly; diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Tests/Fitnet.Offers.IntegrationTests/Prepare/PrepareOfferTests.cs b/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Tests/Fitnet.Offers.IntegrationTests/Prepare/PrepareOfferTests.cs index 7a8a2062..d1ee4e61 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Tests/Fitnet.Offers.IntegrationTests/Prepare/PrepareOfferTests.cs +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Offers/Tests/Fitnet.Offers.IntegrationTests/Prepare/PrepareOfferTests.cs @@ -2,8 +2,8 @@ namespace EvolutionaryArchitecture.Fitnet.Offers.IntegrationTests.Prepare; using Api.Prepare; using Common.IntegrationTestsToolbox.TestEngine; -using Common.IntegrationTestsToolbox.TestEngine.EventBus; using Common.IntegrationTestsToolbox.TestEngine.Configuration; +using Common.IntegrationTestsToolbox.TestEngine.EventBus; using EvolutionaryArchitecture.Fitnet.Common.IntegrationTestsToolbox.TestEngine.Database; using Passes.IntegrationEvents; @@ -40,6 +40,6 @@ internal async Task Given_pass_expired_event_published_Then_new_offer_should_be_ private async Task EnsureThatOfferPreparedEventWasPublished() { var offerPrepared = await _testEventBus.Published.Any(); - offerPrepared.Should().BeTrue(); + offerPrepared.ShouldBeTrue(); } } diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Tests/Fitnet.Passes.IntegrationTests/Fitnet.Passes.IntegrationTests.csproj b/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Tests/Fitnet.Passes.IntegrationTests/Fitnet.Passes.IntegrationTests.csproj index c338c4df..ebc285ae 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Tests/Fitnet.Passes.IntegrationTests/Fitnet.Passes.IntegrationTests.csproj +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Tests/Fitnet.Passes.IntegrationTests/Fitnet.Passes.IntegrationTests.csproj @@ -10,6 +10,7 @@ + diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Tests/Fitnet.Passes.IntegrationTests/GlobalUsings.cs b/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Tests/Fitnet.Passes.IntegrationTests/GlobalUsings.cs index 3525630c..c44a2062 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Tests/Fitnet.Passes.IntegrationTests/GlobalUsings.cs +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Tests/Fitnet.Passes.IntegrationTests/GlobalUsings.cs @@ -1,6 +1,9 @@ +global using System; global using System.Net; +global using System.Net.Http; global using System.Net.Http.Json; +global using System.Threading.Tasks; global using Xunit; global using Bogus; -global using FluentAssertions; -global using MassTransit.Testing; \ No newline at end of file +global using MassTransit.Testing; +global using Shouldly; diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Tests/Fitnet.Passes.IntegrationTests/MarkPassAsExpired/MarkPassAsExpiredTests.cs b/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Tests/Fitnet.Passes.IntegrationTests/MarkPassAsExpired/MarkPassAsExpiredTests.cs index b321e075..ab267ca9 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Tests/Fitnet.Passes.IntegrationTests/MarkPassAsExpired/MarkPassAsExpiredTests.cs +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Passes/Tests/Fitnet.Passes.IntegrationTests/MarkPassAsExpired/MarkPassAsExpiredTests.cs @@ -55,7 +55,7 @@ internal async Task Given_valid_mark_pass_as_expired_request_Then_should_publish var markAsExpiredResponse = await _applicationHttpClient.PatchAsJsonAsync(url, EmptyContent); // Assert - markAsExpiredResponse.Should().HaveStatusCode(HttpStatusCode.NoContent); + markAsExpiredResponse.StatusCode.ShouldBe(HttpStatusCode.NoContent); } [Fact] @@ -69,7 +69,7 @@ internal async Task Given_mark_pass_as_expired_request_with_not_existing_id_Then var markAsExpiredResponse = await _applicationHttpClient.PatchAsJsonAsync(url, EmptyContent); // Assert - markAsExpiredResponse.Should().HaveStatusCode(HttpStatusCode.NotFound); + markAsExpiredResponse.StatusCode.ShouldBe(HttpStatusCode.NotFound); } private async Task RegisterPass() @@ -86,9 +86,9 @@ private async Task GetCreatedPass(Guid customerId) var getAllPassesResponse = await _applicationHttpClient.GetAsync(PassesApiPaths.GetAll); var response = await getAllPassesResponse.Content.ReadFromJsonAsync(); var createdPass = response!.Passes.FirstOrDefault(pass => pass.CustomerId == customerId); - createdPass.Should().NotBeNull(); + createdPass.ShouldNotBeNull(); - return createdPass!.Id; + return createdPass.Id; } private static string BuildUrl(Guid id) => PassesApiPaths.MarkPassAsExpired.Replace("{id}", id.ToString()); @@ -96,6 +96,6 @@ private async Task GetCreatedPass(Guid customerId) private async Task EnsureThatPassExpiredEventWasPublished() { var passRegisteredEventPublished = await _testEventBus.Published.Any(); - passRegisteredEventPublished.Should().BeTrue(); + passRegisteredEventPublished.ShouldBeTrue(); } } diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Reports/Fitnet.Reports/Fitnet.Reports.csproj b/Chapter-3-microservice-extraction/Fitnet/Src/Reports/Fitnet.Reports/Fitnet.Reports.csproj index 262ad039..e5439ddd 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Reports/Fitnet.Reports/Fitnet.Reports.csproj +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Reports/Fitnet.Reports/Fitnet.Reports.csproj @@ -4,9 +4,9 @@ - - - + + + diff --git a/Chapter-3-microservice-extraction/Fitnet/Src/Reports/Fitnet.Reports/GenerateNewPassesRegistrationsPerMonthReport/DataRetriever/NewPassesRegistrationPerMonthReportDataRetriever.cs b/Chapter-3-microservice-extraction/Fitnet/Src/Reports/Fitnet.Reports/GenerateNewPassesRegistrationsPerMonthReport/DataRetriever/NewPassesRegistrationPerMonthReportDataRetriever.cs index 1eba58c6..542044c0 100644 --- a/Chapter-3-microservice-extraction/Fitnet/Src/Reports/Fitnet.Reports/GenerateNewPassesRegistrationsPerMonthReport/DataRetriever/NewPassesRegistrationPerMonthReportDataRetriever.cs +++ b/Chapter-3-microservice-extraction/Fitnet/Src/Reports/Fitnet.Reports/GenerateNewPassesRegistrationsPerMonthReport/DataRetriever/NewPassesRegistrationPerMonthReportDataRetriever.cs @@ -5,8 +5,8 @@ namespace EvolutionaryArchitecture.Fitnet.Reports.GenerateNewPassesRegistrations using DataAccess; internal sealed class NewPassesRegistrationPerMonthReportDataRetriever( - IDatabaseConnectionFactory databaseConnectionFactory, - TimeProvider timeProvider) : INewPassesRegistrationPerMonthReportDataRetriever + IDatabaseConnectionFactory databaseConnectionFactory, + TimeProvider timeProvider) : INewPassesRegistrationPerMonthReportDataRetriever { public async Task> GetReportDataAsync( CancellationToken cancellationToken = default) @@ -25,6 +25,6 @@ WHERE EXTRACT(YEAR FROM ""Passes"".""From"") = '{timeProvider.GetUtcNow().Year}' var newPassesRegistrationsPerMonthDtos = await connection.QueryAsync(queryDefinition); - return newPassesRegistrationsPerMonthDtos.ToList(); + return [.. newPassesRegistrationsPerMonthDtos]; } }