test: move component tests to __tests__ directory

This commit is contained in:
Ashwin Bhat
2024-12-20 15:20:54 -08:00
parent 1797fbfba8
commit 1ab1aba528
12 changed files with 1654 additions and 3 deletions

View File

@@ -0,0 +1,85 @@
import { describe, it, expect, vi } from 'vitest'
import { render, screen, fireEvent } from '@testing-library/react'
import SamplingTab from '../../components/SamplingTab'
import { Tabs } from '@/components/ui/tabs'
import type { CreateMessageRequest } from '@modelcontextprotocol/sdk/types.js'
describe('SamplingTab', () => {
const mockRequest: CreateMessageRequest = {
model: 'test-model',
role: 'user',
content: {
type: 'text',
text: 'Test message'
}
}
const mockPendingRequests = [
{ id: 1, request: mockRequest },
{ id: 2, request: { ...mockRequest, content: { type: 'text', text: 'Another test' } } }
]
const defaultProps = {
pendingRequests: mockPendingRequests,
onApprove: vi.fn(),
onReject: vi.fn()
}
const renderWithTabs = (component: React.ReactElement) => {
return render(
<Tabs defaultValue="sampling">
{component}
</Tabs>
)
}
it('renders empty state when no requests', () => {
renderWithTabs(<SamplingTab {...defaultProps} pendingRequests={[]} />)
expect(screen.getByText('No pending requests')).toBeInTheDocument()
})
it('renders list of pending requests', () => {
renderWithTabs(<SamplingTab {...defaultProps} />)
expect(screen.getByText(/Test message/)).toBeInTheDocument()
expect(screen.getByText(/Another test/)).toBeInTheDocument()
})
it('shows request details in JSON format', () => {
renderWithTabs(<SamplingTab {...defaultProps} />)
const requestJson = screen.getAllByText((content) => content.includes('"model": "test-model"'))
expect(requestJson).toHaveLength(2)
})
it('calls onApprove with stub response when Approve is clicked', () => {
const onApprove = vi.fn()
renderWithTabs(<SamplingTab {...defaultProps} onApprove={onApprove} />)
const approveButtons = screen.getAllByText('Approve')
fireEvent.click(approveButtons[0])
expect(onApprove).toHaveBeenCalledWith(1, {
model: 'stub-model',
stopReason: 'endTurn',
role: 'assistant',
content: {
type: 'text',
text: 'This is a stub response.'
}
})
})
it('calls onReject when Reject is clicked', () => {
const onReject = vi.fn()
renderWithTabs(<SamplingTab {...defaultProps} onReject={onReject} />)
const rejectButtons = screen.getAllByText('Reject')
fireEvent.click(rejectButtons[0])
expect(onReject).toHaveBeenCalledWith(1)
})
it('shows informational alert about sampling requests', () => {
renderWithTabs(<SamplingTab {...defaultProps} />)
expect(screen.getByText(/When the server requests LLM sampling/)).toBeInTheDocument()
})
})