Skip to content

Commit 158f8f6

Browse files
authored
feat: upgrade xunit to v3
1 parent b8602fd commit 158f8f6

File tree

12 files changed

+72
-74
lines changed

12 files changed

+72
-74
lines changed
Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
<Project>
22

3-
<PropertyGroup>
4-
<AssemblyName>EvolutionaryArchitecture.$(MSBuildProjectName)</AssemblyName>
5-
<RootNamespace>$(AssemblyName)</RootNamespace>
6-
<TargetFramework>net9.0</TargetFramework>
7-
<AnalysisLevel>latest</AnalysisLevel>
8-
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
9-
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
10-
<ImplicitUsings>enable</ImplicitUsings>
11-
<Nullable>enable</Nullable>
12-
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
13-
<GenerateDocumentationFile>true</GenerateDocumentationFile>
14-
</PropertyGroup>
15-
16-
<ItemGroup>
17-
<InternalsVisibleTo Include="DynamicProxyGenAssembly2" />
18-
</ItemGroup>
3+
<PropertyGroup>
4+
<AssemblyName>EvolutionaryArchitecture.$(MSBuildProjectName)</AssemblyName>
5+
<RootNamespace>$(AssemblyName)</RootNamespace>
6+
<TargetFramework>net9.0</TargetFramework>
7+
<AnalysisLevel>latest</AnalysisLevel>
8+
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
9+
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
10+
<ImplicitUsings>enable</ImplicitUsings>
11+
<Nullable>enable</Nullable>
12+
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
13+
<GenerateDocumentationFile>true</GenerateDocumentationFile>
14+
</PropertyGroup>
15+
16+
<ItemGroup>
17+
<InternalsVisibleTo Include="DynamicProxyGenAssembly2"/>
18+
</ItemGroup>
19+
20+
<ItemGroup>
21+
<PackageReference
22+
Include="SonarAnalyzer.CSharp"
23+
Version="9.7.0.75501"
24+
PrivateAssets="all"
25+
Condition="$(MSBuildProjectExtension) == '.csproj'"
26+
/>
27+
</ItemGroup>
1928

20-
<ItemGroup>
21-
<PackageReference
22-
Include="SonarAnalyzer.CSharp"
23-
Version="9.7.0.75501"
24-
PrivateAssets="all"
25-
Condition="$(MSBuildProjectExtension) == '.csproj'"
26-
/>
27-
</ItemGroup>
28-
2929
</Project>

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +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" Version="2.9.2" />
11-
<PackageReference Include="xunit.analyzers" Version="1.17.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.categories" Version="2.0.8" />
16-
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
15+
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
1716
<PrivateAssets>all</PrivateAssets>
1817
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1918
</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 & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,26 @@
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="2.8.2">
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" Version="2.9.2" />
21-
<PackageReference Include="xunit.analyzers" Version="1.17.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>
25-
<PackageReference Include="xunit.categories" Version="2.0.8" />
2625
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.0" />
2726
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
2827
<PackageReference Include="coverlet.collector" Version="6.0.2">

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/Contracts/SignContract/SignContractTestData.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@ internal sealed class SignContractTestData : TheoryData<DateTimeOffset, DateTime
44
{
55
public SignContractTestData()
66
{
7-
AddRow(new DateTimeOffset(2021, 1, 1, 1, 1, 1, TimeSpan.Zero),
7+
Add(new DateTimeOffset(2021, 1, 1, 1, 1, 1, TimeSpan.Zero),
88
new DateTimeOffset(2021, 1, 1, 1, 1, 1, TimeSpan.Zero),
99
new DateTimeOffset(2021, 1, 1, 1, 1, 1, TimeSpan.Zero),
1010
new DateTimeOffset(2022, 1, 1, 1, 1, 1, TimeSpan.Zero));
1111

12-
AddRow(new DateTimeOffset(2022, 6, 1, 12, 0, 0, TimeSpan.Zero),
12+
Add(new DateTimeOffset(2022, 6, 1, 12, 0, 0, TimeSpan.Zero),
1313
new DateTimeOffset(2022, 6, 1, 12, 0, 0, TimeSpan.Zero),
1414
new DateTimeOffset(2022, 6, 1, 12, 0, 0, TimeSpan.Zero),
1515
new DateTimeOffset(2023, 6, 1, 12, 0, 0, TimeSpan.Zero));
1616

17-
AddRow(new DateTimeOffset(2023, 2, 15, 8, 30, 0, TimeSpan.Zero),
17+
Add(new DateTimeOffset(2023, 2, 15, 8, 30, 0, TimeSpan.Zero),
1818
new DateTimeOffset(2023, 2, 15, 8, 30, 0, TimeSpan.Zero),
1919
new DateTimeOffset(2023, 2, 15, 8, 30, 0, TimeSpan.Zero),
2020
new DateTimeOffset(2024, 2, 15, 8, 30, 0, TimeSpan.Zero));

0 commit comments

Comments
 (0)