using ZB.MOM.WW.ScadaBridge.AuditLog.Central;
namespace ZB.MOM.WW.ScadaBridge.AuditLog.Tests.Central;
///
/// Tests for /
/// : the maintenance timeout
/// defaults to 30 minutes and is clamped to a 1-minute floor so a misconfigured 0/negative value
/// cannot yield a zero/negative ADO.NET command timeout (arch-review 04, S2).
///
public class AuditLogPurgeOptionsTests
{
/// Verifies that the maintenance command timeout defaults to 30 minutes.
[Fact]
public void MaintenanceCommandTimeout_Defaults_To_30_Minutes()
{
var options = new AuditLogPurgeOptions();
Assert.Equal(30, options.MaintenanceCommandTimeoutMinutes);
Assert.Equal(TimeSpan.FromMinutes(30), options.ResolvedMaintenanceCommandTimeout);
}
/// Verifies that the resolved maintenance command timeout is clamped to a minimum of one minute.
/// The configured timeout in minutes.
/// The expected resolved timeout in minutes.
[Theory]
[InlineData(0, 1)] // clamp floor — a zero config value cannot become a zero timeout
[InlineData(-5, 1)] // clamp floor — negatives are rejected by ADO.NET
[InlineData(1, 1)] // boundary passthrough
[InlineData(45, 45)] // ordinary passthrough
public void ResolvedMaintenanceCommandTimeout_Clamps_To_MinimumOneMinute(int configured, int expectedMinutes)
{
var options = new AuditLogPurgeOptions { MaintenanceCommandTimeoutMinutes = configured };
Assert.Equal(TimeSpan.FromMinutes(expectedMinutes), options.ResolvedMaintenanceCommandTimeout);
}
}