Skip to content

Commit ea09d8d

Browse files
test(core): test getInputProps Escape behavior
1 parent 7d10a72 commit ea09d8d

File tree

1 file changed

+73
-3
lines changed

1 file changed

+73
-3
lines changed

packages/autocomplete-core/src/__tests__/getInputProps.test.ts

Lines changed: 73 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)