lobe-chat

Форк
0
/
useInterceptingRoutes.test.ts 
70 строк · 2.5 Кб
1
import { renderHook } from '@testing-library/react';
2
import urlJoin from 'url-join';
3
import { describe, expect, it, vi } from 'vitest';
4

5
import { INBOX_SESSION_ID } from '@/const/session';
6
import { useIsMobile } from '@/hooks/useIsMobile';
7
import { useGlobalStore } from '@/store/global';
8
import { ChatSettingsTabs, SettingsTabs, SidebarTabKey } from '@/store/global/initialState';
9
import { useSessionStore } from '@/store/session';
10

11
import { useOpenChatSettings, useOpenSettings } from './useInterceptingRoutes';
12

13
// Mocks
14
vi.mock('next/navigation', () => ({
15
  useRouter: vi.fn(() => ({
16
    push: vi.fn((href) => href),
17
    replace: vi.fn((href) => href),
18
  })),
19
}));
20
vi.mock('@/hooks/useQuery', () => ({
21
  useQuery: vi.fn(() => ({})),
22
}));
23
vi.mock('@/hooks/useIsMobile', () => ({
24
  useIsMobile: vi.fn(),
25
}));
26
vi.mock('@/store/session', () => ({
27
  useSessionStore: vi.fn(),
28
}));
29
vi.mock('@/store/global', () => ({
30
  useGlobalStore: {
31
    setState: vi.fn(),
32
  },
33
}));
34

35
describe('useOpenSettings', () => {
36
  it('should handle mobile route correctly', () => {
37
    vi.mocked(useIsMobile).mockReturnValue(true);
38
    const { result } = renderHook(() => useOpenSettings(SettingsTabs.Common));
39
    expect(result.current()).toBe('/settings/common');
40
  });
41

42
  it('should handle desktop route correctly', () => {
43
    vi.mocked(useIsMobile).mockReturnValue(false);
44
    const { result } = renderHook(() => useOpenSettings(SettingsTabs.Agent));
45
    expect(result.current()).toBe('/settings/modal?tab=agent');
46
  });
47
});
48

49
describe('useOpenChatSettings', () => {
50
  it('should handle inbox session id correctly', () => {
51
    vi.mocked(useSessionStore).mockReturnValue(INBOX_SESSION_ID);
52
    const { result } = renderHook(() => useOpenChatSettings());
53

54
    expect(result.current()).toBe('/settings/modal?session=inbox&tab=agent'); // Assuming openSettings returns a function
55
  });
56

57
  it('should handle mobile route for chat settings', () => {
58
    vi.mocked(useSessionStore).mockReturnValue('123');
59
    vi.mocked(useIsMobile).mockReturnValue(true);
60
    const { result } = renderHook(() => useOpenChatSettings(ChatSettingsTabs.Meta));
61
    expect(result.current()).toBe('/chat/settings');
62
  });
63

64
  it('should handle desktop route for chat settings with session and tab', () => {
65
    vi.mocked(useSessionStore).mockReturnValue('456');
66
    vi.mocked(useIsMobile).mockReturnValue(false);
67
    const { result } = renderHook(() => useOpenChatSettings(ChatSettingsTabs.Meta));
68
    expect(result.current()).toBe('/chat/settings/modal?session=456&tab=meta');
69
  });
70
});
71

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

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

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

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