41 lines
1.5 KiB
C#
41 lines
1.5 KiB
C#
using ScadaLink.Commons.Entities.Audit;
|
|
using ScadaLink.Commons.Types;
|
|
|
|
namespace ScadaLink.Commons.Tests.Entities.Audit;
|
|
|
|
/// <summary>
|
|
/// Verifies the <see cref="SiteCall"/> central operational entity carries the
|
|
/// SourceNode column (additive, nullable) through init-only construction and
|
|
/// <c>with</c> expressions. Sibling to <see cref="AuditEventTests"/>.
|
|
/// </summary>
|
|
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);
|
|
}
|
|
}
|