Files
2026-11-07 20:55:19 +00:00

54 lines
1.3 KiB
Go

package service
import (
"testing"
"time"
)
func TestPendingStore(t *testing.T) {
store := NewPendingStore(time.Minute)
store.Set(1, Pending{Action: PendingCreateList})
pending, ok := store.Take(1)
if !ok || pending.Action != PendingCreateList {
t.Fatalf("Take() = %+v, %v", pending, ok)
}
if _, ok := store.Take(1); ok {
t.Fatal("Take() returned a consumed pending value")
}
store.Set(2, Pending{Action: PendingRenameList, ListID: 10})
if !store.Clear(2) {
t.Fatal("Clear() = false, want true")
}
if store.Clear(2) {
t.Fatal("Clear() = true for an empty value")
}
}
func TestPendingStoreExpiry(t *testing.T) {
store := NewPendingStore(0)
store.Set(1, Pending{Action: PendingCreateList})
if _, ok := store.Take(1); ok {
t.Fatal("Take() returned an expired pending value")
}
}
func TestPendingStoreGetDoesNotConsume(t *testing.T) {
store := NewPendingStore(time.Minute)
store.Set(1, Pending{Action: PendingRenameList, ListID: 10})
first, ok := store.Get(1)
if !ok || first.Action != PendingRenameList || first.ListID != 10 {
t.Fatalf("Get() = %+v, %v", first, ok)
}
second, ok := store.Get(1)
if !ok || second.Action != PendingRenameList {
t.Fatalf("second Get() = %+v, %v", second, ok)
}
if _, ok := store.Take(1); !ok {
t.Fatal("Take() after Get() returned no pending value")
}
}