@@ -685,4 +685,64 @@ describe('checkbox prompt', () => {
685
685
events . keypress ( 'enter' ) ;
686
686
await expect ( answer ) . resolves . toEqual ( [ 1 ] ) ;
687
687
} ) ;
688
+
689
+ it ( 'renderSelectedChoices' , async ( ) => {
690
+ const { answer, events, getScreen } = await render ( checkbox , {
691
+ message : 'Select your favourite number.' ,
692
+ choices : numberedChoices ,
693
+ theme : {
694
+ style : {
695
+ renderSelectedChoices ( selected : { value : number } [ ] ) {
696
+ if ( selected . length > 1 ) {
697
+ return `You have selected ${ selected [ 0 ] . value } and ${ selected . length - 1 } more.` ;
698
+ }
699
+ return `You have selected ${ selected
700
+ . slice ( 0 , 1 )
701
+ . map ( ( c ) => c . value )
702
+ . join ( ', ' ) } .`;
703
+ } ,
704
+ } ,
705
+ } ,
706
+ } ) ;
707
+
708
+ events . keypress ( 'space' ) ;
709
+ events . keypress ( 'down' ) ;
710
+ events . keypress ( 'space' ) ;
711
+ events . keypress ( 'down' ) ;
712
+ events . keypress ( 'space' ) ;
713
+ events . keypress ( 'enter' ) ;
714
+
715
+ await answer ;
716
+ expect ( getScreen ( ) ) . toMatchInlineSnapshot (
717
+ '"? Select your favourite number. You have selected 1 and 2 more."' ,
718
+ ) ;
719
+ } ) ;
720
+
721
+ it ( 'renderSelectedChoices - using allChoices parameter' , async ( ) => {
722
+ const { answer, events, getScreen } = await render ( checkbox , {
723
+ message : 'Select your favourite number.' ,
724
+ choices : numberedChoices ,
725
+ theme : {
726
+ style : {
727
+ renderSelectedChoices (
728
+ selected : { value : number } [ ] ,
729
+ all : ( { value : number } | Separator ) [ ] ,
730
+ ) {
731
+ return `You have selected ${ selected . length } out of ${ all . length } options.` ;
732
+ } ,
733
+ } ,
734
+ } ,
735
+ } ) ;
736
+
737
+ events . keypress ( 'space' ) ;
738
+ events . keypress ( 'down' ) ;
739
+ events . keypress ( 'down' ) ;
740
+ events . keypress ( 'space' ) ;
741
+ events . keypress ( 'enter' ) ;
742
+
743
+ await answer ;
744
+ expect ( getScreen ( ) ) . toMatchInlineSnapshot (
745
+ '"? Select your favourite number. You have selected 2 out of 12 options."' ,
746
+ ) ;
747
+ } ) ;
688
748
} ) ;
0 commit comments