UNPKG

@instructure/ui-react-utils

Version:

A React utility library made by Instructure Inc.

73 lines (71 loc) 3.12 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; var _react = require("react"); var _vitest = require("vitest"); var _propTypes = _interopRequireDefault(require("prop-types")); var _react2 = require("@testing-library/react"); require("@testing-library/jest-dom"); var _hack = require("../hack"); var _jsxRuntime = require("@emotion/react/jsx-runtime"); /* * The MIT License (MIT) * * Copyright (c) 2015 - present Instructure, Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ class TestComponent extends _react.Component { render() { return (0, _jsxRuntime.jsxs)("div", { children: [this.props.qux, " ", this.props.bar] }); } } TestComponent.displayName = "TestComponent"; TestComponent.propTypes = { bar: _propTypes.default.string, qux: _propTypes.default.string }; TestComponent.defaultProps = { bar: void 0, qux: 'Hello' }; describe('@hack', () => { describe('hack props', () => { var _HackComponent, _HackComponent2; const HackComponent = (0, _hack.hack)(['bar'])(TestComponent); it('should warn when using an hack prop', () => { const consoleWarningSpy = _vitest.vi.spyOn(console, 'warn').mockImplementation(() => {}); (0, _react2.render)(_HackComponent || (_HackComponent = (0, _jsxRuntime.jsx)(HackComponent, { bar: "Jane" }))); const expectedWarningMessage = 'Warning: [TestComponent] The `bar` prop is a temporary hack and will be removed in a future release.'; expect(consoleWarningSpy).toHaveBeenCalledWith(expect.stringContaining(expectedWarningMessage), expect.any(String)); consoleWarningSpy.mockRestore(); }); it('should not output a warning using a non-hack prop', () => { const consoleWarningSpy = _vitest.vi.spyOn(console, 'warn').mockImplementation(() => {}); (0, _react2.render)(_HackComponent2 || (_HackComponent2 = (0, _jsxRuntime.jsx)(HackComponent, { qux: "Jane" }))); expect(consoleWarningSpy).not.toHaveBeenCalled(); consoleWarningSpy.mockRestore(); }); }); });