import React from 'react';
import { act, create, type ReactTestRenderer } from 'react-test-renderer';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import QueryEditorTransactionSettings from './QueryEditorTransactionSettings';
const antdState = vi.hoisted(() => ({
selectProps: [] as any[],
tooltipProps: [] as any[],
}));
vi.mock('antd', () => ({
Select: (props: any) => {
antdState.selectProps.push(props);
return ;
},
Tooltip: (props: any) => {
antdState.tooltipProps.push(props);
return
{props.children}
;
},
}));
vi.mock('../i18n/provider', () => ({
useOptionalI18n: () => ({
t: (key: string, params?: Record) => params?.seconds ? `${params.seconds}s后提交` : key,
}),
}));
const latestTooltipProps = () => antdState.tooltipProps[antdState.tooltipProps.length - 1];
describe('QueryEditorTransactionSettings', () => {
let renderer: ReactTestRenderer | null = null;
beforeEach(() => {
antdState.selectProps = [];
antdState.tooltipProps = [];
});
afterEach(() => {
renderer?.unmount();
renderer = null;
});
it('keeps the DBeaver reference tooltip above the transaction mode select', () => {
act(() => {
renderer = create(
,
);
});
expect(latestTooltipProps().placement).toBe('topLeft');
expect(latestTooltipProps()).not.toHaveProperty('autoAdjustOverflow', false);
expect(latestTooltipProps()).not.toHaveProperty('open');
expect(antdState.selectProps[0]).not.toHaveProperty('onOpenChange');
});
});