76e8de9484
Set up YesChef.Api.UnitTests and YesChef.Api.IntegrationTests projects running on TUnit + Microsoft.Testing.Platform. Integration tests use a single Postgres 17 Testcontainer per session and clone a migrated template database per test (`CREATE DATABASE … TEMPLATE …`) so tests remain fully isolated and run in parallel without replaying migrations each time. Test-author DX is built around fluent entity builders, a TestDataFactory for common scenarios, and a two-level base hierarchy (IntegrationTest / AuthenticatedIntegrationTest) whose `[Before(Test)]` hooks stand up the per-test database, app factory, default user, and authenticated HttpClient — leaving each test body focused on the action under test. Adds src/backend/global.json to opt `dotnet test` into MTP mode on the .NET 10 SDK, and updates CLAUDE.md with how to run the tests. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
24 lines
663 B
C#
24 lines
663 B
C#
using YesChef.Api.Data;
|
|
using YesChef.Api.Entities;
|
|
|
|
namespace YesChef.Api.IntegrationTests.Builders;
|
|
|
|
public sealed class StoreBuilder
|
|
{
|
|
private string _name = $"Store-{Guid.NewGuid():N}"[..20];
|
|
private int _sortOrder;
|
|
|
|
public StoreBuilder Named(string name) { _name = name; return this; }
|
|
public StoreBuilder WithSortOrder(int sortOrder) { _sortOrder = sortOrder; return this; }
|
|
|
|
public Store Build() => new() { Name = _name, SortOrder = _sortOrder };
|
|
|
|
public async Task<Store> PersistAsync(YesChefDb db)
|
|
{
|
|
var store = Build();
|
|
db.Stores.Add(store);
|
|
await db.SaveChangesAsync();
|
|
return store;
|
|
}
|
|
}
|