Files
clawX/tests/unit/sidebar-session-buckets.test.ts
2026-05-06 12:03:51 +08:00

33 lines
1.3 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { getSessionActivityMs, getSessionBucket } from '@/components/layout/session-buckets';
describe('sidebar session date buckets', () => {
it('uses the timestamp embedded in a locally-created session key as activity fallback', () => {
const createdAtMs = new Date('2026-05-06T10:00:00.000Z').getTime();
const nowMs = new Date('2026-05-06T12:00:00.000Z').getTime();
const session = {
key: `agent:main:session-${createdAtMs}`,
displayName: `agent:main:session-${createdAtMs}`,
};
const activityMs = getSessionActivityMs(session, {});
expect(activityMs).toBe(createdAtMs);
expect(getSessionBucket(activityMs, nowMs)).toBe('today');
});
it('prefers real message activity over backend metadata or key creation time', () => {
const keyCreatedAtMs = new Date('2026-05-06T10:00:00.000Z').getTime();
const updatedAtMs = new Date('2026-05-06T11:00:00.000Z').getTime();
const messageActivityMs = new Date('2026-05-06T12:00:00.000Z').getTime();
expect(getSessionActivityMs(
{
key: `agent:main:session-${keyCreatedAtMs}`,
updatedAt: updatedAtMs,
},
{ [`agent:main:session-${keyCreatedAtMs}`]: messageActivityMs },
)).toBe(messageActivityMs);
});
});