using NATS.Server.Raft;

namespace NATS.Server.Tests;

public class RaftReplicationTests
{
    [Fact]
    public async Task Leader_replicates_entry_to_quorum_and_applies()
    {
        var cluster = RaftTestCluster.Create(3);
        var leader = await cluster.ElectLeaderAsync();

        var idx = await leader.ProposeAsync("create-stream", default);
        idx.ShouldBeGreaterThan(0);

        await cluster.WaitForAppliedAsync(idx);
        cluster.Nodes.All(n => n.AppliedIndex >= idx).ShouldBeTrue();
    }
}
