File tree Expand file tree Collapse file tree 2 files changed +154
-0
lines changed Expand file tree Collapse file tree 2 files changed +154
-0
lines changed Original file line number Diff line number Diff line change @@ -15,6 +15,10 @@ export default (file: RcFile, acceptedFiles: string | string[]) => {
15
15
16
16
return acceptedFilesArray . some ( type => {
17
17
const validType = type . trim ( ) ;
18
+ // This is something like */*,* allow all files
19
+ if ( / ^ \* ( \/ \* ) ? $ / . test ( type ) ) {
20
+ return true ;
21
+ }
18
22
if ( validType . charAt ( 0 ) === '.' ) {
19
23
return endsWith ( fileName . toLowerCase ( ) , validType . toLowerCase ( ) ) ;
20
24
}
Original file line number Diff line number Diff line change @@ -411,6 +411,156 @@ describe('uploader', () => {
411
411
} ) ;
412
412
} ) ;
413
413
414
+ describe ( 'accept' , ( ) => {
415
+ if ( typeof FormData === 'undefined' ) {
416
+ return ;
417
+ }
418
+
419
+ let uploader ;
420
+ const handlers = { } ;
421
+
422
+ const props = {
423
+ action : '/test' ,
424
+ data : { a : 1 , b : 2 } ,
425
+ directory : true ,
426
+ onStart ( file ) {
427
+ if ( handlers . onStart ) {
428
+ handlers . onStart ( file ) ;
429
+ }
430
+ } ,
431
+ } ;
432
+
433
+ function test ( desc , value , files , expecptCallTimes ) {
434
+ it ( desc , done => {
435
+ uploader = mount ( < Uploader { ...props } accept = { value } /> ) ;
436
+ const input = uploader . find ( 'input' ) . first ( ) ;
437
+ input . simulate ( 'change' , { target : { files } } ) ;
438
+ const mockStart = jest . fn ( ) ;
439
+ handlers . onStart = mockStart ;
440
+ setTimeout ( ( ) => {
441
+ expect ( mockStart . mock . calls . length ) . toBe ( expecptCallTimes ) ;
442
+ done ( ) ;
443
+ } , 100 ) ;
444
+ } ) ;
445
+ }
446
+
447
+ test (
448
+ 'default' ,
449
+ undefined ,
450
+ [
451
+ {
452
+ name : 'accepted.webp' ,
453
+ } ,
454
+ {
455
+ name : 'accepted.png' ,
456
+ } ,
457
+ {
458
+ name : 'accepted.txt' ,
459
+ } ,
460
+ ] ,
461
+ 3 ,
462
+ ) ;
463
+
464
+ test (
465
+ 'support .ext' ,
466
+ '.png' ,
467
+ [
468
+ {
469
+ name : 'unaccepted.webp' ,
470
+ } ,
471
+ {
472
+ name : 'accepted.png' ,
473
+ } ,
474
+ ] ,
475
+ 1 ,
476
+ ) ;
477
+
478
+ test (
479
+ 'support .ext,ext' ,
480
+ '.png,.txt' ,
481
+ [
482
+ {
483
+ name : 'accepted.png' ,
484
+ } ,
485
+ {
486
+ name : 'unaccepted.jpg' ,
487
+ } ,
488
+ {
489
+ name : 'accepted.txt' ,
490
+ } ,
491
+ ] ,
492
+ 2 ,
493
+ ) ;
494
+
495
+ test (
496
+ 'support image/type' ,
497
+ 'image/jpeg' ,
498
+ [
499
+ {
500
+ name : 'unaccepted.png' ,
501
+ type : 'image/png' ,
502
+ } ,
503
+ {
504
+ name : 'accepted.jpg' ,
505
+ type : 'image/jpeg' ,
506
+ } ,
507
+ ] ,
508
+ 1 ,
509
+ ) ;
510
+
511
+ test (
512
+ 'support image/*' ,
513
+ 'image/*' ,
514
+ [
515
+ {
516
+ name : 'accepted.png' ,
517
+ type : 'image/png' ,
518
+ } ,
519
+ {
520
+ name : 'accepted.jpg' ,
521
+ type : 'image/jpeg' ,
522
+ } ,
523
+ {
524
+ name : 'unaccepted.text' ,
525
+ type : 'text/plain' ,
526
+ } ,
527
+ ] ,
528
+ 2 ,
529
+ ) ;
530
+
531
+ test (
532
+ 'support *' ,
533
+ '*' ,
534
+ [
535
+ {
536
+ name : 'accepted.png' ,
537
+ type : 'image/png' ,
538
+ } ,
539
+ {
540
+ name : 'accepted.text' ,
541
+ type : 'text/plain' ,
542
+ } ,
543
+ ] ,
544
+ 2 ,
545
+ ) ;
546
+
547
+ test (
548
+ 'support */*' ,
549
+ '*/*' ,
550
+ [
551
+ {
552
+ name : 'accepted.png' ,
553
+ type : 'image/png' ,
554
+ } ,
555
+ {
556
+ name : 'accepted.text' ,
557
+ type : 'text/plain' ,
558
+ } ,
559
+ ] ,
560
+ 2 ,
561
+ ) ;
562
+ } ) ;
563
+
414
564
describe ( 'transform file before request' , ( ) => {
415
565
let uploader ;
416
566
beforeEach ( ( ) => {
You can’t perform that action at this time.
0 commit comments