using NSubstitute; using ScadaLink.AuditLog.Site; using ScadaLink.HealthMonitoring; namespace ScadaLink.AuditLog.Tests.Site; /// /// Bundle G (M2-T11) — 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 { [Fact] public void Increment_Routes_To_Collector_IncrementSiteAuditWriteFailures() { var collector = Substitute.For(); var counter = new HealthMetricsAuditWriteFailureCounter(collector); counter.Increment(); collector.Received(1).IncrementSiteAuditWriteFailures(); } [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(); } [Fact] public void Construction_With_Null_Collector_Throws_ArgumentNullException() { Assert.Throws( () => new HealthMetricsAuditWriteFailureCounter(null!)); } }