This commit is contained in:
commit
1199bef0c8
45 changed files with 1200 additions and 0 deletions
1
tests/Global.Usings.cs
Normal file
1
tests/Global.Usings.cs
Normal file
|
|
@ -0,0 +1 @@
|
|||
global using Xunit;
|
||||
74
tests/JobsModuleTests.cs
Normal file
74
tests/JobsModuleTests.cs
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
using System.Net;
|
||||
using System.Net.Http.Json;
|
||||
|
||||
namespace TestWeb.Tests;
|
||||
|
||||
using Core.Jobs;
|
||||
|
||||
public class JobsModuleTests(TestFixture fixture) : IClassFixture<TestFixture>
|
||||
{
|
||||
private readonly HttpClient client = fixture.Client;
|
||||
|
||||
[Fact]
|
||||
public async Task Base()
|
||||
{
|
||||
// Create
|
||||
var createRequest = new CreateJobEndpoint.Request(
|
||||
"Client name", "Pickup", "Dropoff"
|
||||
);
|
||||
var createCall = await client.PostAsJsonAsync(
|
||||
JobsModule.Prefix,
|
||||
createRequest,
|
||||
cancellationToken: TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, createCall.StatusCode);
|
||||
|
||||
var createResponse = await createCall.Content
|
||||
.ReadFromJsonAsync<CreateJobEndpoint.Response>(
|
||||
cancellationToken: TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.NotNull(createResponse);
|
||||
|
||||
// Get
|
||||
var getListCall = await client.GetAsync(
|
||||
JobsModule.Prefix,
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, getListCall.StatusCode);
|
||||
|
||||
var getCall = await client.GetAsync(
|
||||
$"{JobsModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, getCall.StatusCode);
|
||||
|
||||
// Update
|
||||
var updateRequest = new UpdateJobEndpoint.Request(
|
||||
"Client name", "Pickup update", "Dropoff update");
|
||||
var updateCall = await client.PutAsJsonAsync(
|
||||
$"{JobsModule.Prefix}/{createResponse.Id}", updateRequest,
|
||||
cancellationToken: TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, updateCall.StatusCode);
|
||||
|
||||
// Delete
|
||||
var deleteCall = await client.DeleteAsync(
|
||||
$"{JobsModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, deleteCall.StatusCode);
|
||||
|
||||
// Not found
|
||||
var deleteCallNotFound = await client.DeleteAsync(
|
||||
$"{JobsModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.NotFound, deleteCallNotFound.StatusCode);
|
||||
|
||||
var getCallNotFound = await client.GetAsync(
|
||||
$"{JobsModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.NotFound, getCallNotFound.StatusCode);
|
||||
}
|
||||
}
|
||||
28
tests/TestFixture.cs
Normal file
28
tests/TestFixture.cs
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
using Microsoft.AspNetCore.Mvc.Testing;
|
||||
|
||||
[assembly: AssemblyFixture(typeof(TestWeb.Tests.TestFixture))]
|
||||
|
||||
namespace TestWeb.Tests;
|
||||
|
||||
public class TestFixture : IAsyncLifetime
|
||||
{
|
||||
public HttpClient Client { get; private set; } = null!;
|
||||
private readonly WebApplicationFactory<Program> factory;
|
||||
|
||||
public TestFixture()
|
||||
{
|
||||
factory = new WebApplicationFactory<Program>();
|
||||
}
|
||||
|
||||
public ValueTask InitializeAsync()
|
||||
{
|
||||
Client = factory.CreateClient();
|
||||
return ValueTask.CompletedTask;
|
||||
}
|
||||
|
||||
public ValueTask DisposeAsync()
|
||||
{
|
||||
Client.Dispose();
|
||||
return ValueTask.CompletedTask;
|
||||
}
|
||||
}
|
||||
23
tests/TestWeb.Tests.csproj
Normal file
23
tests/TestWeb.Tests.csproj
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="xunit.runner.json" CopyToOutputDirectory="PreserveNewest" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
|
||||
<PackageReference Include="xunit.v3" Version="3.2.1" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.9" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\src\TestWeb.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
70
tests/UsersModuleTests.cs
Normal file
70
tests/UsersModuleTests.cs
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
using System.Net;
|
||||
using System.Net.Http.Json;
|
||||
|
||||
namespace TestWeb.Tests;
|
||||
|
||||
using Core.Users;
|
||||
|
||||
public class UserModuleTests(TestFixture fixture) : IClassFixture<TestFixture>
|
||||
{
|
||||
private readonly HttpClient client = fixture.Client;
|
||||
|
||||
[Fact]
|
||||
public async Task Base()
|
||||
{
|
||||
// Create
|
||||
var createRequest = new CreateUserEndpoint.Request("Test");
|
||||
var createCall = await client.PostAsJsonAsync(
|
||||
UsersModule.Prefix,
|
||||
createRequest,
|
||||
cancellationToken: TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, createCall.StatusCode);
|
||||
|
||||
var createResponse = await createCall.Content
|
||||
.ReadFromJsonAsync<CreateUserEndpoint.Response>(cancellationToken: TestContext.Current.CancellationToken);
|
||||
Assert.NotNull(createResponse);
|
||||
|
||||
// Get
|
||||
var getListCall = await client.GetAsync(
|
||||
UsersModule.Prefix,
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, getListCall.StatusCode);
|
||||
|
||||
var getCall = await client.GetAsync(
|
||||
$"{UsersModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, getCall.StatusCode);
|
||||
|
||||
// Update
|
||||
var updateRequest = new UpdateUserEndpoint.Request("Test");
|
||||
var updateCall = await client.PutAsJsonAsync(
|
||||
$"{UsersModule.Prefix}/{createResponse.Id}",
|
||||
updateRequest,
|
||||
cancellationToken: TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, updateCall.StatusCode);
|
||||
|
||||
// Delete
|
||||
var deleteCall = await client.DeleteAsync(
|
||||
$"{UsersModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, deleteCall.StatusCode);
|
||||
|
||||
// Not found
|
||||
var deleteCallNotFound = await client.DeleteAsync(
|
||||
$"{UsersModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.NotFound, deleteCallNotFound.StatusCode);
|
||||
|
||||
var getCallNotFound = await client.GetAsync(
|
||||
$"{UsersModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.NotFound, getCallNotFound.StatusCode);
|
||||
}
|
||||
}
|
||||
72
tests/VehiclesModuleTests.cs
Normal file
72
tests/VehiclesModuleTests.cs
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
using System.Net;
|
||||
using System.Net.Http.Json;
|
||||
|
||||
namespace TestWeb.Tests;
|
||||
|
||||
using Core.Vehicles;
|
||||
|
||||
public class VehiclesModuleTests(TestFixture fixture) : IClassFixture<TestFixture>
|
||||
{
|
||||
private readonly HttpClient client = fixture.Client;
|
||||
|
||||
[Fact]
|
||||
public async Task Base()
|
||||
{
|
||||
// Create
|
||||
var createRequest = new CreateVehicleEndpoint.Request("Test make", "Test model");
|
||||
var createCall = await client.PostAsJsonAsync(
|
||||
VehiclesModule.Prefix,
|
||||
createRequest,
|
||||
cancellationToken: TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, createCall.StatusCode);
|
||||
|
||||
var createResponse = await createCall.Content
|
||||
.ReadFromJsonAsync<CreateVehicleEndpoint.Response>(
|
||||
cancellationToken: TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.NotNull(createResponse);
|
||||
|
||||
// Get
|
||||
var getListCall = await client.GetAsync(
|
||||
VehiclesModule.Prefix,
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, getListCall.StatusCode);
|
||||
|
||||
var getCall = await client.GetAsync(
|
||||
$"{VehiclesModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, getCall.StatusCode);
|
||||
|
||||
// Update
|
||||
var updateRequest = new UpdateVehicleEndpoint.Request("Test make update", "Test model update");
|
||||
var updateCall = await client.PutAsJsonAsync(
|
||||
$"{VehiclesModule.Prefix}/{createResponse.Id}",
|
||||
updateRequest,
|
||||
cancellationToken: TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, updateCall.StatusCode);
|
||||
|
||||
// Delete
|
||||
var deleteCall = await client.DeleteAsync(
|
||||
$"{VehiclesModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, deleteCall.StatusCode);
|
||||
|
||||
// Not found
|
||||
var deleteCallNotFound = await client.DeleteAsync(
|
||||
$"{VehiclesModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.NotFound, deleteCallNotFound.StatusCode);
|
||||
|
||||
var getCallNotFound = await client.GetAsync(
|
||||
$"{VehiclesModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.NotFound, getCallNotFound.StatusCode);
|
||||
}
|
||||
}
|
||||
21
tests/WeatherForecastsModuleTests.cs
Normal file
21
tests/WeatherForecastsModuleTests.cs
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
using System.Net;
|
||||
|
||||
namespace TestWeb.Tests;
|
||||
|
||||
using Core.WeatherForecasts;
|
||||
|
||||
public class WeatherForecastsModuleTests(TestFixture fixture) : IClassFixture<TestFixture>
|
||||
{
|
||||
private readonly HttpClient client = fixture.Client;
|
||||
|
||||
[Fact]
|
||||
public async Task Base()
|
||||
{
|
||||
// Get
|
||||
var getCall = await client.GetAsync(
|
||||
WeatherForecastsModule.Prefix,
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, getCall.StatusCode);
|
||||
}
|
||||
}
|
||||
3
tests/xunit.runner.json
Normal file
3
tests/xunit.runner.json
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"$schema": "https://xunit.net/schema/current/xunit.runner.schema.json"
|
||||
}
|
||||
Loading…
Reference in a new issue