using ZB.MOM.WW.ScadaBridge.Commons.Types.Audit;
using ZB.MOM.WW.ScadaBridge.Commons.Types.Enums;
namespace ZB.MOM.WW.ScadaBridge.Commons.Tests.Audit;
///
/// Flow Debugger (design 2026-09-05): the ScriptTrace channel and its four kinds must
/// fit the central AuditLog.Category/Kind columns and never move existing ordinals.
///
public class ScriptTraceEnumTests
{
/// Verifies that each script trace kind fits the central audit columns.
/// The script trace audit kind under test.
[Theory]
[InlineData(AuditKind.RouteCall)]
[InlineData(AuditKind.ScriptRun)]
[InlineData(AuditKind.AttributeWrite)]
[InlineData(AuditKind.AttributeWait)]
public void ScriptTraceKinds_FitTheCentralColumns(AuditKind kind)
{
// AuditLog.Category / Kind are nvarchar(32) (AuditLogEntityTypeConfiguration).
Assert.True(kind.ToString().Length <= 32);
Assert.True(AuditChannel.ScriptTrace.ToString().Length <= 32);
Assert.Equal($"ScriptTrace.{kind}", AuditFieldBuilders.BuildAction(AuditChannel.ScriptTrace, kind));
}
/// Verifies that the script trace values are appended after the cluster values so existing ordinals stay stable.
[Fact]
public void ScriptTrace_IsAppendedAfterCluster_SoExistingOrdinalsAreStable()
{
Assert.True((int)AuditChannel.ScriptTrace > (int)AuditChannel.Cluster);
Assert.True((int)AuditKind.RouteCall > (int)AuditKind.ManualFailover);
}
}