using Xunit; using ZB.MOM.WW.OtOpcUa.Runtime.Historian; namespace ZB.MOM.WW.OtOpcUa.Runtime.Tests.Historian; /// /// Verifies self-gates on Enabled and /// warns (warn-only, never blocks startup) on the two gated misconfigurations: a blank /// OutboxPath while enabled, and a non-positive CommitIntervalMs under /// Periodic commit mode. No warning text carries a secret value. /// public sealed class ContinuousHistorizationOptionsTests { /// A disabled recorder yields no warnings regardless of the other knobs. [Fact] public void Disabled_no_warnings() => Assert.Empty(new ContinuousHistorizationOptions { Enabled = false }.Validate()); /// An enabled recorder with a blank outbox directory warns about OutboxPath. [Fact] public void Enabled_requires_outbox_path() => Assert.Contains( new ContinuousHistorizationOptions { Enabled = true, OutboxPath = "" }.Validate(), m => m.Contains("OutboxPath")); /// Periodic commit mode with a non-positive interval warns about CommitIntervalMs. [Fact] public void Periodic_requires_positive_interval() => Assert.Contains( new ContinuousHistorizationOptions { Enabled = true, OutboxPath = "x", CommitMode = "Periodic", CommitIntervalMs = 0, }.Validate(), m => m.Contains("CommitIntervalMs")); /// A fully-configured enabled recorder produces no warnings. [Fact] public void Valid_config_is_clean() => Assert.Empty( new ContinuousHistorizationOptions { Enabled = true, OutboxPath = "/var/lib/otopcua/historization", CommitMode = "PerEntry", }.Validate()); }