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());
}