1
import { renderHook, waitFor } from '@testing-library/react';
2
import { describe, expect, it, vi } from 'vitest';
4
import * as tokenizers from '@/utils/tokenizer';
6
import { useTokenCount } from './useTokenCount';
8
describe('useTokenCount', () => {
9
// TODO: need to be fixed in the future
10
it.skip('should return token count for given input', async () => {
11
const { result } = renderHook(() => useTokenCount('test input'));
13
expect(result.current).toBe(0);
14
await waitFor(() => expect(result.current).toBe(2));
17
it('should fall back to input length if encodeAsync throws', async () => {
18
const mockEncodeAsync = vi.spyOn(tokenizers, 'encodeAsync');
19
mockEncodeAsync.mockRejectedValueOnce(new Error('encode error'));
21
const { result } = renderHook(() => useTokenCount('test input'));
23
expect(result.current).toBe(0);
24
await waitFor(() => expect(result.current).toBe(0));
26
mockEncodeAsync.mockClear();
29
it('should handle empty input', async () => {
30
const { result } = renderHook(() => useTokenCount(''));
32
expect(result.current).toBe(0);
33
await waitFor(() => expect(result.current).toBe(0));
35
it('should handle null input', async () => {
36
const { result } = renderHook(() => useTokenCount(null as any));
38
expect(result.current).toBe(0);
39
await waitFor(() => expect(result.current).toBe(0));