Files
sunrise/tests/visits.test.ts
T

17 lines
1.0 KiB
TypeScript

import assert from 'node:assert/strict';
import test from 'node:test';
import { MemoryVisitStore, type VisitRecord } from '../server/visits.ts';
test('closed visits cannot be resurrected by heartbeat; unfinished departure remains unknown', async () => {
const store = new MemoryVisitStore();
const record: VisitRecord = { _id: 'session', visitorId: 'anonymous', nickname: 'Visitor', locationId: 'gwanaksan', roomId: 'gwanaksan-001', joinedAt: new Date(1), lastSeenAt: new Date(1), leftAt: null, endReason: null, serverInstanceId: 'old' };
await store.insert(record); await store.heartbeat(['session'], new Date(2));
await store.finish('session', new Date(3), 'disconnect');
await store.heartbeat(['session'], new Date(4));
assert.equal(+store.records.get('session')!.lastSeenAt, 3);
await store.insert({ ...record, _id: 'stale' });
assert.equal(store.records.get('stale')!.endReason, null);
assert.equal(store.records.get('stale')!.leftAt, null);
assert.equal(+store.records.get('stale')!.lastSeenAt, 1);
});