cc-haha/desktop/src/components/browser/BrowserAddressBar.test.tsx
程序员阿江(Relakkes) bdfedcd2e7 feat(desktop): add BrowserAddressBar component
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 17:40:45 +08:00

38 lines
1.4 KiB
TypeScript

import { fireEvent, render, screen } from '@testing-library/react'
import { describe, expect, it, vi } from 'vitest'
import '@testing-library/jest-dom'
import { BrowserAddressBar } from './BrowserAddressBar'
const baseProps = {
url: 'http://localhost:5173/', canGoBack: false, canGoForward: false,
onNavigate: vi.fn(), onBack: vi.fn(), onForward: vi.fn(), onReload: vi.fn(),
}
describe('BrowserAddressBar', () => {
it('shows the current url in the input', () => {
render(<BrowserAddressBar {...baseProps} />)
expect(screen.getByRole('textbox')).toHaveValue('http://localhost:5173/')
})
it('submits the edited url via onNavigate', () => {
const onNavigate = vi.fn()
render(<BrowserAddressBar {...baseProps} onNavigate={onNavigate} />)
const input = screen.getByRole('textbox')
fireEvent.change(input, { target: { value: 'http://localhost:3000/x' } })
fireEvent.submit(input.closest('form')!)
expect(onNavigate).toHaveBeenCalledWith('http://localhost:3000/x')
})
it('disables back when cannot go back', () => {
render(<BrowserAddressBar {...baseProps} canGoBack={false} />)
expect(screen.getByLabelText('后退')).toBeDisabled()
})
it('enables back and fires onBack when canGoBack', () => {
const onBack = vi.fn()
render(<BrowserAddressBar {...baseProps} canGoBack onBack={onBack} />)
fireEvent.click(screen.getByLabelText('后退'))
expect(onBack).toHaveBeenCalled()
})
})