Skip to content
bitzorcas
EN

Reference

Fixtures and seed data

Test fixtures and CSV seed data — how tests use seed data for deterministic testing, the CSV seeder framework, and test database setup.

Last updated

BitzOrcas uses CSV-based seed data for both production initialization and test fixtures. The same CsvSeedStepBase<T> framework powers both.

Seed data location

src/BuildingBlocks/BitzOrcas.Infrastructure.SqlSugar/Seeders/Assets/
├── Identity/ → platform_tenant.csv, sys_role.csv, etc.
└── MasterData/ → sys_country.csv, sys_language.csv, etc.

Test database setup

Integration tests initialize a test database using:

  1. --init-schema flag creates tables via SqlSugar CodeFirst
  2. --seed-demo loads CSV seed data via ISeedRunner
  3. Tests run against seeded data

CsvSeedReader

public class CsvSeedReader
{
// Reads CSV with header mapping to entity properties
public List<T> Read<T>(Stream csvStream) where T : class;
}

CsvSeedStepBase

public abstract class CsvSeedStepBase<T> : ISeedStep
where T : class, new()
{
// Reads CSV → maps to entities → upserts via SqlSugar Storageable
public override async Task ExecuteAsync(...)
{
var records = reader.Read<T>(csvStream);
await db.Storageable(records).ExecuteCommandAsync();
}
}

Adding test fixtures

  1. Add a CSV file to Seeders/Assets/ (or embed as resource)
  2. Create a seed step inheriting CsvSeedStepBase<T>
  3. Register in test setup

See also