package db
import (
"fmt"
"testing"
"time"
"github.com/bluesky-social/indigo/atproto/syntax"
)
func TestDuePullEventsReadsOnlyALimitOldestFirst(t *testing.T) {
d := newTestDB(t)
repo := syntax.DID("did:plc:a")
if err := d.AddPullTicket(repo, "t1", PullTicket{Author: "did:plc:bob", State: "open", Version: "v0"}); err != nil {
t.Fatal(err)
}
for i := 1; i <= 5; i++ {
ev := PullEvent{RepoDid: repo, Ticket: "t1", Event: "closed", Pull: []byte("{}")}
if err := d.AdvancePullTicket(repo, "t1", fmt.Sprintf("v%d", i-1), fmt.Sprintf("v%d", i), "closed", &ev); err != nil {
t.Fatal(err)
}
}
due, err := d.DuePullEvents(repo, time.Now().Add(time.Hour), 3)
if err != nil || len(due) != 3 {
t.Fatalf("read %d events, %v, want the limit of 3", len(due), err)
}
if due[0].ID >= due[1].ID || due[1].ID >= due[2].ID {
t.Fatalf("ids %d %d %d, want oldest first", due[0].ID, due[1].ID, due[2].ID)
}
}