using ScadaLink.Commons.Entities.Audit; using ScadaLink.Commons.Types; namespace ScadaLink.Commons.Tests.Entities.Audit; /// /// Verifies the central operational entity carries the /// SourceNode column (additive, nullable) through init-only construction and /// with expressions. Sibling to . /// public class SiteCallTests { private static SiteCall MinimalRow() => new() { TrackedOperationId = TrackedOperationId.New(), Channel = "ApiOutbound", Target = "ERP.GetOrder", SourceSite = "site-01", Status = "Submitted", RetryCount = 0, CreatedAtUtc = new DateTime(2026, 5, 23, 12, 0, 0, DateTimeKind.Utc), UpdatedAtUtc = new DateTime(2026, 5, 23, 12, 0, 0, DateTimeKind.Utc), IngestedAtUtc = new DateTime(2026, 5, 23, 12, 0, 1, DateTimeKind.Utc), }; [Fact] public void SiteCall_carries_SourceNode() { // SourceNode identifies the cluster node that emitted the cached call // (site node-a/node-b or central-a/central-b). Additive nullable init // property — defaults to null on rows ingested before the column // existed, and round-trips its value via `with` expressions. var row = MinimalRow(); Assert.Null(row.SourceNode); var stamped = row with { SourceNode = "node-b" }; Assert.Equal("node-b", stamped.SourceNode); Assert.Null(row.SourceNode); } }