using NATS.Server.JetStream.Models; using NATS.Server.JetStream.Storage; namespace NATS.Server.Tests; public class StreamStoreContractTests { [Fact] public async Task Append_increments_sequence_and_updates_state() { var store = new FakeStreamStore(); var seq = await store.AppendAsync("foo", "bar"u8.ToArray(), default); seq.ShouldBe((ulong)1); (await store.GetStateAsync(default)).Messages.ShouldBe((ulong)1); } private sealed class FakeStreamStore : IStreamStore { private ulong _last; public ValueTask AppendAsync(string subject, ReadOnlyMemory payload, CancellationToken ct) { _last++; return ValueTask.FromResult(_last); } public ValueTask GetStateAsync(CancellationToken ct) => ValueTask.FromResult(new StreamState { Messages = _last }); public ValueTask LoadAsync(ulong sequence, CancellationToken ct) => ValueTask.FromResult(null); public ValueTask PurgeAsync(CancellationToken ct) => ValueTask.CompletedTask; } }