@@ -644,4 +644,48 @@ describe('Devtools', () => {
644644 )
645645 } )
646646 } )
647+
648+ describe ( 'data edit' , ( ) => {
649+ it ( 'should switch to data editor when "Bulk Edit Data" is clicked' , ( ) => {
650+ queryClient . setQueryData ( [ 'edit-data' ] , { name : 'a' } )
651+ const rendered = renderDevtools ( { initialIsOpen : true } )
652+
653+ fireEvent . click ( rendered . getByLabelText ( / Q u e r y k e y \[ " e d i t - d a t a " \] / ) )
654+ fireEvent . click ( rendered . getByLabelText ( 'Bulk Edit Data' ) )
655+
656+ expect (
657+ rendered . getByLabelText ( 'Edit query data as JSON' ) ,
658+ ) . toBeInTheDocument ( )
659+ } )
660+
661+ it ( 'should save the edited data when the form is submitted' , ( ) => {
662+ queryClient . setQueryData ( [ 'edit-save' ] , { name : 'a' } )
663+ const rendered = renderDevtools ( { initialIsOpen : true } )
664+
665+ fireEvent . click ( rendered . getByLabelText ( / Q u e r y k e y \[ " e d i t - s a v e " \] / ) )
666+ fireEvent . click ( rendered . getByLabelText ( 'Bulk Edit Data' ) )
667+
668+ const textarea = rendered . getByLabelText ( 'Edit query data as JSON' )
669+ fireEvent . input ( textarea , {
670+ target : { value : JSON . stringify ( { name : 'b' } ) } ,
671+ } )
672+ fireEvent . submit ( textarea . closest ( 'form' ) ! )
673+
674+ expect ( queryClient . getQueryData ( [ 'edit-save' ] ) ) . toEqual ( { name : 'b' } )
675+ } )
676+
677+ it ( 'should set an error state when the edited data is invalid JSON' , ( ) => {
678+ queryClient . setQueryData ( [ 'edit-invalid' ] , { name : 'a' } )
679+ const rendered = renderDevtools ( { initialIsOpen : true } )
680+
681+ fireEvent . click ( rendered . getByLabelText ( / Q u e r y k e y \[ " e d i t - i n v a l i d " \] / ) )
682+ fireEvent . click ( rendered . getByLabelText ( 'Bulk Edit Data' ) )
683+
684+ const textarea = rendered . getByLabelText ( 'Edit query data as JSON' )
685+ fireEvent . input ( textarea , { target : { value : 'not json' } } )
686+ fireEvent . submit ( textarea . closest ( 'form' ) ! )
687+
688+ expect ( rendered . getByText ( 'Invalid Value' ) ) . toBeInTheDocument ( )
689+ } )
690+ } )
647691} )
0 commit comments