using NATS.Server.Raft;

namespace NATS.Server.Tests;

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

        await transport.AppendHeartbeatAsync("L", ["F"], term: 2, default);
        follower.Term.ShouldBe(2);

        RaftReplicator.BacktrackNextIndex(5).ShouldBe(4);
        RaftReplicator.BacktrackNextIndex(1).ShouldBe(1);
    }
}
