using NATS.Server.Raft;

namespace NATS.Server.Tests;

public class RaftSnapshotTransferParityTests
{
    [Fact]
    public async Task Snapshot_transfer_installs_snapshot_when_follower_falls_behind()
    {
        var transport = new InMemoryRaftTransport();
        var leader = new RaftNode("L", transport);
        var follower = new RaftNode("F", transport);
        transport.Register(leader);
        transport.Register(follower);

        var snapshot = new RaftSnapshot
        {
            LastIncludedIndex = 10,
            LastIncludedTerm = 3,
        };

        await transport.InstallSnapshotAsync("L", "F", snapshot, default);
        follower.AppliedIndex.ShouldBe(10);
    }
}
