@@ -737,10 +737,10 @@ describe('App', () => {
737737 advanceTimersByTime ( 100 )
738738
739739 const menuitems = screen . getAllByRole ( 'menuitem' )
740- expect ( menuitems ) . toHaveLength ( 6 )
740+ expect ( menuitems ) . toHaveLength ( 8 )
741741 expect (
742742 menuitems . filter ( item => ! item . className . includes ( 'disabled' ) )
743- ) . toHaveLength ( 3 )
743+ ) . toHaveLength ( 5 )
744744
745745 fireEvent . keyDown ( paramsFileHeader , { bubbles : true , key : 'Escape' } )
746746 expect ( screen . queryAllByRole ( 'menuitem' ) ) . toHaveLength ( 0 )
@@ -761,7 +761,7 @@ describe('App', () => {
761761 expect ( disabledMenuItem ) . toBeDefined ( )
762762
763763 disabledMenuItem && fireEvent . click ( disabledMenuItem , { bubbles : true } )
764- expect ( screen . queryAllByRole ( 'menuitem' ) ) . toHaveLength ( 6 )
764+ expect ( screen . queryAllByRole ( 'menuitem' ) ) . toHaveLength ( 8 )
765765 } )
766766
767767 it ( 'should have the same enabled options in the empty placeholders' , ( ) => {
@@ -783,6 +783,8 @@ describe('App', () => {
783783 expect ( menuitems ) . toStrictEqual ( [
784784 'Hide Column' ,
785785 'Set Max Header Height' ,
786+ 'Select Columns' ,
787+ 'Select First Columns' ,
786788 'Sort Ascending' ,
787789 'Sort Descending'
788790 ] )
@@ -807,12 +809,54 @@ describe('App', () => {
807809 . filter ( item => ! item . className . includes ( 'disabled' ) )
808810 . map ( item => item . textContent )
809811
810- expect ( menuitems ) . toStrictEqual ( [ 'Set Max Header Height' ] )
812+ expect ( menuitems ) . toStrictEqual ( [
813+ 'Set Max Header Height' ,
814+ 'Select Columns' ,
815+ 'Select First Columns'
816+ ] )
811817
812818 fireEvent . keyDown ( segment , { bubbles : true , key : 'Escape' } )
813819 }
814820 } )
815821
822+ it ( 'should send the correct message when Select Columns is clicked' , ( ) => {
823+ renderTableWithPlaceholder ( )
824+ const placeholders = screen . getAllByTestId ( / h e a d e r - C r e a t e d / )
825+ const placeholder = placeholders [ 0 ]
826+ fireEvent . contextMenu ( placeholder , { bubbles : true } )
827+ advanceTimersByTime ( 100 )
828+
829+ const selectOption = screen . getByText ( 'Select Columns' )
830+
831+ mockPostMessage . mockClear ( )
832+
833+ fireEvent . click ( selectOption )
834+
835+ expect ( mockPostMessage ) . toHaveBeenCalledTimes ( 1 )
836+ expect ( mockPostMessage ) . toHaveBeenCalledWith ( {
837+ type : MessageFromWebviewType . SELECT_COLUMNS
838+ } )
839+ } )
840+
841+ it ( 'should send the correct message when Select First Columns is clicked' , ( ) => {
842+ renderTableWithPlaceholder ( )
843+ const placeholders = screen . getAllByTestId ( / h e a d e r - C r e a t e d / )
844+ const placeholder = placeholders [ 0 ]
845+ fireEvent . contextMenu ( placeholder , { bubbles : true } )
846+ advanceTimersByTime ( 100 )
847+
848+ const selectOption = screen . getByText ( 'Select First Columns' )
849+
850+ mockPostMessage . mockClear ( )
851+
852+ fireEvent . click ( selectOption )
853+
854+ expect ( mockPostMessage ) . toHaveBeenCalledTimes ( 1 )
855+ expect ( mockPostMessage ) . toHaveBeenCalledWith ( {
856+ type : MessageFromWebviewType . SELECT_FIRST_COLUMNS
857+ } )
858+ } )
859+
816860 describe ( 'Hiding a column from its empty placeholder' , ( ) => {
817861 it ( 'should send the column id and not the placeholder id as the message payload' , ( ) => {
818862 renderTableWithPlaceholder ( )
0 commit comments