29 lines
873 B
C#
29 lines
873 B
C#
using Shared.Operations;
|
|
using Xunit;
|
|
|
|
namespace Shared.Operations.Tests;
|
|
|
|
public sealed class ReconcilePolicyTests
|
|
{
|
|
[Fact]
|
|
public void Equal_values_are_matched_immediately()
|
|
{
|
|
var now = DateTimeOffset.UtcNow;
|
|
Assert.Equal("matched", ReconcilePolicy.DecideStatus(true, now, now, TimeSpan.FromSeconds(30)));
|
|
}
|
|
|
|
[Fact]
|
|
public void Mismatch_inside_eventual_consistency_window_is_pending()
|
|
{
|
|
var changed = DateTimeOffset.UtcNow;
|
|
Assert.Equal("pending", ReconcilePolicy.DecideStatus(false, changed, changed.AddSeconds(10), TimeSpan.FromSeconds(30)));
|
|
}
|
|
|
|
[Fact]
|
|
public void Mismatch_after_grace_period_is_actionable()
|
|
{
|
|
var changed = DateTimeOffset.UtcNow;
|
|
Assert.Equal("mismatch", ReconcilePolicy.DecideStatus(false, changed, changed.AddMinutes(2), TimeSpan.FromSeconds(30)));
|
|
}
|
|
}
|