) => void }) => (
{topK}
{scoreThreshold}
),
}))
describe('ModifyExternalRetrievalModal', () => {
const defaultProps = {
onClose: vi.fn(),
onSave: vi.fn(),
initialTopK: 4,
initialScoreThreshold: 0.5,
initialScoreThresholdEnabled: false,
}
beforeEach(() => {
vi.clearAllMocks()
})
it('should render title', () => {
render()
expect(screen.getByText('datasetHitTesting.settingTitle')).toBeInTheDocument()
})
it('should render retrieval settings with initial values', () => {
render()
expect(screen.getByTestId('top-k')).toHaveTextContent('4')
expect(screen.getByTestId('score-threshold')).toHaveTextContent('0.5')
})
it('should call onClose when close button clicked', () => {
render()
fireEvent.click(screen.getByTestId('action-button'))
expect(defaultProps.onClose).toHaveBeenCalled()
})
it('should call onClose when cancel button clicked', () => {
render()
fireEvent.click(screen.getByTestId('cancel-button'))
expect(defaultProps.onClose).toHaveBeenCalled()
})
it('should call onSave with current values and close when save clicked', () => {
render()
fireEvent.click(screen.getByTestId('save-button'))
expect(defaultProps.onSave).toHaveBeenCalledWith({
top_k: 4,
score_threshold: 0.5,
score_threshold_enabled: false,
})
expect(defaultProps.onClose).toHaveBeenCalled()
})
it('should save updated values after settings change', () => {
render()
fireEvent.click(screen.getByTestId('change-top-k'))
fireEvent.click(screen.getByTestId('save-button'))
expect(defaultProps.onSave).toHaveBeenCalledWith(
expect.objectContaining({ top_k: 10 }),
)
})
it('should save updated score threshold', () => {
render()
fireEvent.click(screen.getByTestId('change-score'))
fireEvent.click(screen.getByTestId('save-button'))
expect(defaultProps.onSave).toHaveBeenCalledWith(
expect.objectContaining({ score_threshold: 0.9 }),
)
})
it('should save updated score threshold enabled', () => {
render()
fireEvent.click(screen.getByTestId('change-enabled'))
fireEvent.click(screen.getByTestId('save-button'))
expect(defaultProps.onSave).toHaveBeenCalledWith(
expect.objectContaining({ score_threshold_enabled: true }),
)
})
it('should save multiple updated values at once', () => {
render()
fireEvent.click(screen.getByTestId('change-top-k'))
fireEvent.click(screen.getByTestId('change-score'))
fireEvent.click(screen.getByTestId('save-button'))
expect(defaultProps.onSave).toHaveBeenCalledWith(
expect.objectContaining({ top_k: 10, score_threshold: 0.9 }),
)
})
it('should render with different initial values', () => {
const props = {
...defaultProps,
initialTopK: 10,
initialScoreThreshold: 0.8,
initialScoreThresholdEnabled: true,
}
render()
expect(screen.getByTestId('top-k')).toHaveTextContent('10')
expect(screen.getByTestId('score-threshold')).toHaveTextContent('0.8')
})
})