Watch
1
0
Fork
You've already forked test-web
0

Initial commit
All checks were successful
Build / build (push) Successful in 43s

This commit is contained in:
Chris 2026-06-06 10:39:37 +01:00
commit 1199bef0c8
45 changed files with 1200 additions and 0 deletions

1
tests/Global.Usings.cs Normal file
View file

@ -0,0 +1 @@
global using Xunit;

74
tests/JobsModuleTests.cs Normal file
View 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
View 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;
}
}

View 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
View 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);
}
}

View 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);
}
}

View 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
View file

@ -0,0 +1,3 @@
{
"$schema": "https://xunit.net/schema/current/xunit.runner.schema.json"
}