import { cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react' import { afterEach, expect, it, vi } from 'vitest' import { I18nProvider } from '@/i18n/context' import { IsHattiSettingsView } from './is-hatti-settings' afterEach(() => { cleanup() delete (window as unknown as { hermesDesktop?: unknown }).hermesDesktop }) it('shows the custom text box only for custom text and saves the choice', async () => { const save = vi.fn(async (s: unknown) => s) ;(window as unknown as { hermesDesktop: unknown }).hermesDesktop = { codexLink: { getIsHatti: async () => ({ secim: 'onerilen', talimat: '' }), setIsHatti: save } } render() const select = await screen.findByRole('combobox', { name: 'İş dağıtımı' }) expect(screen.queryByRole('textbox')).toBeNull() fireEvent.change(select, { target: { value: 'ozel' } }) const box = screen.getByRole('textbox', { name: 'Codex’e eklenecek kural' }) expect((screen.getByRole('button', { name: 'Kaydet' }) as HTMLButtonElement).disabled).toBe(true) fireEvent.change(box, { target: { value: 'kendi kuralım' } }) fireEvent.click(screen.getByRole('button', { name: 'Kaydet' })) await waitFor(() => expect(save).toHaveBeenCalledWith({ secim: 'ozel', talimat: 'kendi kuralım' })) expect(await screen.findByText(/yeniden başlatma gerekmez/)).toBeTruthy() fireEvent.click(screen.getByRole('button', { name: 'Varsayılana dön' })) await waitFor(() => expect(save).toHaveBeenLastCalledWith({ secim: 'onerilen', talimat: 'kendi kuralım' })) })