builder / lib /llm /__tests__ /request-snapshot.test.ts
Leon4gr45's picture
Upload folder using huggingface_hub (part 2)
391c43e verified
Raw
History Blame Contribute Delete
3.04 kB
import { describe, it, expect, vi, beforeEach } from 'vitest';
import { requestSnapshotStore } from '../request-snapshot';
import type { Message } from '../core/types';
describe('requestSnapshotStore', () => {
beforeEach(() => {
requestSnapshotStore.setEnabled(false);
requestSnapshotStore.clear();
});
it('does not capture when disabled', () => {
requestSnapshotStore.capture({
messages: [{ role: 'user', content: 'hi' }],
provider: 'openrouter',
model: 'qwen/qwen3.6-35b-a3b',
});
expect(requestSnapshotStore.getSnapshot()).toBeNull();
});
it('captures the latest request when enabled', () => {
requestSnapshotStore.setEnabled(true);
requestSnapshotStore.capture({ messages: [{ role: 'user', content: 'first' }], provider: 'p', model: 'm' });
requestSnapshotStore.capture({ messages: [{ role: 'user', content: 'second' }], provider: 'p', model: 'm' });
const snap = requestSnapshotStore.getSnapshot();
expect(snap).not.toBeNull();
expect(snap!.messages).toEqual([{ role: 'user', content: 'second' }]);
expect(snap!.timestamp).toBeGreaterThan(0);
});
it('notifies subscribers on capture and returns a stable snapshot reference', () => {
requestSnapshotStore.setEnabled(true);
const listener = vi.fn();
const unsubscribe = requestSnapshotStore.subscribe(listener);
requestSnapshotStore.capture({ messages: [], provider: 'p', model: 'm' });
expect(listener).toHaveBeenCalledTimes(1);
// Stable reference between captures — required by useSyncExternalStore
expect(requestSnapshotStore.getSnapshot()).toBe(requestSnapshotStore.getSnapshot());
unsubscribe();
requestSnapshotStore.capture({ messages: [], provider: 'p', model: 'm' });
expect(listener).toHaveBeenCalledTimes(1);
});
it('notifies subscribers on clear and toggling enabled state', () => {
requestSnapshotStore.setEnabled(true);
requestSnapshotStore.capture({ messages: [], provider: 'p', model: 'm' });
const listener = vi.fn();
requestSnapshotStore.subscribe(listener);
requestSnapshotStore.clear();
expect(requestSnapshotStore.getSnapshot()).toBeNull();
expect(listener).toHaveBeenCalledTimes(1);
requestSnapshotStore.setEnabled(false);
expect(requestSnapshotStore.isEnabled()).toBe(false);
expect(listener).toHaveBeenCalledTimes(2);
});
it('deep-copies captured messages so later mutation cannot corrupt the snapshot', () => {
requestSnapshotStore.setEnabled(true);
const messages: Message[] = [{
role: 'assistant',
content: 'original',
tool_calls: [{ id: 'a', type: 'function', function: { name: 'bash', arguments: '{}' } }],
}];
requestSnapshotStore.capture({ messages, provider: 'p', model: 'm' });
messages[0].content = 'mutated';
messages[0].tool_calls![0].id = 'mutated';
const snap = requestSnapshotStore.getSnapshot()!;
expect(snap.messages[0].content).toBe('original');
expect(snap.messages[0].tool_calls![0].id).toBe('a');
});
});