import React from 'react' import '@testing-library/jest-dom' import userEvent from '@testing-library/user-event' import { render, screen, act } from '@testing-library/react' import { DataSheetGrid, Column, textColumn, keyColumn, DataSheetGridRef, } from '../src' jest.mock('react-resize-detector', () => ({ useResizeDetector: () => ({ width: 100, height: 100 }), })) const data = [ { firstName: 'Elon', lastName: 'Musk' }, { firstName: 'Jeff', lastName: 'Bezos' }, ] const columns: Column[] = [ keyColumn('firstName', textColumn), keyColumn('lastName', textColumn), ] test('Escape from editing', () => { const ref = { current: null as unknown as DataSheetGridRef } render(<DataSheetGrid value={data} columns={columns} ref={ref} />) act(() => ref.current.setActiveCell({ col: 0, row: 0 })) userEvent.keyboard('[Enter]') userEvent.keyboard('[Escape]') expect(ref.current.activeCell).toEqual({ col: 0, colId: 'firstName', row: 0, }) }) test('Escape from selection', () => { const ref = { current: null as unknown as DataSheetGridRef } render(<DataSheetGrid value={data} columns={columns} ref={ref} />) act(() => ref.current.setSelection({ min: { col: 0, row: 0 }, max: { col: 1, row: 1 }, }) ) userEvent.keyboard('[Escape]') expect(ref.current.selection).toEqual({ min: { col: 0, colId: 'firstName', row: 0, }, max: { col: 0, colId: 'firstName', row: 0, }, }) }) test('Escape from active', () => { const ref = { current: null as unknown as DataSheetGridRef } render(<DataSheetGrid value={data} columns={columns} ref={ref} />) act(() => ref.current.setActiveCell({ col: 0, row: 0 })) userEvent.keyboard('[Escape]') expect(ref.current.activeCell).toEqual(null) })