test(telegram): initialize topic cache store in context harness

This commit is contained in:
Tideclaw
2026-05-24 15:03:10 +00:00
parent 3ec4fe5123
commit 8959da3903

View File

@@ -103,9 +103,24 @@ let buildTelegramMessageContextLoader:
| undefined;
let vitestModuleLoader: Promise<typeof import("vitest")> | undefined;
let messageContextMocksInstalled = false;
let topicNameStoreTestFactoryInstalled = false;
const topicNameStoresForTest = new Map<
string,
Map<
string,
{
name: string;
iconColor?: number;
iconCustomEmojiId?: string;
closed?: boolean;
updatedAt: number;
}
>
>();
async function loadBuildTelegramMessageContext() {
await installMessageContextTestMocks();
await installTopicNameStoreTestFactory();
if (!buildTelegramMessageContextLoader) {
({ buildTelegramMessageContext: buildTelegramMessageContextLoader } =
await import("./bot-message-context.js"));
@@ -118,6 +133,31 @@ async function loadVitestModule() {
return await vitestModuleLoader;
}
async function installTopicNameStoreTestFactory() {
if (topicNameStoreTestFactoryInstalled) {
return;
}
const { setTelegramTopicNameStoreFactoryForTest } = await import("./topic-name-cache.js");
setTelegramTopicNameStoreFactoryForTest((namespace) => {
let store = topicNameStoresForTest.get(namespace);
if (!store) {
store = new Map();
topicNameStoresForTest.set(namespace, store);
}
return {
register: async (key, value) => {
store.set(key, value);
},
entries: async () => [...store.entries()].map(([key, value]) => ({ key, value })),
delete: async (key) => store.delete(key),
clear: async () => {
store.clear();
},
};
});
topicNameStoreTestFactoryInstalled = true;
}
async function installMessageContextTestMocks() {
if (messageContextMocksInstalled) {
return;