lobe-chat

Форк
0
/
useQueryRoute.test.ts 
86 строк · 2.1 Кб
1
import { renderHook } from '@testing-library/react';
2
import { describe, expect, it, vi } from 'vitest';
3

4
import { useQueryRoute } from './useQueryRoute';
5

6
// Mocks
7
vi.mock('next/navigation', () => ({
8
  useRouter: vi.fn(() => ({
9
    push: vi.fn((href) => href),
10
    replace: vi.fn((href) => href),
11
  })),
12
}));
13
vi.mock('@/hooks/useQuery', () => ({
14
  useQuery: vi.fn(() => ({ foo: 'bar' })),
15
}));
16
vi.mock('@/utils/env', () => ({
17
  isOnServerSide: false,
18
}));
19

20
describe('useQueryRoute', () => {
21
  it('should generate correct href without hash and replace', () => {
22
    const { result } = renderHook(() =>
23
      useQueryRoute().push('/example', {
24
        query: { baz: 'qux' },
25
      }),
26
    );
27

28
    expect(result.current).toBe('/example?baz=qux&foo=bar');
29
  });
30

31
  it('should replace entire query string when replace is true', () => {
32
    const { result } = renderHook(() =>
33
      useQueryRoute().push('/example', {
34
        replace: true,
35
        query: { baz: 'qux' },
36
      }),
37
    );
38

39
    expect(result.current).toBe('/example?baz=qux');
40
  });
41

42
  it('should append hash to the URL', () => {
43
    const { result } = renderHook(() =>
44
      useQueryRoute().push('/example', {
45
        replace: true,
46
        query: { foo: 'bar' },
47
        hash: 'section1',
48
      }),
49
    );
50

51
    expect(result.current).toBe('/example?foo=bar#section1');
52
  });
53

54
  it('should handle scenarios when on server side', () => {
55
    const { result } = renderHook(() =>
56
      useQueryRoute().push('/example', {
57
        query: { foo: 'bar' },
58
        hash: 'section1',
59
      }),
60
    );
61

62
    expect(result.current).toBe('/example?foo=bar#section1');
63
  });
64

65
  it('should handle cases with empty query and hash', () => {
66
    const { result } = renderHook(() =>
67
      useQueryRoute().replace('/example', {
68
        replace: true,
69
        query: {},
70
        hash: '',
71
      }),
72
    );
73

74
    expect(result.current).toBe('/example');
75
  });
76

77
  it('should handle cases without hash when on server side', () => {
78
    const { result } = renderHook(() =>
79
      useQueryRoute().replace('/example', {
80
        query: { foo: 'bar' },
81
      }),
82
    );
83

84
    expect(result.current).toBe('/example?foo=bar');
85
  });
86
});
87

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.