using BuildFlow.Shared.Domain.Common;
using Microsoft.EntityFrameworkCore;
using Scripting.Infrastructure.Persistence;
namespace BuildFlow.Scripting.Tests;
///
/// InMemory ScriptingDbContext 工厂(镜像 Workflow.Tests.TestDbFactory)。
/// 传入测试用 ICurrentUserContext,让 ScriptingDbContext.OnConfiguring 注册 AuditInterceptor,
/// 自动填充审计字段(CreatedBy/UpdatedBy/OperatorIP 等),与生产行为一致。
///
public static class ScriptingTestDbFactory
{
private sealed class TestCurrentUserContext : ICurrentUserContext
{
public string UserId => "test-user";
public string IPAddress => "127.0.0.1";
}
public static ScriptingDbContext Create(ICurrentUserContext? currentUser = null)
{
var options = new DbContextOptionsBuilder()
.UseInMemoryDatabase($"scripting-test-{Guid.NewGuid()}")
.Options;
// 用 2 参构造激活 AuditInterceptor,保证 ScriptExecutionLogEntity 等实体的审计字段被自动填充
return new ScriptingDbContext(options, currentUser ?? new TestCurrentUserContext());
}
}