@@ -599,6 +599,121 @@ describe(
599599 } ) ;
600600 } ) ;
601601
602+ describe ( 'Promise.any' , ( ) => {
603+ const any = ( Promise as any ) . any ;
604+ it ( 'undefined parameters' , ( done : DoneFn ) => {
605+ any ( ) . then (
606+ ( ) => {
607+ fail ( 'should not get a resolved promise.' ) ;
608+ } ,
609+ ( err : any ) => {
610+ expect ( err . message ) . toEqual ( 'All promises were rejected' ) ;
611+ expect ( err . errors ) . toEqual ( [ ] ) ;
612+ done ( ) ;
613+ } ) ;
614+ } ) ;
615+ it ( 'invalid iterable' , ( done : DoneFn ) => {
616+ const invalidIterable : any = { } ;
617+ invalidIterable [ Symbol . iterator ] = ( ) => 2 ;
618+ any ( invalidIterable )
619+ . then (
620+ ( ) => {
621+ fail ( 'should not get a resolved promise.' ) ;
622+ } ,
623+ ( err : any ) => {
624+ expect ( err . message ) . toEqual ( 'All promises were rejected' ) ;
625+ expect ( err . errors ) . toEqual ( [ ] ) ;
626+ done ( ) ;
627+ } ) ;
628+ } ) ;
629+ it ( 'empty parameters' , ( done : DoneFn ) => {
630+ any ( [ ] ) . then (
631+ ( ) => {
632+ fail ( 'should not get a resolved promise.' ) ;
633+ } ,
634+ ( err : any ) => {
635+ expect ( err . message ) . toEqual ( 'All promises were rejected' ) ;
636+ expect ( err . errors ) . toEqual ( [ ] ) ;
637+ done ( ) ;
638+ } ) ;
639+ } ) ;
640+ it ( 'non promises parameters' , ( done : DoneFn ) => {
641+ any ( [ 1 , 'test' ] )
642+ . then (
643+ ( v : any ) => {
644+ expect ( v ) . toBe ( 1 ) ;
645+ done ( ) ;
646+ } ,
647+ ( err : any ) => {
648+ fail ( 'should not get a rejected promise.' ) ;
649+ } ) ;
650+ } ) ;
651+ it ( 'mixed parameters, non promise first' , ( done : DoneFn ) => {
652+ any ( [ 1 , Promise . resolve ( 2 ) ] )
653+ . then (
654+ ( v : any ) => {
655+ expect ( v ) . toBe ( 1 ) ;
656+ done ( ) ;
657+ } ,
658+ ( err : any ) => {
659+ fail ( 'should not get a rejected promise.' ) ;
660+ } ) ;
661+ } ) ;
662+ it ( 'mixed parameters, promise first' , ( done : DoneFn ) => {
663+ any ( [ Promise . resolve ( 1 ) , 2 ] )
664+ . then (
665+ ( v : any ) => {
666+ expect ( v ) . toBe ( 1 ) ;
667+ done ( ) ;
668+ } ,
669+ ( err : any ) => {
670+ fail ( 'should not get a rejected promise.' ) ;
671+ } ) ;
672+ } ) ;
673+ it ( 'all ok promises' , ( done : DoneFn ) => {
674+ any ( [ Promise . resolve ( 1 ) , Promise . resolve ( 2 ) ] )
675+ . then (
676+ ( v : any ) => {
677+ expect ( v ) . toBe ( 1 ) ;
678+ done ( ) ;
679+ } ,
680+ ( err : any ) => {
681+ fail ( 'should not get a rejected promise.' ) ;
682+ } ) ;
683+ } ) ;
684+ it ( 'all promises, first rejected' , ( done : DoneFn ) => {
685+ any ( [ Promise . reject ( 'error' ) , Promise . resolve ( 2 ) ] )
686+ . then (
687+ ( v : any ) => {
688+ expect ( v ) . toBe ( 2 ) ;
689+ done ( ) ;
690+ } ,
691+ ( err : any ) => {
692+ fail ( 'should not get a rejected promise.' ) ;
693+ } ) ;
694+ } ) ;
695+ it ( 'all promises, second rejected' , ( done : DoneFn ) => {
696+ any ( [ Promise . resolve ( 1 ) , Promise . reject ( 'error' ) ] )
697+ . then (
698+ ( v : any ) => {
699+ expect ( v ) . toBe ( 1 ) ;
700+ done ( ) ;
701+ } ,
702+ ( err : any ) => {
703+ fail ( 'should not get a rejected promise.' ) ;
704+ } ) ;
705+ } ) ;
706+ it ( 'all rejected promises' , ( done : DoneFn ) => {
707+ any ( [
708+ Promise . reject ( 'error1' ) , Promise . reject ( 'error2' )
709+ ] ) . then ( ( v : any ) => { fail ( 'should not get a resolved promise.' ) } , ( err : any ) => {
710+ expect ( err . message ) . toEqual ( 'All promises were rejected' ) ;
711+ expect ( err . errors ) . toEqual ( [ 'error1' , 'error2' ] ) ;
712+ done ( ) ;
713+ } ) ;
714+ } ) ;
715+ } ) ;
716+
602717 describe ( 'Promise.allSettled' , ( ) => {
603718 const yes = function makeFulfilledResult ( value : any ) {
604719 return { status : 'fulfilled' , value : value } ;
0 commit comments