30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
import { fireEvent, render, screen } from '@testing-library/react';
|
|
import { describe, expect, it, vi } from 'vitest';
|
|
import { Modal } from './Modal';
|
|
|
|
describe('Modal close policy', () => {
|
|
it('keeps an explicitly locked form open on mask and Escape but permits the close button', () => {
|
|
const close = vi.fn();
|
|
render(
|
|
<Modal open title="创建通道" closeOnBackdrop={false} closeOnEscape={false} onClose={close}>
|
|
表单
|
|
</Modal>,
|
|
);
|
|
fireEvent.mouseDown(document.querySelector('.ui-modal__mask')!);
|
|
fireEvent.keyDown(document, { key: 'Escape' });
|
|
expect(close).not.toHaveBeenCalled();
|
|
fireEvent.click(screen.getByRole('button', { name: '关闭' }));
|
|
expect(close).toHaveBeenCalledOnce();
|
|
});
|
|
it('preserves mask closing by default for existing consumers', () => {
|
|
const close = vi.fn();
|
|
render(
|
|
<Modal open title="普通弹窗" onClose={close}>
|
|
内容
|
|
</Modal>,
|
|
);
|
|
fireEvent.mouseDown(document.querySelector('.ui-modal__mask')!);
|
|
expect(close).toHaveBeenCalledOnce();
|
|
});
|
|
});
|