import { describe, it, expect } from 'vitest'; import { formatPerfDiagLine, pushRingBuffer, resolveDiagnosticsFilePath } from './diagnostics.rules'; describe('pushRingBuffer', () => { it('appends items until capacity is reached', () => { expect(pushRingBuffer([1, 2], 3, 4)).toEqual([ 1, 2, 3 ]); }); it('drops the oldest items when capacity is exceeded', () => { expect(pushRingBuffer([ 1, 2, 3 ], 4, 3)).toEqual([ 2, 3, 4 ]); }); }); describe('formatPerfDiagLine', () => { it('serializes one JSON object per line', () => { const line = formatPerfDiagLine({ collectedAt: 1_700_000_000_000, source: 'main', type: 'process', payload: { browserKb: 128 } }); expect(line).toBe('{"collectedAt":1700000000000,"source":"main","type":"process","payload":{"browserKb":128}}'); expect(line.endsWith('\n')).toBe(false); }); }); describe('resolveDiagnosticsFilePath', () => { it('places session files under diagnostics/', () => { expect(resolveDiagnosticsFilePath('/tmp/user-data', 'session-1')) .toBe('/tmp/user-data/diagnostics/perf-session-1.jsonl'); }); });