import { describe, it, expect, vi } from 'vitest'; import { fireEvent } from '@testing-library/react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import OutboundsTab from '@/pages/xray/outbounds/OutboundsTab'; import type { XraySettingsValue } from '@/hooks/useXraySetting'; import { renderWithProviders } from './test-utils'; function settingsWithHiddenLoopback(): XraySettingsValue { return { outbounds: [ { tag: 'proxy-a', protocol: 'vmess' }, { tag: '_bl_bal1', protocol: 'loopback' }, { tag: 'proxy-b', protocol: 'vmess' }, ], } as unknown as XraySettingsValue; } describe('OutboundsTab hidden-loopback index mapping', () => { it('probes the outbound at its real array index, not the positional row index', () => { const onTest = vi.fn(); const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false } } }); renderWithProviders( , ); const tbody = document.querySelector('.ant-table-tbody'); const tableRows = tbody?.querySelectorAll('tr.ant-table-row') ?? []; expect(tableRows.length).toBe(2); const checkButton = tableRows[1].querySelector('button[aria-label="Check"]') as HTMLButtonElement; fireEvent.click(checkButton); expect(onTest).toHaveBeenCalledTimes(1); expect(onTest.mock.calls[0][0]).toBe(2); }); });