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) } }