Corp/frontend/src/lib/chat-list-state.test.js

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