@@ -713,11 +713,81 @@ describe('getInputProps', () => {
713713 } ) ;
714714
715715 describe ( 'Escape' , ( ) => {
716- test . todo ( 'prevents the default event behavior' ) ;
716+ test ( 'prevents the default event behavior' , ( ) => {
717+ const { inputProps } = createPlayground ( createAutocomplete , {
718+ openOnFocus : true ,
719+ initialState : {
720+ collections : [
721+ createCollection ( {
722+ items : [ { label : '1' } , { label : '2' } ] ,
723+ } ) ,
724+ ] ,
725+ } ,
726+ } ) ;
727+
728+ const event = {
729+ ...new KeyboardEvent ( 'keydown' ) ,
730+ key : 'Escape' ,
731+ preventDefault : jest . fn ( ) ,
732+ } ;
733+
734+ inputProps . onKeyDown ( event ) ;
735+
736+ expect ( event . preventDefault ) . toHaveBeenCalledTimes ( 1 ) ;
737+ } ) ;
738+
739+ test ( 'closes the panel and resets completion when panel is open' , ( ) => {
740+ const onStateChange = jest . fn ( ) ;
741+ const { inputElement } = createPlayground ( createAutocomplete , {
742+ onStateChange,
743+ openOnFocus : true ,
744+ initialState : {
745+ completion : 'a' ,
746+ collections : [
747+ createCollection ( {
748+ items : [ { label : '1' } , { label : '2' } ] ,
749+ } ) ,
750+ ] ,
751+ } ,
752+ } ) ;
717753
718- test . todo ( 'closes the panel and resets completion when panel is open' ) ;
754+ inputElement . focus ( ) ;
755+ userEvent . type ( inputElement , '{esc}' ) ;
719756
720- test . todo ( 'resets the state when panel is closed' ) ;
757+ expect ( onStateChange ) . toHaveBeenLastCalledWith ( {
758+ prevState : expect . anything ( ) ,
759+ state : expect . objectContaining ( {
760+ isOpen : false ,
761+ completion : null ,
762+ } ) ,
763+ } ) ;
764+ } ) ;
765+
766+ test ( 'resets the state when panel is closed' , async ( ) => {
767+ const onStateChange = jest . fn ( ) ;
768+ const { inputElement } = createPlayground ( createAutocomplete , {
769+ onStateChange,
770+ initialState : {
771+ isOpen : true ,
772+ collections : [
773+ createCollection ( {
774+ items : [ { label : '1' } , { label : '2' } ] ,
775+ } ) ,
776+ ] ,
777+ } ,
778+ } ) ;
779+
780+ userEvent . type ( inputElement , '{esc}' ) ;
781+
782+ expect ( onStateChange ) . toHaveBeenLastCalledWith ( {
783+ prevState : expect . anything ( ) ,
784+ state : expect . objectContaining ( {
785+ query : '' ,
786+ status : 'idle' ,
787+ collections : [ ] ,
788+ } ) ,
789+ } ) ;
790+ } ) ;
721791 } ) ;
722792
723793 describe ( 'Enter' , ( ) => {
0 commit comments