Skip to content

Commit ed91dc0

Browse files
committed
Converting tests to use Shouldly
1 parent 0b7cad1 commit ed91dc0

File tree

9 files changed

+52
-47
lines changed

9 files changed

+52
-47
lines changed

sample/Directory.Packages.props

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -6,52 +6,53 @@
66
<PackageVersion Include="Ardalis.Result" Version="10.1.0" />
77
<PackageVersion Include="Ardalis.Result.AspNetCore" Version="10.1.0" />
88
<PackageVersion Include="Ardalis.SharedKernel" Version="2.1.1" />
9-
<PackageVersion Include="Ardalis.SmartEnum" Version="8.1.0" />
9+
<PackageVersion Include="Ardalis.SmartEnum" Version="8.2.0" />
1010
<PackageVersion Include="Ardalis.Specification" Version="8.0.0" />
1111
<PackageVersion Include="Ardalis.Specification.EntityFrameworkCore" Version="8.0.0" />
1212
<PackageVersion Include="Azure.Identity" Version="1.13.1" />
13-
<PackageVersion Include="coverlet.collector" Version="6.0.2" />
14-
<PackageVersion Include="FastEndpoints" Version="5.31.0" />
15-
<PackageVersion Include="FastEndpoints.ApiExplorer" Version="2.2.0" />
16-
<PackageVersion Include="FastEndpoints.Swagger" Version="5.31.0" />
17-
<PackageVersion Include="FastEndpoints.Swagger.Swashbuckle" Version="2.2.0" />
13+
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
14+
<PackageVersion Include="FastEndpoints" Version="5.34.0" />
15+
<PackageVersion Include="FastEndpoints.ApiExplorer" Version="2.3.0" />
16+
<PackageVersion Include="FastEndpoints.Swagger" Version="5.34.0" />
17+
<PackageVersion Include="FastEndpoints.Swagger.Swashbuckle" Version="2.3.0" />
1818
<PackageVersion Include="FluentAssertions" Version="6.12.2" />
19-
<PackageVersion Include="MailKit" Version="4.8.0" />
19+
<PackageVersion Include="MailKit" Version="4.10.0" />
2020
<PackageVersion Include="MediatR" Version="12.4.1" />
21-
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="9.0.0" />
22-
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.0" />
23-
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.0" />
24-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.0" />
21+
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="9.0.2" />
22+
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.2" />
23+
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.2" />
24+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.2" />
2525
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0" />
26-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0" />
27-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.0" />
28-
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.0" />
26+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.2" />
27+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.2" />
28+
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.2" />
2929
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
3030
<PackageVersion Include="Microsoft.Extensions.Logging" Version="9.0.0" />
31-
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.0" />
31+
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.2" />
3232
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="9.0.0" />
33-
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
33+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
3434
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
3535
<PackageVersion Include="NimblePros.SharedKernel" Version="2.1.1" />
3636
<PackageVersion Include="NSubstitute" Version="5.3.0" />
37-
<PackageVersion Include="ReportGenerator" Version="5.4.0" />
38-
<PackageVersion Include="Serilog.AspNetCore" Version="8.0.3" />
37+
<PackageVersion Include="ReportGenerator" Version="5.4.4" />
38+
<PackageVersion Include="Serilog.AspNetCore" Version="9.0.0" />
3939
<PackageVersion Include="Serilog.Sinks.ApplicationInsights" Version="4.0.1-dev-00046" />
40+
<PackageVersion Include="Shouldly" Version="4.3.0" />
4041
<PackageVersion Include="SQLite" Version="3.13.0" />
4142
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.5.0" />
4243
<PackageVersion Include="Swashbuckle.AspNetCore.Annotations" Version="6.5.0" />
43-
<PackageVersion Include="Testcontainers" Version="4.0.0" />
44-
<PackageVersion Include="Vogen" Version="5.0.3" />
45-
<PackageVersion Include="xunit" Version="2.9.2" />
46-
<PackageVersion Include="xunit.runner.visualstudio" Version="3.0.0-pre.49" />
47-
<PackageVersion Include="Aspire.Hosting.AppHost" Version="9.0.0" />
48-
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="9.0.0" />
49-
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="9.0.0" />
50-
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.10.0" />
51-
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.10.0" />
52-
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.9.0" />
53-
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.9.0" />
54-
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.9.0" />
44+
<PackageVersion Include="Testcontainers" Version="4.3.0" />
45+
<PackageVersion Include="Vogen" Version="7.0.1" />
46+
<PackageVersion Include="xunit" Version="2.9.3" />
47+
<PackageVersion Include="xunit.runner.visualstudio" Version="3.0.2" />
48+
<PackageVersion Include="Aspire.Hosting.AppHost" Version="9.1.0" />
49+
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="9.2.0" />
50+
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="9.1.0" />
51+
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.11.1" />
52+
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.11.1" />
53+
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.11.0" />
54+
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.11.0" />
55+
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.11.0" />
5556
<PackageVersion Include="Aspire.Hosting.Testing" Version="9.0.0" />
5657
</ItemGroup>
5758
</Project>

sample/tests/NimblePros.SampleToDo.FunctionalTests/Contributors/ContributorCreate.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using NimblePros.SampleToDo.Web.Contributors;
2+
using Shouldly;
23

34
namespace NimblePros.SampleToDo.FunctionalTests.Contributors;
45

@@ -20,9 +21,9 @@ public async Task ReturnsOneContributor()
2021
var content = StringContentHelpers.FromModelAsJson(request);
2122

2223
var result = await _client.PostAndDeserializeAsync<CreateContributorResponse>(
23-
CreateContributorRequest.Route, content);
24+
CreateContributorRequest.Route, content);
2425

25-
result.Name.Should().Be(testName);
26-
result.Id.Should().BeGreaterThan(0);
26+
result.Name.ShouldBe(testName);
27+
result.Id.ShouldBeGreaterThan(0);
2728
}
2829
}

sample/tests/NimblePros.SampleToDo.FunctionalTests/Contributors/ContributorUpdate.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using NimblePros.SampleToDo.Web;
22
using NimblePros.SampleToDo.Web.Contributors;
3+
using Shouldly;
34

45
namespace NimblePros.SampleToDo.FunctionalTests.Contributors;
56

@@ -24,8 +25,8 @@ public async Task UpdatesContributorNameAndReturnsUpdatedRecord()
2425

2526
var result = await _client.PutAndDeserializeAsync<UpdateContributorResponse>(putRoute, content);
2627

27-
result.Contributor.Name.Should().Be(newName);
28-
result.Contributor.Id.Should().BeGreaterThan(0);
28+
result.Contributor.Name.ShouldBe(newName);
29+
result.Contributor.Id.ShouldBeGreaterThan(0);
2930
}
3031

3132
[Fact]
@@ -50,5 +51,4 @@ public async Task ReturnsBadRequestIfRouteIdDoesNotMatchBodyId()
5051

5152
_ = await _client.PutAndEnsureBadRequestAsync(putRoute, content);
5253
}
53-
5454
}

sample/tests/NimblePros.SampleToDo.FunctionalTests/GlobalUsings.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
global using Ardalis.HttpClientTestExtensions;
33
global using DotNet.Testcontainers.Builders;
44
global using DotNet.Testcontainers.Containers;
5-
global using FluentAssertions;
65
global using Microsoft.AspNetCore.Hosting;
76
global using Microsoft.AspNetCore.Mvc.Testing;
87
global using Microsoft.EntityFrameworkCore;

sample/tests/NimblePros.SampleToDo.FunctionalTests/NimblePros.SampleToDo.FunctionalTests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="FluentAssertions" />
1110
<PackageReference Include="Microsoft.NET.Test.Sdk" />
1211
<PackageReference Include="NimblePros.SharedKernel" />
12+
<PackageReference Include="Shouldly" />
1313
<PackageReference Include="Testcontainers" />
1414
<PackageReference Include="xunit" />
1515
<PackageReference Include="xunit.runner.visualstudio">

sample/tests/NimblePros.SampleToDo.FunctionalTests/Projects/ProjectAddToDoItem.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using NimblePros.SampleToDo.Web;
22
using NimblePros.SampleToDo.Web.Projects;
33
using NimblePros.SampleToDo.Web.Endpoints.Projects;
4+
using Shouldly;
45

56
namespace NimblePros.SampleToDo.FunctionalTests.Projects;
67

@@ -39,6 +40,6 @@ public async Task AddsItemAndReturnsRouteToProject()
3940
result.Headers.Location!.ToString().Should().Be(expectedRoute);
4041

4142
var updatedProject = await _client.GetAndDeserializeAsync<GetProjectByIdResponse>(expectedRoute);
42-
updatedProject.Items.Should().ContainSingle(item => item.Title == toDoTitle);
43+
updatedProject.Items.Count(item => item.Title == toDoTitle).ShouldBe(1);
4344
}
4445
}

sample/tests/NimblePros.SampleToDo.FunctionalTests/Projects/ProjectCreate.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using NimblePros.SampleToDo.Web.Projects;
2+
using Shouldly;
23

34
namespace NimblePros.SampleToDo.FunctionalTests.Projects;
45

@@ -20,9 +21,9 @@ public async Task ReturnsOneProject()
2021
var content = StringContentHelpers.FromModelAsJson(request);
2122

2223
var result = await _client.PostAndDeserializeAsync<CreateProjectResponse>(
23-
CreateProjectRequest.Route, content);
24+
CreateProjectRequest.Route, content);
2425

25-
result.Name.Should().Be(testName);
26-
result.Id.Should().BeGreaterThan(0);
26+
result.Name.ShouldBe(testName);
27+
result.Id.ShouldBeGreaterThan(0);
2728
}
2829
}

sample/tests/NimblePros.SampleToDo.FunctionalTests/Projects/ProjectGetById.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using NimblePros.SampleToDo.Web;
22
using NimblePros.SampleToDo.Web.Endpoints.Projects;
33
using NimblePros.SampleToDo.Web.Projects;
4+
using Shouldly;
45

56
namespace NimblePros.SampleToDo.FunctionalTests.Projects;
67

@@ -19,9 +20,9 @@ public async Task ReturnsSeedProjectGivenId1()
1920
{
2021
var result = await _client.GetAndDeserializeAsync<GetProjectByIdResponse>(GetProjectByIdRequest.BuildRoute(1));
2122

22-
Assert.Equal(1, result.Id);
23-
Assert.Equal(SeedData.TestProject1.Name.Value, result.Name);
24-
Assert.Equal(3, result.Items.Count);
23+
result.Id.ShouldBe(1);
24+
result.Name.ShouldBe(SeedData.TestProject1.Name.Value);
25+
result.Items.Count.ShouldBe(3);
2526
}
2627

2728
[Fact]

sample/tests/NimblePros.SampleToDo.FunctionalTests/Projects/ProjectItemMarkComplete.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using NimblePros.SampleToDo.Web.Endpoints.Projects;
33
using NimblePros.SampleToDo.Web.ProjectEndpoints;
44
using NimblePros.SampleToDo.Web.Projects;
5+
using Shouldly;
56

67
namespace NimblePros.SampleToDo.FunctionalTests.Projects;
78

@@ -36,10 +37,10 @@ public async Task MarksIncompleteItemComplete()
3637
response.EnsureSuccessStatusCode();
3738

3839
var stringResponse = await response.Content.ReadAsStringAsync();
39-
Assert.Equal("", stringResponse);
40+
stringResponse.ShouldBeEmpty();
4041

4142
// confirm item is complete
4243
var project = await _client.GetAndDeserializeAsync<GetProjectByIdResponse>(GetProjectByIdRequest.BuildRoute(projectId));
43-
project.Items.First(i => i.Id == itemId).IsDone.Should().BeTrue();
44+
project.Items.First(i => i.Id == itemId).IsDone.ShouldBeTrue();
4445
}
4546
}

0 commit comments

Comments
 (0)