fixes and tweaks

This commit is contained in:
moarten
2026-04-29 20:36:08 +02:00
parent b71f45e76c
commit 385119bb27
58 changed files with 1512 additions and 350 deletions
@@ -32,12 +32,31 @@ public class VerspakkettenControllerTests(LutraApiFactory factory)
Id = Guid.NewGuid(), Naam = "AH",
CreatedAt = DateTime.UtcNow, ModifiedAt = DateTime.UtcNow
});
await SeedAsync(new Verspakket
var verspakket = new Verspakket
{
Id = Guid.NewGuid(), Naam = "Lente Pakket", AantalPersonen = 2,
SupermarktId = supermarkt.Id,
CreatedAt = DateTime.UtcNow, ModifiedAt = DateTime.UtcNow
};
verspakket.AddFoto(new VerspakketFoto
{
Id = Guid.NewGuid(),
Data = [1, 2, 3],
IsMainImage = true,
VerspakketId = verspakket.Id,
CreatedAt = DateTime.UtcNow,
ModifiedAt = DateTime.UtcNow
});
verspakket.AddFoto(new VerspakketFoto
{
Id = Guid.NewGuid(),
Data = [4, 5, 6],
IsMainImage = false,
VerspakketId = verspakket.Id,
CreatedAt = DateTime.UtcNow,
ModifiedAt = DateTime.UtcNow
});
await SeedAsync(verspakket);
var response = await Client.GetAsync("/api/verspakketten");
@@ -45,6 +64,8 @@ public class VerspakkettenControllerTests(LutraApiFactory factory)
var body = await response.Content.ReadFromJsonAsync<GetVerspakketten.Response>();
body!.Verspakketten.Should().HaveCount(1);
body.Verspakketten.First().Naam.Should().Be("Lente Pakket");
body.Verspakketten.First().Foto.Should().NotBeNull();
body.Verspakketten.First().Foto!.IsMainImage.Should().BeTrue();
}
// ── GET /api/verspakketten/{id} ───────────────────────────────────────────
@@ -91,8 +112,8 @@ public class VerspakkettenControllerTests(LutraApiFactory factory)
CreatedAt = DateTime.UtcNow, ModifiedAt = DateTime.UtcNow
});
var command = new CreateVerspakket.Command("Herfst Pakket", 1499, 3, supermarkt.Id, null);
var response = await Client.PostAsJsonAsync("/api/verspakketten", command);
var request = new CreateVerspakketRequest("Herfst Pakket", 1499, 3, supermarkt.Id);
var response = await Client.PostAsJsonAsync("/api/verspakketten", request);
response.StatusCode.Should().Be(HttpStatusCode.Created);
var body = await response.Content.ReadFromJsonAsync<CreateVerspakket.Response>();
@@ -136,8 +157,8 @@ public class VerspakkettenControllerTests(LutraApiFactory factory)
[Fact]
public async Task Post_ReturnsBadRequest_WhenSupermarktDoesNotExist()
{
var command = new CreateVerspakket.Command("Winter Pakket", 999, 2, Guid.NewGuid(), null);
var response = await Client.PostAsJsonAsync("/api/verspakketten", command);
var request = new CreateVerspakketRequest("Winter Pakket", 999, 2, Guid.NewGuid());
var response = await Client.PostAsJsonAsync("/api/verspakketten", request);
response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
}
@@ -20,14 +20,14 @@ public abstract class IntegrationTestBase : IClassFixture<LutraApiFactory>, IAsy
}
/// <summary>Seed data or perform setup before each test.</summary>
public virtual Task InitializeAsync()
public virtual ValueTask InitializeAsync()
{
Factory.EnsureSchemaCreated();
return Task.CompletedTask;
return ValueTask.CompletedTask;
}
/// <summary>Reset database state after each test.</summary>
public async Task DisposeAsync()
public async ValueTask DisposeAsync()
{
using var scope = Factory.Services.CreateScope();
var db = scope.ServiceProvider.GetRequiredService<ILutraDbContext>() as LutraDbContext;
@@ -37,10 +37,10 @@ public abstract class IntegrationTestBase : IClassFixture<LutraApiFactory>, IAsy
db.Verspaketten.RemoveRange(db.Verspaketten);
db.Supermarkten.RemoveRange(db.Supermarkten);
await db.SaveChangesAsync(CancellationToken.None);
}
}
}
protected async Task<T> SeedAsync<T>(T entity) where T : class
protected async ValueTask<T> SeedAsync<T>(T entity) where T : class
{
using var scope = Factory.Services.CreateScope();
var db = scope.ServiceProvider.GetRequiredService<ILutraDbContext>() as LutraDbContext;
@@ -13,11 +13,14 @@
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="FluentAssertions" Version="8.9.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="10.0.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.6" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.4" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="10.0.7" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.7" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="xunit.v3" Version="3.2.2" />
</ItemGroup>
<ItemGroup>