54 lines
1.3 KiB
Go
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")
|
|
}
|
|
}
|