Files
ST-Bionic-Memory-Ecology/tests/message-updated-lightweight.mjs
2026-04-30 03:58:08 +08:00

112 lines
2.7 KiB
JavaScript

import assert from "node:assert/strict";
import {
onMessageEditedController,
onMessageUpdatedController,
registerCoreEventHooksController,
} from "../host/event-binding.js";
{
let invalidated = 0;
let rechecked = 0;
let refreshed = 0;
let ignored = null;
const result = onMessageUpdatedController(
{
invalidateRecallAfterHistoryMutation() {
invalidated += 1;
},
scheduleHistoryMutationRecheck() {
rechecked += 1;
},
refreshPersistedRecallMessageUi() {
refreshed += 1;
},
recordIgnoredMutationEvent(eventName, detail) {
ignored = { eventName, detail };
},
},
17,
{ source: "unit-test" },
);
assert.equal(invalidated, 0);
assert.equal(rechecked, 0);
assert.equal(refreshed, 1);
assert.equal(result.lightweight, true);
assert.equal(ignored?.eventName, "message-updated");
assert.equal(ignored?.detail?.reason, "lightweight-refresh-only");
}
{
let removedMessageIndex = null;
let invalidated = 0;
let rechecked = 0;
let refreshed = 0;
onMessageEditedController(
{
isMvuExtraAnalysisGuardActive: () => false,
removeMessageRecallRecord(messageIndex) {
removedMessageIndex = messageIndex;
},
invalidateRecallAfterHistoryMutation() {
invalidated += 1;
},
scheduleHistoryMutationRecheck() {
rechecked += 1;
},
refreshPersistedRecallMessageUi() {
refreshed += 1;
},
},
9,
{ source: "unit-test" },
);
assert.equal(removedMessageIndex, 9);
assert.equal(invalidated, 1);
assert.equal(rechecked, 1);
assert.equal(refreshed, 1);
}
{
const bindings = [];
const runtime = {
eventSource: {
on(eventName, handler) {
bindings.push({ eventName, handler });
},
},
eventTypes: {
MESSAGE_UPDATED: "message-updated",
MESSAGE_EDITED: "message-edited",
CHAT_CHANGED: "chat-changed",
},
handlers: {
onChatChanged() {},
onMessageEdited() {},
onMessageUpdated() {},
},
registerBeforeCombinePrompts() {
return null;
},
registerGenerationAfterCommands() {
return null;
},
getCoreEventBindingState() {
return { registered: false, cleanups: [] };
},
setCoreEventBindingState() {},
};
registerCoreEventHooksController(runtime);
const updatedBinding = bindings.find((entry) => entry.eventName === "message-updated");
const editedBinding = bindings.find((entry) => entry.eventName === "message-edited");
assert.equal(updatedBinding?.handler, runtime.handlers.onMessageUpdated);
assert.equal(editedBinding?.handler, runtime.handlers.onMessageEdited);
}
console.log("message-updated-lightweight tests passed");