补齐图片选择器关闭与空状态测试
新增遮罩点击关闭和空素材列表场景覆盖。
This commit is contained in:
@@ -34,11 +34,12 @@ function renderSelector(
|
||||
value: string | null = null,
|
||||
onChange = vi.fn(),
|
||||
previewUrls: Record<string, string> = {},
|
||||
selectorSprites: typeof sprites = sprites,
|
||||
) {
|
||||
return render(
|
||||
<ImageAssetSelector
|
||||
value={value}
|
||||
sprites={sprites}
|
||||
sprites={selectorSprites}
|
||||
previewUrls={previewUrls}
|
||||
readOnly={false}
|
||||
onChange={onChange}
|
||||
@@ -135,4 +136,26 @@ describe('ImageAssetSelector', () => {
|
||||
await user.keyboard('{Enter}');
|
||||
expect(onChange).toHaveBeenCalledWith('hero');
|
||||
});
|
||||
|
||||
it('closes when the modal backdrop is clicked', async () => {
|
||||
const user = userEvent.setup();
|
||||
renderSelector();
|
||||
await user.click(screen.getByRole('button', { name: '选择素材' }));
|
||||
const dialog = screen.getByRole('dialog', { name: '选择图片素材' });
|
||||
const overlay = dialog.parentElement;
|
||||
expect(overlay).toBeTruthy();
|
||||
await user.click(overlay!);
|
||||
expect(screen.queryByRole('dialog', { name: '选择图片素材' })).toBeNull();
|
||||
});
|
||||
|
||||
it('shows an empty state when no sprites are available', async () => {
|
||||
const user = userEvent.setup();
|
||||
renderSelector(null, vi.fn(), {}, {});
|
||||
await user.click(screen.getByRole('button', { name: '选择素材' }));
|
||||
const dialog = screen.getByRole('dialog', { name: '选择图片素材' });
|
||||
expect(within(dialog).getByText('暂无可用素材')).toBeTruthy();
|
||||
expect(
|
||||
within(dialog).getByRole('button', { name: /清除选择/ }),
|
||||
).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user