From 34640724910afe3919c569b29c623dbda5c06ad8 Mon Sep 17 00:00:00 2001 From: Sawyer Cutler Date: Sun, 30 Aug 2026 15:03:30 -0700 Subject: [PATCH] Freeze listDue cursor test clock so TTL order is deterministic. CL-7252: put() defaulted to Date.now; a tick between rows shuffled expiresAt and flaked CI. --- packages/onboarding/src/pending-seed.test.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/onboarding/src/pending-seed.test.ts b/packages/onboarding/src/pending-seed.test.ts index 0985f9b0d..6d64f0d9b 100644 --- a/packages/onboarding/src/pending-seed.test.ts +++ b/packages/onboarding/src/pending-seed.test.ts @@ -196,6 +196,7 @@ describe("createInMemoryPendingSeedStore", () => { }); test("listDue returns oldest-due first and continues from an (expiresAt, userId, tenantId) cursor", async () => { + const clock = 0; const store = createInMemoryPendingSeedStore(testCipher()); for (let index = 0; index < 5; index += 1) { await store.put( @@ -204,11 +205,11 @@ describe("createInMemoryPendingSeedStore", () => { userId: `user_${index}`, tenantId: `ten_${index}`, }, - { ttlMs: 5_000 - index }, + { now: () => clock, ttlMs: 5_000 - index }, ); } - const first = await store.listDue({ limit: 2 }); + const first = await store.listDue({ limit: 2, now: () => clock }); expect(first.seeds.map((seed) => seed.userId)).toEqual([ "user_4", "user_3", @@ -217,6 +218,7 @@ describe("createInMemoryPendingSeedStore", () => { const second = await store.listDue({ limit: 2, + now: () => clock, ...(first.next !== undefined ? { after: first.next } : {}), }); expect(second.seeds.map((seed) => seed.userId)).toEqual([ @@ -227,6 +229,7 @@ describe("createInMemoryPendingSeedStore", () => { const third = await store.listDue({ limit: 2, + now: () => clock, ...(second.next !== undefined ? { after: second.next } : {}), }); expect(third.seeds.map((seed) => seed.userId)).toEqual(["user_0"]);