From a7253be213e98999deed0d2a7b1066162817a934 Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Thu, 22 Sep 2022 16:49:06 -0700 Subject: [PATCH] getUnreadByConversationAndMarkRead: Take 'now' param for reliable tests --- ts/sql/Client.ts | 1 + ts/sql/Interface.ts | 1 + ts/sql/Server.ts | 4 +++- ts/test-electron/sql/markRead_test.ts | 6 ++++-- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ts/sql/Client.ts b/ts/sql/Client.ts index 232a1f91f..fbc1672c0 100644 --- a/ts/sql/Client.ts +++ b/ts/sql/Client.ts @@ -1269,6 +1269,7 @@ async function getUnreadByConversationAndMarkRead(options: { conversationId: string; isGroup?: boolean; newestUnreadAt: number; + now?: number; readAt?: number; storyId?: UUIDStringType; }): Promise { diff --git a/ts/sql/Interface.ts b/ts/sql/Interface.ts index 95bd69dc2..88644663b 100644 --- a/ts/sql/Interface.ts +++ b/ts/sql/Interface.ts @@ -465,6 +465,7 @@ export type DataInterface = { conversationId: string; isGroup?: boolean; newestUnreadAt: number; + now?: number; readAt?: number; storyId?: UUIDStringType; }) => Promise; diff --git a/ts/sql/Server.ts b/ts/sql/Server.ts index 43dde3bce..ce2c37530 100644 --- a/ts/sql/Server.ts +++ b/ts/sql/Server.ts @@ -2169,16 +2169,18 @@ async function getUnreadByConversationAndMarkRead({ newestUnreadAt, storyId, readAt, + now = Date.now(), }: { conversationId: string; isGroup?: boolean; newestUnreadAt: number; storyId?: UUIDStringType; readAt?: number; + now?: number; }): Promise { const db = getInstance(); return db.transaction(() => { - const expirationStartTimestamp = Math.min(Date.now(), readAt ?? Infinity); + const expirationStartTimestamp = Math.min(now, readAt ?? Infinity); db.prepare( ` UPDATE messages diff --git a/ts/test-electron/sql/markRead_test.ts b/ts/test-electron/sql/markRead_test.ts index f00769acb..0b4f782bb 100644 --- a/ts/test-electron/sql/markRead_test.ts +++ b/ts/test-electron/sql/markRead_test.ts @@ -304,6 +304,7 @@ describe('sql/markRead', () => { }); it('properly starts disappearing message timer, even if message is already read', async () => { + const now = Date.now(); assert.lengthOf(await _getAllMessages(), 0); const start = Date.now(); @@ -387,6 +388,7 @@ describe('sql/markRead', () => { conversationId, newestUnreadAt: message4.received_at, readAt, + now, }); assert.lengthOf(markedRead, 1, 'one message marked read'); @@ -412,14 +414,14 @@ describe('sql/markRead', () => { assert.strictEqual(sorted[1].id, message2.id, 'checking message 2'); assert.isAtMost( sorted[1].expirationStartTimestamp ?? Infinity, - Date.now(), + now, 'checking message 2 expirationStartTimestamp' ); assert.strictEqual(sorted[3].id, message4.id, 'checking message 4'); assert.isAtMost( sorted[3].expirationStartTimestamp ?? Infinity, - Date.now(), + now, 'checking message 4 expirationStartTimestamp' ); });