UNPKG

grommet

Version:

focus on the essential experience

198 lines (176 loc) 6.94 kB
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } import React, { Component } from 'react'; import PropTypes from 'prop-types'; import 'jest-styled-components'; import { cleanup, render, fireEvent } from 'react-testing-library'; import { getByTestId, queryByTestId } from 'dom-testing-library'; import { createPortal, expectPortal } from '../../../utils/portal'; import { Grommet, Box, Layer } from '../..'; import { LayerContainer } from '../LayerContainer'; var FakeLayer = /*#__PURE__*/ function (_Component) { _inheritsLoose(FakeLayer, _Component); function FakeLayer() { var _this; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _Component.call.apply(_Component, [this].concat(args)) || this; _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), "state", { showLayer: false }); return _this; } var _proto = FakeLayer.prototype; _proto.componentDidMount = function componentDidMount() { this.setState({ showLayer: true }); // eslint-disable-line }; _proto.render = function render() { var _this2 = this; var _this$props = this.props, children = _this$props.children, rest = _objectWithoutPropertiesLoose(_this$props, ["children"]); var showLayer = this.state.showLayer; var layer; if (showLayer) { layer = React.createElement(Layer, { onEsc: function onEsc() { return _this2.setState({ showLayer: false }); } }, React.createElement("div", rest, "This is a layer", React.createElement("input", { "data-testid": "test-input" }))); } return React.createElement(Grommet, null, layer, children); }; return FakeLayer; }(Component); _defineProperty(FakeLayer, "propTypes", { children: PropTypes.node.isRequired }); describe('Layer', function () { beforeEach(createPortal); afterEach(cleanup); ['top', 'bottom', 'left', 'right', 'center'].forEach(function (position) { return test("position " + position, function () { render(React.createElement(Grommet, null, React.createElement(Layer, { id: "position-test", position: position }, "This is a layer"))); expectPortal('position-test').toMatchSnapshot(); }); }); [true, false, 'horizontal', 'vertical'].forEach(function (full) { return test("full " + full, function () { render(React.createElement(Grommet, null, React.createElement(Layer, { id: "full-test", full: full }, "This is a layer"))); expectPortal('full-test').toMatchSnapshot(); }); }); ['none', 'xsmall', 'small', 'medium', 'large'].forEach(function (margin) { return test("margin " + margin, function () { render(React.createElement(Grommet, null, React.createElement(Layer, { id: "margin-test", margin: margin }, "This is a layer"))); expectPortal('margin-test').toMatchSnapshot(); }); }); test("custom margin", function () { render(React.createElement(Grommet, null, React.createElement(Layer, { id: "margin-test", margin: { top: '50px', bottom: '40px', left: '30px', right: '20px' } }, "This is a layer"))); expectPortal('margin-test').toMatchSnapshot(); }); test('hidden', function () { var _render = render(React.createElement(Grommet, null, React.createElement(Layer, { id: "hidden-test", position: "hidden" }, "This is a layer"))), rerender = _render.rerender; expectPortal('hidden-test').toMatchSnapshot(); rerender(React.createElement(Grommet, null, React.createElement(Layer, { id: "hidden-test", position: "center" }, "This is a layer"))); expectPortal('hidden-test').toMatchSnapshot(); }); test('plain', function () { render(React.createElement(Grommet, null, React.createElement(Layer, { id: "plain-test", plain: true }, "This is a plain layer"))); expectPortal('plain-test').toMatchSnapshot(); }); test('non-modal', function () { render(React.createElement(Grommet, null, React.createElement(Layer, { id: "non-modal-test", modal: false }, "This is a non-modal layer"))); expectPortal('non-modal-test').toMatchSnapshot(); }); test('dark context', function () { render(React.createElement(Grommet, null, React.createElement(Box, { background: "dark-1" }, React.createElement(Layer, { id: "non-modal-test", modal: false }, "This is a non-modal layer")))); expectPortal('non-modal-test').toMatchSnapshot(); }); test('invokes onEsc', function () { var onEsc = jest.fn(); render(React.createElement(Grommet, null, React.createElement(LayerContainer, { onEsc: onEsc }, React.createElement("input", { "data-testid": "test-input" })))); var inputNode = getByTestId(document, 'test-input'); fireEvent.keyDown(inputNode, { key: 'Esc', keyCode: 27, which: 27 }); expect(onEsc).toBeCalled(); }); test('is accessible', function () { /* eslint-disable jsx-a11y/tabindex-no-positive */ render(React.createElement(Grommet, null, React.createElement(FakeLayer, { "data-testid": "test-layer-node" }, React.createElement("div", { "data-testid": "test-body-node" }, React.createElement("input", null), React.createElement("input", { tabIndex: "10" }))))); /* eslint-enable jsx-a11y/tabindex-no-positive */ var bodyNode = getByTestId(document, 'test-body-node'); var layerNode = getByTestId(document, 'test-layer-node'); var inputNode = getByTestId(document, 'test-input'); expect(bodyNode).toMatchSnapshot(); expect(layerNode).toMatchSnapshot(); fireEvent.keyDown(inputNode, { key: 'Esc', keyCode: 27, which: 27 }); bodyNode = getByTestId(document, 'test-body-node'); expect(bodyNode).toMatchSnapshot(); expect(queryByTestId(document, 'test-layer-node')).toBeNull(); }); });