using ZB.MOM.WW.ScadaBridge.AuditLog.Central;
namespace ZB.MOM.WW.ScadaBridge.AuditLog.Tests.Central;
///
/// Eager startup validation for
/// (arch-review 08 round 2 NF4). A zero tick interval spins the maintenance
/// hosted service; a zero look-ahead leaves the partition function without a
/// future monthly boundary, risking inserts into the unbounded tail partition.
///
public class AuditLogPartitionMaintenanceOptionsValidatorTests
{
/// Verifies that the default options pass validation.
[Fact]
public void DefaultOptions_AreValid()
{
var validator = new AuditLogPartitionMaintenanceOptionsValidator();
Assert.True(validator.Validate(null, new AuditLogPartitionMaintenanceOptions()).Succeeded);
}
/// Verifies that a zero interval fails validation and names the interval property.
[Fact]
public void ZeroIntervalSeconds_Fails()
{
var validator = new AuditLogPartitionMaintenanceOptionsValidator();
var result = validator.Validate(null,
new AuditLogPartitionMaintenanceOptions { IntervalSeconds = 0 });
Assert.False(result.Succeeded);
Assert.Contains(result.Failures!,
f => f.Contains(nameof(AuditLogPartitionMaintenanceOptions.IntervalSeconds), StringComparison.Ordinal));
}
/// Verifies that a zero look-ahead fails validation and names the look-ahead property.
[Fact]
public void ZeroLookaheadMonths_Fails()
{
var validator = new AuditLogPartitionMaintenanceOptionsValidator();
var result = validator.Validate(null,
new AuditLogPartitionMaintenanceOptions { LookaheadMonths = 0 });
Assert.False(result.Succeeded);
Assert.Contains(result.Failures!,
f => f.Contains(nameof(AuditLogPartitionMaintenanceOptions.LookaheadMonths), StringComparison.Ordinal));
}
}