import { describe, test, expect, vi } from 'vitest'
import { render, screen, fireEvent } from '@testing-library/react'
import { ChatToolFullViewDialog } from './chat-tool-full-view-dialog'
describe('ChatToolFullViewDialog', () => {
const defaultProps = {
open: true,
onClose: vi.fn(),
title: 'Tool executed: Output',
content: '{"status": 200,\n"data": "test"}',
}
test('renders dialog with title when open', () => {
render()
expect(screen.getByText('Tool executed: Output')).toBeTruthy()
})
test('renders content with line numbers', () => {
render()
// NOTE: need to query outside of component to reach dialog portal
const pre = document.querySelector('pre')
expect(pre).toBeTruthy()
// NOTE: json text is tokenized and split into various tokens so we cannot reach it fully with `queryByText`
expect(pre!.textContent).toContain('{"status": 200,')
expect(pre!.textContent).toContain('"data": "test"}')
})
test('does not render content when closed', () => {
render()
expect(screen.queryByText('Tool executed: Output')).toBeNull()
})
test('calls onClose when close button is clicked', () => {
const onClose = vi.fn()
render()
fireEvent.click(screen.getByLabelText('close'))
expect(onClose).toHaveBeenCalledOnce()
})
})