jan/web/screens/Thread/index.test.tsx
2025-05-15 17:10:21 +07:00

46 lines
1.2 KiB
TypeScript

/**
* @jest-environment jsdom
*/
import 'openai/shims/node'
import React from 'react'
import { act, render, screen, waitFor } from '@testing-library/react'
import ThreadScreen from './index'
import { useStarterScreen } from '../../hooks/useStarterScreen'
import '@testing-library/jest-dom'
global.ResizeObserver = class {
observe() {}
unobserve() {}
disconnect() {}
}
// Mock the useStarterScreen hook
jest.mock('@/hooks/useStarterScreen')
// @ts-ignore
global.API_BASE_URL = 'http://localhost:3000'
describe('ThreadScreen', () => {
it('renders OnDeviceStarterScreen when isShowStarterScreen is true', () => {
act(() => {
;(useStarterScreen as jest.Mock).mockReturnValue({
isShowStarterScreen: true,
extensionHasSettings: false,
})
})
const { getByText } = render(<ThreadScreen />)
expect(getByText('Select a model to start')).toBeInTheDocument()
})
it('renders Thread panels when isShowStarterScreen is false', async () => {
;(useStarterScreen as jest.Mock).mockReturnValue({
isShowStarterScreen: false,
extensionHasSettings: false,
})
await waitFor(() => {
render(<ThreadScreen />)
expect(screen.getByText('Welcome!')).toBeInTheDocument()
})
})
})