import React from 'react';
import { render, fireEvent, screen } from '@testing-library/react';
import 'jest-styled-components';
import { Grommet } from '../../Grommet';
import { Keyboard } from '..';
describe('Keyboard', () => {
test('onDown', () => {
const onDown = jest.fn();
const { container } = render(
hi
,
);
const element = screen.getByText('hi');
fireEvent.keyDown(element, { keyCode: 40 });
fireEvent.keyDown(element, { which: 40 });
fireEvent.keyDown(element, { which: 0 });
expect(onDown).toHaveBeenCalled();
expect(container.firstChild).toMatchSnapshot();
});
test('onKeyDown', () => {
const onDown = jest.fn();
const onKeyDown = jest.fn();
const { container } = render(
hi
,
);
const element = screen.getByText('hi');
fireEvent.keyDown(element, { keyCode: 40 });
expect(onDown).toBeCalled();
expect(onKeyDown).toBeCalled();
expect(container.firstChild).toMatchSnapshot();
});
test('change onKeyDown', () => {
const firstOnKeyDown = jest.fn();
const secondOnKeyDown = jest.fn();
const { container, getByText, rerender } = render(
hi
,
);
expect(container.firstChild).toMatchSnapshot();
fireEvent(
getByText('hi'),
new KeyboardEvent('keydown', { bubbles: true, cancelable: true }),
);
expect(firstOnKeyDown).toBeCalled();
rerender(
hi
,
);
expect(container.firstChild).toMatchSnapshot();
fireEvent(
getByText('hi'),
new KeyboardEvent('keydown', { bubbles: true, cancelable: true }),
);
expect(secondOnKeyDown).toBeCalled();
});
});