Files
bitvid/tests/dm-profile-snapshot-render.test.mjs
T

46 lines
1.7 KiB
JavaScript

import test from "node:test";
import assert from "node:assert/strict";
import { ProfileDirectMessageActions } from "../js/ui/profileModal/ProfileDirectMessageActions.js";
test("DM pane renders a persisted snapshot while the relay load is still active", () => {
const scheduled = [];
const actor = "a".repeat(64);
const controller = {
activeMessagesRequest: Symbol("relay-load"),
directMessagesCache: [],
directMessagesLastActor: null,
helper: { resolveActiveDmActor: () => actor },
renderer: {
scheduleDirectMessagesRender: (detail) => scheduled.push(detail),
setMessagesLoadingState: () => {},
},
};
const actions = new ProfileDirectMessageActions({}, controller);
const messages = [{ event: { id: "cached-message" } }];
actions.handleDirectMessagesUpdated({ messages, reason: "snapshot" });
assert.deepEqual(controller.directMessagesCache, messages);
assert.equal(controller.directMessagesLastActor, actor);
assert.deepEqual(scheduled, [{ messages, actorPubkey: actor, reason: "snapshot" }]);
});
test("DM pane waits for relay increments but ignores unrelated updates during a load", () => {
const controller = {
activeMessagesRequest: Symbol("relay-load"),
directMessagesCache: [],
directMessagesLastActor: null,
helper: { resolveActiveDmActor: () => "a".repeat(64) },
renderer: {
scheduleDirectMessagesRender: () => assert.fail("unrelated update must not render"),
setMessagesLoadingState: () => {},
},
};
const actions = new ProfileDirectMessageActions({}, controller);
actions.handleDirectMessagesUpdated({ messages: [{ event: { id: "other" } }], reason: "load" });
assert.deepEqual(controller.directMessagesCache, []);
});