Files
wehub-resource-sync c48612c494
CI / E2E Tests (push) Has been cancelled
CI / Lint, Typecheck & Unit Tests (push) Has been cancelled
Docs Build / Build docs site (push) Has been cancelled
Publish @openmaic packages / Build, validate & publish (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:03:23 +08:00

39 lines
1.3 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { nextThinkTimer, formatThinkDuration } from '@/lib/agent/client/thinking-timers';
describe('nextThinkTimer (per reasoning block)', () => {
it('starts the timer on the first observation of a block', () => {
expect(nextThinkTimer(undefined, { end: false, now: 100 })).toEqual({ startedAt: 100 });
});
it('stays open while the block is still the last part (end=false)', () => {
const started = { startedAt: 100 };
expect(nextThinkTimer(started, { end: false, now: 300 })).toEqual(started);
});
it('ends the block when a later part follows it (end=true)', () => {
const started = { startedAt: 100 };
expect(nextThinkTimer(started, { end: true, now: 250 })).toEqual({
startedAt: 100,
endedAt: 250,
});
});
it('keeps the first endedAt (does not move once ended)', () => {
const ended = { startedAt: 100, endedAt: 250 };
expect(nextThinkTimer(ended, { end: true, now: 999 })).toEqual(ended);
});
});
describe('formatThinkDuration', () => {
it('shows one decimal under 10s', () => {
expect(formatThinkDuration(1234)).toBe('1.2s');
});
it('rounds to whole seconds at/above 10s', () => {
expect(formatThinkDuration(12600)).toBe('13s');
});
it('clamps negatives to 0', () => {
expect(formatThinkDuration(-5)).toBe('0.0s');
});
});