Skip to content

Commit 7bc650a

Browse files
committed
feat: migrate unit tests from FluentAssertions to Shouldly
1 parent da2ea55 commit 7bc650a

9 files changed

Lines changed: 26 additions & 27 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
global using ErrorOr;
22
global using EvolutionaryArchitecture.Fitnet.Common.UnitTesting.Assertions.ErrorOr;
3-
global using FluentAssertions;
43
global using Xunit;

Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/TerminateBindingContract/BusinessRules/TerminationIsPossibleOnlyAfterThreeMonthsHavePassedTests.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using Core.TerminateBindingContract.BusinessRules;
44
using Fitnet.Common.Core.BussinessRules;
55
using TerminationIsPossibleOnlyAfterThreeMonthsHavePassed.TestData;
6+
using Shouldly;
67

78
public sealed class TerminationIsPossibleOnlyAfterThreeMonthsHavePassedTests
89
{
@@ -19,9 +20,7 @@ internal void Given_terminate_When_three_months_have_not_passed_Then_it_is_not_p
1920
new TerminationIsPossibleOnlyAfterThreeMonthsHavePassedRule(bindingFrom, terminatedAt));
2021

2122
// Assert
22-
result.Errors
23-
.Should()
24-
.ContainSingle();
23+
result.Errors.ShouldHaveSingleItem();
2524
}
2625

2726
[Theory]
@@ -37,6 +36,6 @@ internal void Given_terminate_When_three_months_have_passed_Then_it_is_possible_
3736
new TerminationIsPossibleOnlyAfterThreeMonthsHavePassedRule(bindingFrom, terminatedAt));
3837

3938
// Assert
40-
result.Should().BeSuccessful();
39+
result.IsError.ShouldBeFalse();
4140
}
4241
}

Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Fitnet.Contracts.Core.UnitTests/TerminateBindingContract/TerminateBindingContractTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ namespace EvolutionaryArchitecture.Fitnet.Contracts.Core.UnitTests.TerminateBind
33
using Common;
44
using Common.Builders;
55
using Core.TerminateBindingContract;
6+
using Shouldly;
67

78
public sealed class TerminateBindingContractTests
89
{
@@ -18,6 +19,6 @@ internal void Given_terminate_binding_contracts_Then_should_raise_binding_contra
1819
bindingContract.Terminate(_terminatedAt);
1920

2021
var @event = bindingContract.GetPublishedEvent<BindingContractTerminatedEvent>();
21-
@event?.TerminatedAt.Should().Be(_terminatedAt);
22+
@event?.TerminatedAt.ShouldBe(_terminatedAt);
2223
}
2324
}

Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/AttachAnnexToBindingContract/AttachAnnexToBindingContractTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ internal async Task Given_attach_annex_request_for_active_binding_contract_Then_
3737
var response = await _applicationHttpClient.PostAsJsonAsync(annexesPath, request);
3838

3939
// Assert
40-
response.Should().HaveStatusCode(HttpStatusCode.Created);
40+
response.StatusCode.ShouldBe(HttpStatusCode.Created);
4141
}
4242

4343
[Fact]
@@ -53,7 +53,7 @@ internal async Task Given_attach_annex_request_for_non_existing_binding_contract
5353
var response = await _applicationHttpClient.PostAsJsonAsync(annexesPath, request);
5454

5555
// Assert
56-
response.Should().HaveStatusCode(HttpStatusCode.NotFound);
56+
response.StatusCode.ShouldBe(HttpStatusCode.NotFound);
5757
}
5858

5959
[Fact]
@@ -73,7 +73,7 @@ internal async Task Given_attach_annex_request_for_terminated_binding_contract_T
7373
var response = await _applicationHttpClient.PostAsJsonAsync(annexesPath, request);
7474

7575
// Assert
76-
response.Should().HaveStatusCode(HttpStatusCode.Conflict);
76+
response.StatusCode.ShouldBe(HttpStatusCode.Conflict);
7777
}
7878

7979
[Fact]
@@ -92,6 +92,6 @@ internal async Task Given_attach_annex_request_for_inactive_binding_contract_The
9292
var response = await _applicationHttpClient.PostAsJsonAsync(annexesPath, request);
9393

9494
// Assert
95-
response.Should().HaveStatusCode(HttpStatusCode.Conflict);
95+
response.StatusCode.ShouldBe(HttpStatusCode.Conflict);
9696
}
9797
}

Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/Fitnet.Contracts.IntegrationTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<PackageReference Include="EvolutionaryArchitecture.Fitnet.Common.Api" Version="4.1.7" />
1010
<PackageReference Include="EvolutionaryArchitecture.Fitnet.Common.IntegrationTestsToolbox" Version="4.1.7" />
1111
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
12+
<PackageReference Include="Shouldly" Version="4.3.0" />
1213
<PackageReference Include="System.Net.Http" Version="4.3.4" />
1314
<PackageReference Include="System.Text.Json" Version="9.0.0" />
1415
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
global using System.Net;
22
global using System.Net.Http.Json;
33
global using Bogus;
4-
global using FluentAssertions;
54
global using Microsoft.AspNetCore.Mvc;
5+
global using Shouldly;

Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/PrepareContract/PrepareContractTests.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ internal async Task Given_valid_contract_preparation_request_Then_should_return_
2626
var prepareContractResponse = await PrepareCorrectContract(requestParameters);
2727

2828
// Assert
29-
prepareContractResponse.Should().HaveStatusCode(HttpStatusCode.Created);
29+
prepareContractResponse.StatusCode.ShouldBe(HttpStatusCode.Created);
3030
}
3131

3232
[Fact]
@@ -43,9 +43,9 @@ internal async Task Given_contract_preparation_request_with_invalid_age_Then_sho
4343
await _applicationHttpClient.PostAsJsonAsync(ContractsApiPaths.Prepare, prepareContractRequest);
4444

4545
// Assert
46-
prepareContractResponse.Should().HaveStatusCode(HttpStatusCode.Conflict);
46+
prepareContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict);
4747
var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync<ProblemDetails>();
48-
responseMessage?.Detail.Should().Be("Contract can not be prepared for a person who is not adult");
48+
responseMessage?.Detail.ShouldBe("Contract can not be prepared for a person who is not adult");
4949
}
5050

5151
[Fact]
@@ -62,10 +62,10 @@ internal async Task Given_contract_preparation_request_with_invalid_height_Then_
6262
await _applicationHttpClient.PostAsJsonAsync(ContractsApiPaths.Prepare, prepareContractRequest);
6363

6464
// Assert
65-
prepareContractResponse.Should().HaveStatusCode(HttpStatusCode.Conflict);
65+
prepareContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict);
6666

6767
var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync<ProblemDetails>();
68-
responseMessage?.Detail.Should().Be("Customer height must fit maximum limit for gym instruments");
68+
responseMessage?.Detail.ShouldBe("Customer height must fit maximum limit for gym instruments");
6969
}
7070

7171
[Fact]
@@ -81,9 +81,9 @@ internal async Task
8181
var prepareContractResponse = await PrepareCorrectContract(requestParameters, customerId);
8282

8383
// Assert
84-
prepareContractResponse.Should().HaveStatusCode(HttpStatusCode.Conflict);
84+
prepareContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict);
8585
var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync<ProblemDetails>();
86-
responseMessage?.Detail.Should().Be("Previous contract must be signed by the customer");
86+
responseMessage?.Detail.ShouldBe("Previous contract must be signed by the customer");
8787
}
8888

8989
private async Task<HttpResponseMessage> PrepareCorrectContract(PrepareContractRequestParameters requestParameters, Guid? customerId = null)

Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/SignContract/SignContractTests.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ internal async Task Given_valid_contract_signature_request_Then_should_return_ok
2828
await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest);
2929

3030
// Assert
31-
signContractResponse.Should().HaveStatusCode(HttpStatusCode.Created);
31+
signContractResponse.StatusCode.ShouldBe(HttpStatusCode.Created);
3232
}
3333

3434
[Fact]
@@ -43,7 +43,7 @@ internal async Task Given_contract_signature_request_with_not_existing_id_Then_s
4343
await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest);
4444

4545
// Assert
46-
signContractResponse.Should().HaveStatusCode(HttpStatusCode.NotFound);
46+
signContractResponse.StatusCode.ShouldBe(HttpStatusCode.NotFound);
4747
}
4848

4949
[Fact]
@@ -61,11 +61,10 @@ internal async Task
6161
await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest);
6262

6363
// Assert
64-
signContractResponse.Should().HaveStatusCode(HttpStatusCode.Conflict);
64+
signContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict);
6565

6666
var responseMessage = await signContractResponse.Content.ReadFromJsonAsync<ProblemDetails>();
67-
responseMessage?.Status.Should().Be((int)HttpStatusCode.Conflict);
68-
responseMessage?.Detail.Should()
69-
.Be("Contract can only be signed within 30 days from preparation");
67+
responseMessage?.Status.ShouldBe((int)HttpStatusCode.Conflict);
68+
responseMessage?.Detail.ShouldBe("Contract can only be signed within 30 days from preparation");
7069
}
7170
}

Chapter-4-applying-tactical-domain-driven-design/Fitnet.Contracts/Src/Fitnet.Contracts.IntegrationTests/TerminateBindingContract/TerminateBindingContractTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ internal async Task
3434
var response = await _applicationHttpClient.PatchAsync(request.Url, content: null);
3535

3636
// Assert
37-
response.Should().HaveStatusCode(HttpStatusCode.NotFound);
37+
response.StatusCode.ShouldBe(HttpStatusCode.NotFound);
3838
}
3939

4040
[Fact]
@@ -52,7 +52,7 @@ internal async Task
5252
await _applicationHttpClient.PatchAsync(request.Url, null);
5353

5454
// Assert
55-
terminateContractResponse.Should().HaveStatusCode(HttpStatusCode.NoContent);
55+
terminateContractResponse.StatusCode.ShouldBe(HttpStatusCode.NoContent);
5656
}
5757

5858
[Fact]
@@ -69,6 +69,6 @@ internal async Task
6969
await _applicationHttpClient.PatchAsync(request.Url, null);
7070

7171
// Assert
72-
terminateContractResponse.Should().HaveStatusCode(HttpStatusCode.Conflict);
72+
terminateContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict);
7373
}
7474
}

0 commit comments

Comments
 (0)