Skip to content

Commit 4b48322

Browse files
authored
feat: upgrade xUnit to v3 (#225)
1 parent 4306297 commit 4b48322

10 files changed

Lines changed: 44 additions & 43 deletions

File tree

Chapter-1-initial-architecture/Src/Fitnet.ArchitectureTests/Fitnet.ArchitectureTests.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
<ItemGroup>
88
<PackageReference Include="NetArchTest.Rules" Version="1.3.2" />
99
<PackageReference Include="Shouldly" Version="4.3.0" />
10-
<PackageReference Include="xunit.v3" Version="1.0.0" />
11-
<PackageReference Include="xunit.analyzers" Version="1.18.0">
10+
<PackageReference Include="xunit.v3" Version="3.2.0" />
11+
<PackageReference Include="xunit.analyzers" Version="1.26.0">
1212
<PrivateAssets>all</PrivateAssets>
1313
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1414
</PackageReference>
15-
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.0">
15+
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
1616
<PrivateAssets>all</PrivateAssets>
1717
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1818
</PackageReference>

Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Common/TestEngine/DatabaseContainer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public sealed class DatabaseContainer : IAsyncLifetime
1111
private PostgreSqlContainer? _container;
1212
internal string? ConnectionString;
1313

14-
public async Task InitializeAsync()
14+
public async ValueTask InitializeAsync()
1515
{
1616
_container = new PostgreSqlBuilder()
1717
.WithDatabase(Database)
@@ -24,5 +24,5 @@ public async Task InitializeAsync()
2424
ConnectionString = _container.GetConnectionString();
2525
}
2626

27-
public async Task DisposeAsync() => await _container!.StopAsync();
27+
public async ValueTask DisposeAsync() => await _container!.StopAsync();
2828
}

Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Contracts/PrepareContract/PrepareContractTests.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ internal async Task Given_valid_contract_preparation_request_When_preparing_new_
3737
var customerId = Guid.NewGuid();
3838
var requestParameters = PrepareContractRequestParameters.GetValid();
3939
var prepareContractResponse = await PrepareCorrectContract(requestParameters, customerId);
40-
var preparedContractId = await prepareContractResponse.Content.ReadFromJsonAsync<Guid>();
40+
var preparedContractId = await prepareContractResponse.Content.ReadFromJsonAsync<Guid>(TestContext.Current.CancellationToken);
4141
var signContractRequestParameters = SignContractRequestParameters.GetValid(preparedContractId);
4242
var signContractRequest = new SignContractRequest(signContractRequestParameters.SignedAt);
4343
var signContractResponse =
44-
await _applicationHttpClient.PatchAsJsonAsync(signContractRequestParameters.Url, signContractRequest);
44+
await _applicationHttpClient.PatchAsJsonAsync(signContractRequestParameters.Url, signContractRequest, TestContext.Current.CancellationToken);
4545
signContractResponse.StatusCode.ShouldBe(HttpStatusCode.NoContent);
4646

4747
// Act
@@ -62,12 +62,12 @@ internal async Task Given_contract_preparation_request_with_invalid_age_Then_sho
6262

6363
// Act
6464
using var prepareContractResponse =
65-
await _applicationHttpClient.PostAsJsonAsync(ContractsApiPaths.Prepare, prepareContractRequest);
65+
await _applicationHttpClient.PostAsJsonAsync(ContractsApiPaths.Prepare, prepareContractRequest, TestContext.Current.CancellationToken);
6666

6767
// Assert
6868
prepareContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict);
6969

70-
var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync<ProblemDetails>();
70+
var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync<ProblemDetails>(TestContext.Current.CancellationToken);
7171
responseMessage?.Status.ShouldBe((int)HttpStatusCode.Conflict);
7272
responseMessage?.Title.ShouldBe("Contract can not be prepared for a person who is not adult");
7373
}
@@ -83,12 +83,12 @@ internal async Task Given_contract_preparation_request_with_invalid_height_Then_
8383

8484
// Act
8585
using var prepareContractResponse =
86-
await _applicationHttpClient.PostAsJsonAsync(ContractsApiPaths.Prepare, prepareContractRequest);
86+
await _applicationHttpClient.PostAsJsonAsync(ContractsApiPaths.Prepare, prepareContractRequest, TestContext.Current.CancellationToken);
8787

8888
// Assert
8989
prepareContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict);
9090

91-
var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync<ProblemDetails>();
91+
var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync<ProblemDetails>(TestContext.Current.CancellationToken);
9292
responseMessage?.Status.ShouldBe((int)HttpStatusCode.Conflict);
9393
responseMessage?.Title.ShouldBe("Customer height must fit maximum limit for gym instruments");
9494
}
@@ -107,7 +107,7 @@ internal async Task
107107

108108
// Assert
109109
prepareContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict);
110-
var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync<ProblemDetails>();
110+
var responseMessage = await prepareContractResponse.Content.ReadFromJsonAsync<ProblemDetails>(TestContext.Current.CancellationToken);
111111
responseMessage?.Status.ShouldBe((int)HttpStatusCode.Conflict);
112112
responseMessage?.Title.ShouldBe("Previous contract must be signed by the customer");
113113
}
@@ -123,9 +123,9 @@ private async Task<HttpResponseMessage> PrepareCorrectContract(PrepareContractRe
123123
return prepareContractResponse;
124124
}
125125

126-
public Task InitializeAsync() => Task.CompletedTask;
126+
public ValueTask InitializeAsync() => ValueTask.CompletedTask;
127127

128-
public async Task DisposeAsync()
128+
public async ValueTask DisposeAsync()
129129
{
130130
_applicationHttpClient.Dispose();
131131
await applicationInMemoryFactory.DisposeAsync();

Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Contracts/SignContract/SignContractTests.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ public SignContractTests(WebApplicationFactory<Program> applicationInMemoryFacto
2525
.CreateClient();
2626
}
2727

28-
public Task InitializeAsync() => Task.CompletedTask;
28+
public ValueTask InitializeAsync() => ValueTask.CompletedTask;
2929

30-
public async Task DisposeAsync()
30+
public async ValueTask DisposeAsync()
3131
{
3232
_applicationHttpClient.Dispose();
3333
await _applicationInMemoryFactory.DisposeAsync();
@@ -43,7 +43,7 @@ internal async Task Given_valid_contract_signature_request_Then_should_return_no
4343

4444
// Act
4545
using var signContractResponse =
46-
await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest);
46+
await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest, TestContext.Current.CancellationToken);
4747

4848
// Assert
4949
signContractResponse.StatusCode.ShouldBe(HttpStatusCode.NoContent);
@@ -58,7 +58,7 @@ internal async Task Given_valid_contract_signature_request_Then_contract_signed_
5858
var signContractRequest = new SignContractRequest(requestParameters.SignedAt);
5959

6060
// Act
61-
await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest);
61+
await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest, TestContext.Current.CancellationToken);
6262

6363
// Assert
6464
EnsureThatContractSignedEventWasPublished();
@@ -76,7 +76,7 @@ internal async Task Given_contract_signature_request_with_not_existing_id_Then_s
7676

7777
// Act
7878
using var signContractResponse =
79-
await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest);
79+
await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest, TestContext.Current.CancellationToken);
8080

8181
// Assert
8282
signContractResponse.StatusCode.ShouldBe(HttpStatusCode.NotFound);
@@ -94,12 +94,12 @@ internal async Task
9494

9595
// Act
9696
using var signContractResponse =
97-
await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest);
97+
await _applicationHttpClient.PatchAsJsonAsync(requestParameters.Url, signContractRequest, TestContext.Current.CancellationToken);
9898

9999
// Assert
100100
signContractResponse.StatusCode.ShouldBe(HttpStatusCode.Conflict);
101101

102-
var responseMessage = await signContractResponse.Content.ReadFromJsonAsync<ProblemDetails>();
102+
var responseMessage = await signContractResponse.Content.ReadFromJsonAsync<ProblemDetails>(TestContext.Current.CancellationToken);
103103
responseMessage?.Status.ShouldBe((int)HttpStatusCode.Conflict);
104104
responseMessage?.Title.ShouldBe("Contract can not be signed because more than 30 days have passed from the contract preparation");
105105
}

Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Fitnet.IntegrationTests.csproj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,23 @@
22

33
<PropertyGroup>
44
<IsPackable>false</IsPackable>
5-
<NoWarn>$(NoWarn);S3604</NoWarn>
5+
<NoWarn>$(NoWarn);S3604;xUnit1050</NoWarn>
66
</PropertyGroup>
77

88
<ItemGroup>
99
<PackageReference Include="Bogus" Version="35.6.1" />
1010
<PackageReference Include="Microsoft.Extensions.TimeProvider.Testing" Version="9.0.0" />
1111
<PackageReference Include="NSubstitute" Version="5.3.0" />
1212
<PackageReference Include="Shouldly" Version="4.3.0" />
13-
<PackageReference Include="Verify.Xunit" Version="28.2.1" />
14-
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.0">
13+
<PackageReference Include="Verify.XunitV3" Version="31.7.3" />
14+
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
1515
<PrivateAssets>all</PrivateAssets>
1616
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1717
</PackageReference>
1818
<PackageReference Include="Testcontainers" Version="4.0.0" />
1919
<PackageReference Include="Testcontainers.PostgreSql" Version="4.0.0" />
20-
<PackageReference Include="xunit.v3" Version="1.0.0" />
21-
<PackageReference Include="xunit.analyzers" Version="1.18.0">
20+
<PackageReference Include="xunit.v3" Version="3.2.0" />
21+
<PackageReference Include="xunit.analyzers" Version="1.26.0">
2222
<PrivateAssets>all</PrivateAssets>
2323
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2424
</PackageReference>

Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Passes/MarkPassAsExpired/MarkPassAsExpiredTests.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ internal async Task Given_valid_mark_pass_as_expired_request_Then_should_return_
3636
var url = BuildUrl(registeredPassId);
3737

3838
// Act
39-
await _applicationHttpClient.PatchAsJsonAsync(url, EmptyContent);
39+
await _applicationHttpClient.PatchAsJsonAsync(url, EmptyContent, TestContext.Current.CancellationToken);
4040

4141
// Assert
4242
EnsureThatPassExpiredEventWasPublished();
@@ -51,7 +51,7 @@ internal async Task Given_valid_mark_pass_as_expired_request_Then_should_publish
5151
var url = BuildUrl(registeredPassId);
5252

5353
// Act
54-
using var markAsExpiredResponse = await _applicationHttpClient.PatchAsJsonAsync(url, EmptyContent);
54+
using var markAsExpiredResponse = await _applicationHttpClient.PatchAsJsonAsync(url, EmptyContent, TestContext.Current.CancellationToken);
5555

5656
// Assert
5757
markAsExpiredResponse.StatusCode.ShouldBe(HttpStatusCode.NoContent);
@@ -65,7 +65,7 @@ internal async Task Given_mark_pass_as_expired_request_with_not_existing_id_Then
6565
var url = BuildUrl(notExistingId);
6666

6767
// Act
68-
using var markAsExpiredResponse = await _applicationHttpClient.PatchAsJsonAsync(url, EmptyContent);
68+
using var markAsExpiredResponse = await _applicationHttpClient.PatchAsJsonAsync(url, EmptyContent, TestContext.Current.CancellationToken);
6969

7070
// Assert
7171
markAsExpiredResponse.StatusCode.ShouldBe(HttpStatusCode.NotFound);
@@ -103,9 +103,9 @@ private async Task<Guid> GetCreatedPass(Guid customerId)
103103
private void EnsureThatPassExpiredEventWasPublished() => _fakeEventBus.Received(1)
104104
.PublishAsync(Arg.Any<PassExpiredEvent>(), Arg.Any<CancellationToken>());
105105

106-
public Task InitializeAsync() => Task.CompletedTask;
106+
public ValueTask InitializeAsync() => ValueTask.CompletedTask;
107107

108-
public async Task DisposeAsync()
108+
public async ValueTask DisposeAsync()
109109
{
110110
_applicationHttpClient.Dispose();
111111
await _applicationInMemoryFactory.DisposeAsync();

Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Passes/RegisterPass/RegisterPassTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ public RegisterPassTests(WebApplicationFactory<Program> applicationInMemoryFacto
2121
_applicationHttpClient = _applicationInMemory.CreateClient();
2222
}
2323

24-
public Task InitializeAsync() => Task.CompletedTask;
24+
public ValueTask InitializeAsync() => ValueTask.CompletedTask;
2525

26-
public async Task DisposeAsync()
26+
public async ValueTask DisposeAsync()
2727
{
2828
_applicationHttpClient.Dispose();
2929
await _applicationInMemory.DisposeAsync();
@@ -38,7 +38,7 @@ internal async Task Given_contract_signed_event_Then_should_register_pass()
3838
var @event = ContractSignedEventFaker.Create();
3939

4040
// Act
41-
await integrationEventHandlerScope.Consume(@event);
41+
await integrationEventHandlerScope.Consume(@event, TestContext.Current.CancellationToken);
4242

4343
// Assert
4444
EnsureThatPassRegisteredEventWasPublished();

Chapter-1-initial-architecture/Src/Fitnet.IntegrationTests/Reports/GenerateNewPassesPerMonthReport/GenerateNewPassesPerMonthReportTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ internal async Task Given_valid_generate_new_report_request_Then_should_return_c
3434
await RegisterPasses(passRegistrationDateRanges);
3535

3636
// Act
37-
using var getReportResult = await _applicationHttpClient.GetAsync(ReportsApiPaths.GenerateNewReport);
37+
using var getReportResult = await _applicationHttpClient.GetAsync(ReportsApiPaths.GenerateNewReport, TestContext.Current.CancellationToken);
3838

3939
// Assert
4040
getReportResult.StatusCode.ShouldBe(HttpStatusCode.OK);
41-
var reportData = await getReportResult.Content.ReadFromJsonAsync<NewPassesRegistrationsPerMonthResponse>();
41+
var reportData = await getReportResult.Content.ReadFromJsonAsync<NewPassesRegistrationsPerMonthResponse>(TestContext.Current.CancellationToken);
4242
await Verify(reportData);
4343
}
4444

@@ -59,9 +59,9 @@ private async Task RegisterPass(DateTimeOffset from, DateTimeOffset to)
5959
await integrationEventHandler.Handle(@event, CancellationToken.None);
6060
}
6161

62-
public Task InitializeAsync() => Task.CompletedTask;
62+
public ValueTask InitializeAsync() => ValueTask.CompletedTask;
6363

64-
public async Task DisposeAsync()
64+
public async ValueTask DisposeAsync()
6565
{
6666
_applicationHttpClient.Dispose();
6767
await _applicationInMemoryFactory.DisposeAsync();

Chapter-1-initial-architecture/Src/Fitnet.UnitTests/Fitnet.UnitTests.csproj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,19 @@
22

33
<PropertyGroup>
44
<IsPackable>false</IsPackable>
5+
<NoWarn>$(NoWarn);xUnit1050</NoWarn>
56
</PropertyGroup>
67

78
<ItemGroup>
89
<PackageReference Include="Bogus" Version="35.6.1" />
910
<PackageReference Include="NSubstitute" Version="5.3.0" />
1011
<PackageReference Include="Shouldly" Version="4.3.0" />
11-
<PackageReference Include="xunit.v3" Version="1.0.0" />
12-
<PackageReference Include="xunit.analyzers" Version="1.18.0">
12+
<PackageReference Include="xunit.v3" Version="3.2.0" />
13+
<PackageReference Include="xunit.analyzers" Version="1.26.0">
1314
<PrivateAssets>all</PrivateAssets>
1415
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1516
</PackageReference>
16-
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.0">
17+
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
1718
<PrivateAssets>all</PrivateAssets>
1819
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1920
</PackageReference>

Chapter-1-initial-architecture/Src/Fitnet.UnitTests/GlobalExceptionHandlerTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ internal async Task Given_business_rule_validation_exception_Then_returns_confli
2020
var exceptionHandler = new GlobalExceptionHandler(_logger);
2121

2222
// Act
23-
await exceptionHandler.TryHandleAsync(_context, new BusinessRuleValidationException(exceptionMessage), default);
23+
await exceptionHandler.TryHandleAsync(_context, new BusinessRuleValidationException(exceptionMessage), TestContext.Current.CancellationToken);
2424

2525
// Assert
2626
_context.Response.StatusCode.ShouldBe((int)HttpStatusCode.Conflict);
@@ -37,7 +37,7 @@ internal async Task Given_other_than_business_rule_validation_exception_Then_ret
3737
var exceptionHandler = new GlobalExceptionHandler(_logger);
3838

3939
// Act
40-
await exceptionHandler.TryHandleAsync(_context, new InvalidCastException("test"), CancellationToken.None);
40+
await exceptionHandler.TryHandleAsync(_context, new InvalidCastException("test"), TestContext.Current.CancellationToken);
4141

4242
// Assert
4343
_context.Response.StatusCode.ShouldBe((int)HttpStatusCode.InternalServerError);

0 commit comments

Comments
 (0)