@@ -7,7 +7,8 @@ import ZoomInOutlined from '@ant-design/icons/ZoomInOutlined';
77import ZoomOutOutlined from '@ant-design/icons/ZoomOutOutlined' ;
88import { spyElementPrototypes } from '@rc-component/util/lib/test/domHook' ;
99import { act , createEvent , fireEvent , render } from '@testing-library/react' ;
10- import React from 'react' ;
10+ import React , { useState } from 'react' ;
11+ import Dialog from '@rc-component/dialog' ;
1112
1213jest . mock ( '../src/Preview' , ( ) => {
1314 const MockPreview = ( props : any ) => {
@@ -1052,6 +1053,25 @@ describe('Preview', () => {
10521053 expect ( afterOpenChange ) . toHaveBeenCalledTimes ( 2 ) ;
10531054 } ) ;
10541055
1056+ it ( 'Esc closes preview then modal' , ( ) => {
1057+ const onClose = jest . fn ( ) ;
1058+
1059+ const { baseElement, getByRole } = render (
1060+ < Dialog visible onClose = { onClose } >
1061+ < Image src = "https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png" />
1062+ </ Dialog > ,
1063+ ) ;
1064+
1065+ fireEvent . click ( getByRole ( 'img' ) ) ;
1066+ expect ( baseElement . querySelector ( '.rc-image-preview' ) ) . toBeTruthy ( ) ;
1067+
1068+ fireEvent . keyDown ( window , { key : 'Escape' } ) ;
1069+ expect ( baseElement . querySelector ( '.rc-image-preview' ) ) . toBeFalsy ( ) ;
1070+
1071+ fireEvent . keyDown ( window , { key : 'Escape' } ) ;
1072+ expect ( onClose ) . toHaveBeenCalled ( ) ;
1073+ } ) ;
1074+
10551075 it ( 'not modify preview image size' , ( ) => {
10561076 render (
10571077 < Image
0 commit comments