package store import ( "context" "errors" "testing" "time" ) func TestMemory_Reserve_Idempotent(t *testing.T) { m := NewMemory() d := Decision{ DecisionID: "dec-1", ApprovalRef: "sha256:aaaa", TransformRef: "sha256:bbbb", PayloadHash: "sha256:cccc", SinkTarget: "sink:dummy-sink", CreatedAt: time.Now(), } if err := m.Reserve(context.Background(), d); err != nil { t.Fatalf("first reserve: %v", err) } err := m.Reserve(context.Background(), d) if !errors.Is(err, ErrReplay) { t.Fatalf("second reserve: want ErrReplay, got %v", err) } got, ok, _ := m.Get(context.Background(), "dec-1") if !ok || got.ApprovalRef != d.ApprovalRef { t.Fatalf("get: ok=%v, got=%+v", ok, got) } }