@@ -1187,6 +1187,53 @@ describe('uploader', () => {
11871187 } ) ;
11881188 } ) ;
11891189
1190+ describe ( 'openFileDialogOnClick' , ( ) => {
1191+ it ( 'should block click when set to false' , ( ) => {
1192+ const onClick = jest . fn ( ) ;
1193+ const { container } = render ( < Upload openFileDialogOnClick = { false } onClick = { onClick } /> ) ;
1194+ fireEvent . click ( container . querySelector ( '.rc-upload' ) ! ) ;
1195+ expect ( onClick ) . not . toHaveBeenCalled ( ) ;
1196+ } ) ;
1197+
1198+ it ( 'should allow click when set to true' , ( ) => {
1199+ const onClick = jest . fn ( ) ;
1200+ const { container } = render ( < Upload openFileDialogOnClick = { true } onClick = { onClick } /> ) ;
1201+ fireEvent . click ( container . querySelector ( '.rc-upload' ) ! ) ;
1202+ expect ( onClick ) . toHaveBeenCalled ( ) ;
1203+ } ) ;
1204+
1205+ it ( 'should block click when function returns false' , ( ) => {
1206+ const onClick = jest . fn ( ) ;
1207+ const { container } = render ( < Upload openFileDialogOnClick = { ( ) => false } onClick = { onClick } /> ) ;
1208+ fireEvent . click ( container . querySelector ( '.rc-upload' ) ! ) ;
1209+ expect ( onClick ) . not . toHaveBeenCalled ( ) ;
1210+ } ) ;
1211+
1212+ it ( 'should allow click when function returns true' , ( ) => {
1213+ const onClick = jest . fn ( ) ;
1214+ const { container } = render ( < Upload openFileDialogOnClick = { ( ) => true } onClick = { onClick } /> ) ;
1215+ fireEvent . click ( container . querySelector ( '.rc-upload' ) ! ) ;
1216+ expect ( onClick ) . toHaveBeenCalled ( ) ;
1217+ } ) ;
1218+
1219+ it ( 'should support dynamic function return value' , ( ) => {
1220+ let shouldOpen = false ;
1221+ const onClick = jest . fn ( ) ;
1222+ const { container, rerender } = render ( < Upload openFileDialogOnClick = { ( ) => shouldOpen } onClick = { onClick } /> ) ;
1223+
1224+ // first click (shouldOpen = false)
1225+ fireEvent . click ( container . querySelector ( '.rc-upload' ) ! ) ;
1226+ expect ( onClick ) . not . toHaveBeenCalled ( ) ;
1227+
1228+ shouldOpen = true ;
1229+ rerender ( < Upload openFileDialogOnClick = { ( ) => shouldOpen } onClick = { onClick } /> ) ;
1230+
1231+ // second click (shouldOpen = true)
1232+ fireEvent . click ( container . querySelector ( '.rc-upload' ) ! ) ;
1233+ expect ( onClick ) . toHaveBeenCalled ( ) ;
1234+ } ) ;
1235+ } ) ;
1236+
11901237 it ( 'dynamic change action in beforeUpload should work' , async ( ) => {
11911238 const Test = ( ) => {
11921239 const [ action , setAction ] = React . useState ( 'light' ) ;
0 commit comments