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 { 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( 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); } }