using NSubstitute;
using ZB.MOM.WW.ScadaBridge.AuditLog.Site;
using ZB.MOM.WW.ScadaBridge.HealthMonitoring;
namespace ZB.MOM.WW.ScadaBridge.AuditLog.Tests.Site;
///
/// The
/// adapter is the production binding for
/// on site nodes; it forwards every FallbackAuditWriter primary failure into
/// the shared so the site health report
/// surfaces the failure count as SiteAuditWriteFailures.
///
public class HealthMetricsAuditWriteFailureCounterTests
{
/// Verifies that a single increment is routed to the collector as a site audit write failure.
[Fact]
public void Increment_Routes_To_Collector_IncrementSiteAuditWriteFailures()
{
var collector = Substitute.For();
var counter = new HealthMetricsAuditWriteFailureCounter(collector);
counter.Increment();
collector.Received(1).IncrementSiteAuditWriteFailures();
}
/// Verifies that each of several increments is routed to the collector.
[Fact]
public void Increment_Multiple_Calls_Route_To_Collector_Each_Time()
{
var collector = Substitute.For();
var counter = new HealthMetricsAuditWriteFailureCounter(collector);
counter.Increment();
counter.Increment();
counter.Increment();
collector.Received(3).IncrementSiteAuditWriteFailures();
}
/// Verifies that constructing the counter with a null collector throws an .
[Fact]
public void Construction_With_Null_Collector_Throws_ArgumentNullException()
{
Assert.Throws(
() => new HealthMetricsAuditWriteFailureCounter(null!));
}
}