Cover dashboard route state helpers

This commit is contained in:
ejclaw
2026-04-28 20:18:57 +09:00
parent 4f04484ed1
commit 750f7d99d2
2 changed files with 43 additions and 0 deletions

View File

@@ -77,6 +77,38 @@ function makeDeps(
}
describe('web dashboard inbox action routes', () => {
it('tracks timestamped and global inbox dismissals separately', () => {
const tracker = createInboxDismissTracker();
tracker.dismiss('ci:task-1', '2026-04-26T05:00:00.000Z');
expect(
tracker.isDismissed({
id: 'ci:task-1',
lastOccurredAt: '2026-04-26T05:00:00.000Z',
}),
).toBe(true);
expect(
tracker.isDismissed({
id: 'ci:task-1',
lastOccurredAt: '2026-04-26T05:05:00.000Z',
}),
).toBe(false);
tracker.dismiss('ci:task-2', null);
expect(
tracker.isDismissed({
id: 'ci:task-2',
lastOccurredAt: '2026-04-26T05:00:00.000Z',
}),
).toBe(true);
expect(
tracker.isDismissed({
id: 'ci:task-2',
lastOccurredAt: '2026-04-26T05:05:00.000Z',
}),
).toBe(true);
});
it('dismisses inbox items and queues paired follow-up intents', async () => {
const dismissTracker = createInboxDismissTracker();
const task = makePairedTask({ id: 'merge-1', status: 'merge_ready' });

View File

@@ -68,6 +68,17 @@ function makeDeps(
}
describe('web dashboard room message routes', () => {
it('expires the oldest remembered room message ids after the cache limit', () => {
const remember = createRoomMessageIdCache(2);
expect(remember('room:message-1')).toBe(true);
expect(remember('room:message-1')).toBe(false);
expect(remember('room:message-2')).toBe(true);
expect(remember('room:message-3')).toBe(true);
expect(remember('room:message-1')).toBe(true);
expect(remember('room:message-2')).toBe(true);
});
it('injects messages and deduplicates repeated request ids', async () => {
const messages: NewMessage[] = [];
const queued: Array<{ chatJid: string; groupFolder: string }> = [];