UNPKG

grommet

Version:

focus on the essential experience

280 lines (227 loc) 8.17 kB
"use strict"; var _react = _interopRequireDefault(require("react")); require("jest-styled-components"); var _reactTestingLibrary = require("react-testing-library"); var _domTestingLibrary = require("dom-testing-library"); var _portal = require("../../../utils/portal"); var _Grommet = require("../../Grommet"); var _ = require(".."); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } describe('TextInput', function () { beforeEach(_portal.createPortal); afterEach(_reactTestingLibrary.cleanup); test('basic', function () { var _render = (0, _reactTestingLibrary.render)(_react.default.createElement(_.TextInput, { name: "item" })), container = _render.container; expect(container.firstChild).toMatchSnapshot(); }); test('disabled', function () { var _render2 = (0, _reactTestingLibrary.render)(_react.default.createElement(_.TextInput, { disabled: true, name: "item" })), container = _render2.container; expect(container.firstChild).toMatchSnapshot(); }); test('suggestions', function (done) { var onChange = jest.fn(); var onFocus = jest.fn(); var _render3 = (0, _reactTestingLibrary.render)(_react.default.createElement(_.TextInput, { "data-testid": "test-input", id: "item", name: "item", suggestions: ['test', 'test1'], onChange: onChange, onFocus: onFocus })), getByTestId = _render3.getByTestId, container = _render3.container; expect(container.firstChild).toMatchSnapshot(); _reactTestingLibrary.fireEvent.focus(getByTestId('test-input')); _reactTestingLibrary.fireEvent.change(getByTestId('test-input'), { target: { value: ' ' } }); setTimeout(function () { (0, _portal.expectPortal)('text-input-drop__item').toMatchSnapshot(); expect(onChange).toBeCalled(); expect(onFocus).toBeCalled(); (0, _reactTestingLibrary.fireEvent)(document, new MouseEvent('mousedown', { bubbles: true, cancelable: true })); expect(document.getElementById('text-input-drop__item')).toBeNull(); done(); }, 50); }); test('complex suggestions', function (done) { var _render4 = (0, _reactTestingLibrary.render)(_react.default.createElement(_Grommet.Grommet, null, _react.default.createElement(_.TextInput, { "data-testid": "test-input", id: "item", name: "item", suggestions: [{ label: 'test', value: 'test' }, { value: 'test1' }] }))), getByTestId = _render4.getByTestId, container = _render4.container; expect(container.firstChild).toMatchSnapshot(); _reactTestingLibrary.fireEvent.change(getByTestId('test-input'), { target: { value: ' ' } }); setTimeout(function () { (0, _portal.expectPortal)('text-input-drop__item').toMatchSnapshot(); (0, _reactTestingLibrary.fireEvent)(document, new MouseEvent('mousedown', { bubbles: true, cancelable: true })); expect(document.getElementById('text-input-drop__item')).toBeNull(); done(); }, 50); }); test('close suggestion drop', function (done) { var _render5 = (0, _reactTestingLibrary.render)(_react.default.createElement(_Grommet.Grommet, null, _react.default.createElement(_.TextInput, { "data-testid": "test-input", id: "item", name: "item", suggestions: ['test', 'test1'] }))), getByTestId = _render5.getByTestId, container = _render5.container; expect(container.firstChild).toMatchSnapshot(); _reactTestingLibrary.fireEvent.change(getByTestId('test-input'), { target: { value: ' ' } }); setTimeout(function () { (0, _portal.expectPortal)('text-input-drop__item').toMatchSnapshot(); _reactTestingLibrary.fireEvent.keyDown(getByTestId('test-input'), { key: 'Esc', keyCode: 27, which: 27 }); setTimeout(function () { expect(document.getElementById('text-input-drop__item')).toBeNull(); expect(container.firstChild).toMatchSnapshot(); done(); }, 50); }, 50); }); test('select suggestion', function (done) { var onSelect = jest.fn(); var _render6 = (0, _reactTestingLibrary.render)(_react.default.createElement(_Grommet.Grommet, null, _react.default.createElement(_.TextInput, { "data-testid": "test-input", plain: true, size: "large", id: "item", name: "item", suggestions: ['test', 'test1'], onSelect: onSelect }))), getByTestId = _render6.getByTestId, container = _render6.container; expect(container.firstChild).toMatchSnapshot(); _reactTestingLibrary.fireEvent.change(getByTestId('test-input'), { target: { value: ' ' } }); setTimeout(function () { (0, _portal.expectPortal)('text-input-drop__item').toMatchSnapshot(); _reactTestingLibrary.fireEvent.click((0, _domTestingLibrary.getByText)(document, 'test1')); expect(container.firstChild).toMatchSnapshot(); expect(document.getElementById('text-input-drop__item')).toBeNull(); expect(onSelect).toBeCalledWith(expect.objectContaining({ suggestion: 'test1' })); done(); }, 50); }); test('select a suggestion', function () { var onSelect = jest.fn(); var _render7 = (0, _reactTestingLibrary.render)(_react.default.createElement(_Grommet.Grommet, null, _react.default.createElement(_.TextInput, { "data-testid": "test-input", id: "item", name: "item", suggestions: ['test', { value: 'test1' }], onSelect: onSelect }))), getByTestId = _render7.getByTestId, container = _render7.container; expect(container.firstChild).toMatchSnapshot(); var input = getByTestId('test-input'); // pressing enter here nothing will happen _reactTestingLibrary.fireEvent.keyDown(input, { keyCode: 13 }); // enter _reactTestingLibrary.fireEvent.keyDown(input, { keyCode: 40 }); // down _reactTestingLibrary.fireEvent.keyDown(input, { keyCode: 40 }); // down _reactTestingLibrary.fireEvent.keyDown(input, { keyCode: 38 }); // up _reactTestingLibrary.fireEvent.keyDown(input, { keyCode: 13 }); // enter expect(onSelect).toBeCalledWith(expect.objectContaining({ suggestion: 'test' })); }); test('handles next and previous without suggestion', function () { var onSelect = jest.fn(); var _render8 = (0, _reactTestingLibrary.render)(_react.default.createElement(_Grommet.Grommet, null, _react.default.createElement(_.TextInput, { "data-testid": "test-input", id: "item", name: "item", onSelect: onSelect }))), getByTestId = _render8.getByTestId, container = _render8.container; expect(container.firstChild).toMatchSnapshot(); var input = getByTestId('test-input'); _reactTestingLibrary.fireEvent.keyDown(input, { keyCode: 40 }); _reactTestingLibrary.fireEvent.keyDown(input, { keyCode: 40 }); _reactTestingLibrary.fireEvent.keyDown(input, { keyCode: 38 }); _reactTestingLibrary.fireEvent.keyDown(input, { keyCode: 13 }); // enter expect(onSelect).not.toBeCalled(); expect(container.firstChild).toMatchSnapshot(); }); ['small', 'medium', 'large'].forEach(function (dropHeight) { test(dropHeight + " drop height", function (done) { var _render9 = (0, _reactTestingLibrary.render)(_react.default.createElement(_.TextInput, { "data-testid": "test-input", id: "item", name: "item", suggestions: ['test', 'test1'], dropHeight: dropHeight })), getByTestId = _render9.getByTestId; _reactTestingLibrary.fireEvent.focus(getByTestId('test-input')); setTimeout(function () { (0, _portal.expectPortal)('text-input-drop__item').toMatchSnapshot(); done(); }, 50); }); }); });