57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
import {
|
|
applyChatReadWatermark,
|
|
applyDeletedUnreadMessage,
|
|
} from "./messages/chatListState.js";
|
|
|
|
test("confirmed chat reads clear a stale unread counter", () => {
|
|
const chat = {
|
|
id: 7,
|
|
unread_count: 3,
|
|
has_unread_mention: true,
|
|
last_read_message_id: 40,
|
|
last_message: { id: 43 },
|
|
};
|
|
|
|
assert.deepEqual(applyChatReadWatermark(chat, 43), {
|
|
...chat,
|
|
unread_count: 0,
|
|
has_unread_mention: false,
|
|
last_read_message_id: 43,
|
|
});
|
|
});
|
|
|
|
test("messages newer than the local read watermark remain unread", () => {
|
|
const chat = {
|
|
id: 7,
|
|
unread_count: 1,
|
|
last_read_message_id: 43,
|
|
last_message: { id: 44 },
|
|
};
|
|
|
|
assert.equal(applyChatReadWatermark(chat, 43), chat);
|
|
});
|
|
|
|
test("deleting an unread message decrements the local chat counter", () => {
|
|
const chat = {
|
|
id: 7,
|
|
unread_count: 2,
|
|
last_read_message_id: 40,
|
|
last_message: { id: 44 },
|
|
};
|
|
|
|
assert.deepEqual(applyDeletedUnreadMessage(chat, 43, 8, 9), {
|
|
...chat,
|
|
unread_count: 1,
|
|
});
|
|
});
|
|
|
|
test("deleting own or already read messages does not change the counter", () => {
|
|
const chat = { id: 7, unread_count: 2, last_read_message_id: 43 };
|
|
|
|
assert.equal(applyDeletedUnreadMessage(chat, 44, 9, 9), chat);
|
|
assert.equal(applyDeletedUnreadMessage(chat, 42, 8, 9), chat);
|
|
});
|