UNPKG

grommet

Version:

focus on the essential experience

215 lines (179 loc) 8.45 kB
"use strict"; var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); require("jest-styled-components"); var _reactTestingLibrary = require("react-testing-library"); var _domTestingLibrary = require("dom-testing-library"); var _portal = require("../../../utils/portal"); var _ = require("../.."); var _LayerContainer = require("../LayerContainer"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } 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 _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } 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; } 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(_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.default.createElement(_.Layer, { onEsc: function onEsc() { return _this2.setState({ showLayer: false }); } }, _react.default.createElement("div", rest, "This is a layer", _react.default.createElement("input", { "data-testid": "test-input" }))); } return _react.default.createElement(_.Grommet, null, layer, children); }; return FakeLayer; }(_react.Component); _defineProperty(FakeLayer, "propTypes", { children: _propTypes.default.node.isRequired }); describe('Layer', function () { beforeEach(_portal.createPortal); afterEach(_reactTestingLibrary.cleanup); ['top', 'bottom', 'left', 'right', 'center'].forEach(function (position) { return test("position " + position, function () { (0, _reactTestingLibrary.render)(_react.default.createElement(_.Grommet, null, _react.default.createElement(_.Layer, { id: "position-test", position: position }, "This is a layer"))); (0, _portal.expectPortal)('position-test').toMatchSnapshot(); }); }); [true, false, 'horizontal', 'vertical'].forEach(function (full) { return test("full " + full, function () { (0, _reactTestingLibrary.render)(_react.default.createElement(_.Grommet, null, _react.default.createElement(_.Layer, { id: "full-test", full: full }, "This is a layer"))); (0, _portal.expectPortal)('full-test').toMatchSnapshot(); }); }); ['none', 'xsmall', 'small', 'medium', 'large'].forEach(function (margin) { return test("margin " + margin, function () { (0, _reactTestingLibrary.render)(_react.default.createElement(_.Grommet, null, _react.default.createElement(_.Layer, { id: "margin-test", margin: margin }, "This is a layer"))); (0, _portal.expectPortal)('margin-test').toMatchSnapshot(); }); }); test("custom margin", function () { (0, _reactTestingLibrary.render)(_react.default.createElement(_.Grommet, null, _react.default.createElement(_.Layer, { id: "margin-test", margin: { top: '50px', bottom: '40px', left: '30px', right: '20px' } }, "This is a layer"))); (0, _portal.expectPortal)('margin-test').toMatchSnapshot(); }); test('hidden', function () { var _render = (0, _reactTestingLibrary.render)(_react.default.createElement(_.Grommet, null, _react.default.createElement(_.Layer, { id: "hidden-test", position: "hidden" }, "This is a layer"))), rerender = _render.rerender; (0, _portal.expectPortal)('hidden-test').toMatchSnapshot(); rerender(_react.default.createElement(_.Grommet, null, _react.default.createElement(_.Layer, { id: "hidden-test", position: "center" }, "This is a layer"))); (0, _portal.expectPortal)('hidden-test').toMatchSnapshot(); }); test('plain', function () { (0, _reactTestingLibrary.render)(_react.default.createElement(_.Grommet, null, _react.default.createElement(_.Layer, { id: "plain-test", plain: true }, "This is a plain layer"))); (0, _portal.expectPortal)('plain-test').toMatchSnapshot(); }); test('non-modal', function () { (0, _reactTestingLibrary.render)(_react.default.createElement(_.Grommet, null, _react.default.createElement(_.Layer, { id: "non-modal-test", modal: false }, "This is a non-modal layer"))); (0, _portal.expectPortal)('non-modal-test').toMatchSnapshot(); }); test('dark context', function () { (0, _reactTestingLibrary.render)(_react.default.createElement(_.Grommet, null, _react.default.createElement(_.Box, { background: "dark-1" }, _react.default.createElement(_.Layer, { id: "non-modal-test", modal: false }, "This is a non-modal layer")))); (0, _portal.expectPortal)('non-modal-test').toMatchSnapshot(); }); test('invokes onEsc', function () { var onEsc = jest.fn(); (0, _reactTestingLibrary.render)(_react.default.createElement(_.Grommet, null, _react.default.createElement(_LayerContainer.LayerContainer, { onEsc: onEsc }, _react.default.createElement("input", { "data-testid": "test-input" })))); var inputNode = (0, _domTestingLibrary.getByTestId)(document, 'test-input'); _reactTestingLibrary.fireEvent.keyDown(inputNode, { key: 'Esc', keyCode: 27, which: 27 }); expect(onEsc).toBeCalled(); }); test('is accessible', function () { /* eslint-disable jsx-a11y/tabindex-no-positive */ (0, _reactTestingLibrary.render)(_react.default.createElement(_.Grommet, null, _react.default.createElement(FakeLayer, { "data-testid": "test-layer-node" }, _react.default.createElement("div", { "data-testid": "test-body-node" }, _react.default.createElement("input", null), _react.default.createElement("input", { tabIndex: "10" }))))); /* eslint-enable jsx-a11y/tabindex-no-positive */ var bodyNode = (0, _domTestingLibrary.getByTestId)(document, 'test-body-node'); var layerNode = (0, _domTestingLibrary.getByTestId)(document, 'test-layer-node'); var inputNode = (0, _domTestingLibrary.getByTestId)(document, 'test-input'); expect(bodyNode).toMatchSnapshot(); expect(layerNode).toMatchSnapshot(); _reactTestingLibrary.fireEvent.keyDown(inputNode, { key: 'Esc', keyCode: 27, which: 27 }); bodyNode = (0, _domTestingLibrary.getByTestId)(document, 'test-body-node'); expect(bodyNode).toMatchSnapshot(); expect((0, _domTestingLibrary.queryByTestId)(document, 'test-layer-node')).toBeNull(); }); });