This commit is contained in:
commit
0e79a8eb5e
43 changed files with 1282 additions and 0 deletions
83
tests/Core/Jobs/JobModuleTests.cs
Normal file
83
tests/Core/Jobs/JobModuleTests.cs
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Net.Http.Json;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc.Testing;
|
||||
using TestWeb.Infra;
|
||||
using TestWeb.Core.Jobs;
|
||||
|
||||
namespace TestWeb.Tests.Core.Jobs;
|
||||
|
||||
public class JobModuleTests : IClassFixture<TestFixture>
|
||||
{
|
||||
private readonly HttpClient client;
|
||||
|
||||
public JobModuleTests(TestFixture fixture)
|
||||
{
|
||||
client = fixture.Client;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Base()
|
||||
{
|
||||
// Create
|
||||
var createRequest = new CreateJobEndpoint.Request(
|
||||
"Client name", "Pickup", "Dropoff"
|
||||
);
|
||||
var createCall = await client.PostAsJsonAsync(
|
||||
JobModule.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(
|
||||
JobModule.Prefix,
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, getListCall.StatusCode);
|
||||
|
||||
var getCall = await client.GetAsync(
|
||||
$"{JobModule.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(
|
||||
$"{JobModule.Prefix}/{createResponse.Id}", updateRequest,
|
||||
cancellationToken: TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, updateCall.StatusCode);
|
||||
|
||||
// Delete
|
||||
var deleteCall = await client.DeleteAsync(
|
||||
$"{JobModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, deleteCall.StatusCode);
|
||||
|
||||
// Not found
|
||||
var deleteCallNotFound = await client.DeleteAsync(
|
||||
$"{JobModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.NotFound, deleteCallNotFound.StatusCode);
|
||||
|
||||
var getCallNotFound = await client.GetAsync(
|
||||
$"{JobModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.NotFound, getCallNotFound.StatusCode);
|
||||
}
|
||||
}
|
||||
79
tests/Core/Users/UserModuleTests.cs
Normal file
79
tests/Core/Users/UserModuleTests.cs
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Net.Http.Json;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc.Testing;
|
||||
using TestWeb.Infra;
|
||||
using TestWeb.Core.Users;
|
||||
|
||||
namespace TestWeb.Tests.Core.Users;
|
||||
|
||||
public class UserModuleTests : IClassFixture<TestFixture>
|
||||
{
|
||||
private readonly HttpClient client;
|
||||
|
||||
public UserModuleTests(TestFixture fixture)
|
||||
{
|
||||
client = fixture.Client;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Base()
|
||||
{
|
||||
// Create
|
||||
var createRequest = new CreateUserEndpoint.Request("Test");
|
||||
var createCall = await client.PostAsJsonAsync(
|
||||
UserModule.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(
|
||||
UserModule.Prefix,
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, getListCall.StatusCode);
|
||||
|
||||
var getCall = await client.GetAsync(
|
||||
$"{UserModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, getCall.StatusCode);
|
||||
|
||||
// Update
|
||||
var updateRequest = new UpdateUserEndpoint.Request("Test");
|
||||
var updateCall = await client.PutAsJsonAsync(
|
||||
$"{UserModule.Prefix}/{createResponse.Id}",
|
||||
updateRequest,
|
||||
cancellationToken: TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, updateCall.StatusCode);
|
||||
|
||||
// Delete
|
||||
var deleteCall = await client.DeleteAsync(
|
||||
$"{UserModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, deleteCall.StatusCode);
|
||||
|
||||
// Not found
|
||||
var deleteCallNotFound = await client.DeleteAsync(
|
||||
$"{UserModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.NotFound, deleteCallNotFound.StatusCode);
|
||||
|
||||
var getCallNotFound = await client.GetAsync(
|
||||
$"{UserModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.NotFound, getCallNotFound.StatusCode);
|
||||
}
|
||||
}
|
||||
81
tests/Core/Vehicles/VehicleModuleTests.cs
Normal file
81
tests/Core/Vehicles/VehicleModuleTests.cs
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Net.Http.Json;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc.Testing;
|
||||
using TestWeb.Infra;
|
||||
using TestWeb.Core.Vehicles;
|
||||
|
||||
namespace TestWeb.Tests.Core.Vehicles;
|
||||
|
||||
public class VehicleModuleTests : IClassFixture<TestFixture>
|
||||
{
|
||||
private readonly HttpClient client;
|
||||
|
||||
public VehicleModuleTests(TestFixture fixture)
|
||||
{
|
||||
client = fixture.Client;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Base()
|
||||
{
|
||||
// Create
|
||||
var createRequest = new CreateVehicleEndpoint.Request("Test make", "Test model");
|
||||
var createCall = await client.PostAsJsonAsync(
|
||||
VehicleModule.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(
|
||||
VehicleModule.Prefix,
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, getListCall.StatusCode);
|
||||
|
||||
var getCall = await client.GetAsync(
|
||||
$"{VehicleModule.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(
|
||||
$"{VehicleModule.Prefix}/{createResponse.Id}",
|
||||
updateRequest,
|
||||
cancellationToken: TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, updateCall.StatusCode);
|
||||
|
||||
// Delete
|
||||
var deleteCall = await client.DeleteAsync(
|
||||
$"{VehicleModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, deleteCall.StatusCode);
|
||||
|
||||
// Not found
|
||||
var deleteCallNotFound = await client.DeleteAsync(
|
||||
$"{VehicleModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.NotFound, deleteCallNotFound.StatusCode);
|
||||
|
||||
var getCallNotFound = await client.GetAsync(
|
||||
$"{VehicleModule.Prefix}/{createResponse.Id}",
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.NotFound, getCallNotFound.StatusCode);
|
||||
}
|
||||
}
|
||||
31
tests/Core/WeatherForecasts/WeatherForecastModuleTests.cs
Normal file
31
tests/Core/WeatherForecasts/WeatherForecastModuleTests.cs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Net.Http.Json;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc.Testing;
|
||||
using TestWeb.Infra;
|
||||
using TestWeb.Core.WeatherForecasts;
|
||||
|
||||
namespace TestWeb.Tests.Core.WeatherForecasts;
|
||||
|
||||
public class WeatherForecastModuleTests : IClassFixture<TestFixture>
|
||||
{
|
||||
private readonly HttpClient client;
|
||||
|
||||
public WeatherForecastModuleTests(TestFixture fixture)
|
||||
{
|
||||
client = fixture.Client;
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Base()
|
||||
{
|
||||
// Get
|
||||
var getCall = await client.GetAsync(
|
||||
WeatherForecastModule.Prefix,
|
||||
TestContext.Current.CancellationToken
|
||||
);
|
||||
Assert.Equal(HttpStatusCode.OK, getCall.StatusCode);
|
||||
}
|
||||
}
|
||||
34
tests/TestFixture.cs
Normal file
34
tests/TestFixture.cs
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
using System.Net.Http.Headers;
|
||||
using System.Net.Http.Json;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc.Testing;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Xunit;
|
||||
using TestWeb.Infra;
|
||||
|
||||
[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;
|
||||
}
|
||||
}
|
||||
27
tests/TestWeb.Tests.csproj
Normal file
27
tests/TestWeb.Tests.csproj
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
<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>
|
||||
<Using Include="Xunit" />
|
||||
</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>
|
||||
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