UNPKG

wix-style-react

Version:
221 lines (175 loc) • 8.45 kB
'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _enzyme = require('enzyme'); var _reactTestingLibrary = require('react-testing-library'); var _enzyme2 = require('wix-ui-test-utils/enzyme'); var _vanilla = require('wix-ui-test-utils/vanilla'); var _allComponents = require('./all-components'); var _allComponents2 = _interopRequireDefault(_allComponents); var _componentDefinitions = require('./component-definitions.js'); var _componentDefinitions2 = _interopRequireDefault(_componentDefinitions); var _testkitDefinitions = require('../scripts/generate-testkit-exports/testkit-definitions'); var _testkitDefinitions2 = _interopRequireDefault(_testkitDefinitions); var _index = require('./index'); var reactTestUtilsTestkitFactories = _interopRequireWildcard(_index); var _enzyme3 = require('./enzyme'); var enzymeTestkitFactories = _interopRequireWildcard(_enzyme3); 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)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } var noop = function noop() {}; var lowerFirst = function lowerFirst(a) { return a.charAt(0).toLowerCase().concat(a.slice(1)); }; var attachHooks = function attachHooks(beforeAllHook, afterAllHook) { beforeAll(_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return beforeAllHook(); case 2: return _context.abrupt('return', _context.sent); case 3: case 'end': return _context.stop(); } } }, _callee, undefined); }))); afterAll(_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return afterAllHook(); case 2: return _context2.abrupt('return', _context2.sent); case 3: case 'end': return _context2.stop(); } } }, _callee2, undefined); }))); }; var DRIVER_ASSERTS = { enzyme: function enzyme(_ref3) { var name = _ref3.name, component = _ref3.component, props = _ref3.props, beforeAllHook = _ref3.beforeAllHook, afterAllHook = _ref3.afterAllHook; describe('Enzyme testkits', function () { attachHooks(beforeAllHook, afterAllHook); it(name + ' should pass sanity test', function () { return expect((0, _enzyme2.isEnzymeTestkitExists)(_react2.default.createElement(component, props), enzymeTestkitFactories[lowerFirst(name) + 'TestkitFactory'], _enzyme.mount)).toBe(true); }); }); }, vanilla: function vanilla(_ref4) { var name = _ref4.name, component = _ref4.component, props = _ref4.props, beforeAllHook = _ref4.beforeAllHook, afterAllHook = _ref4.afterAllHook; describe('ReactTestUtils testkits', function () { attachHooks(beforeAllHook, afterAllHook); it(name + ' should pass sanity test', function () { return expect((0, _vanilla.isTestkitExists)(_react2.default.createElement(component, props), reactTestUtilsTestkitFactories[lowerFirst(name) + 'TestkitFactory'])).toBe(true); }); }); describe('ReactTestUtils update dataHook', function () { attachHooks(beforeAllHook, afterAllHook); /* eslint-disable jest/no-disabled-tests */ xit(name + ' should have an updated dataHook', function () { /* eslint-enable jest/no-disabled-tests */ var hook1 = 'my-data-hook-1'; var hook2 = 'my-data-hook-2'; var _render = (0, _reactTestingLibrary.render)(_react2.default.createElement(component, _extends({}, props, { dataHook: hook1 }))), rerender = _render.rerender, container = _render.container; expect(!!container.querySelector('[data-hook="' + hook1 + '"]')).toBeTruthy(); rerender(_react2.default.createElement(component, _extends({}, props, { dataHook: hook2 }))); expect(!!container.querySelector('[data-hook="' + hook2 + '"]')).toBeTruthy(); (0, _reactTestingLibrary.cleanup)(); }); }); } }; var UNIDRIVER_ASSERTS = { enzyme: function enzyme(_ref5) { var name = _ref5.name, component = _ref5.component, props = _ref5.props, beforeAllHook = _ref5.beforeAllHook, afterAllHook = _ref5.afterAllHook; describe('Enzyme unidriver testkits', function () { attachHooks(beforeAllHook, afterAllHook); it(name + ' should pass sanity test', function () { return expect((0, _enzyme2.isUniEnzymeTestkitExists)(_react2.default.createElement(component, props), enzymeTestkitFactories[lowerFirst(name) + 'TestkitFactory'], _enzyme.mount)).resolves.toBe(true); }); }); }, vanilla: function vanilla(_ref6) { var name = _ref6.name, component = _ref6.component, props = _ref6.props, beforeAllHook = _ref6.beforeAllHook, afterAllHook = _ref6.afterAllHook; describe('ReactTestUtils unidriver testkits', function () { attachHooks(beforeAllHook, afterAllHook); it(name + ' should pass sanity test', function () { return expect((0, _vanilla.isUniTestkitExists)(_react2.default.createElement(component, props), reactTestUtilsTestkitFactories[lowerFirst(name) + 'TestkitFactory'])).resolves.toBe(true); }); }); } }; var EXPORT_ASSERTS = { enzyme: function enzyme(name) { describe('Enzyme testkit exports', function () { it('should contain ' + name, function () { return expect(_typeof(enzymeTestkitFactories[lowerFirst(name) + 'TestkitFactory'])).toBe('function'); }); }); }, vanilla: function vanilla(name) { describe('ReactTestUtils testkit exports', function () { it('should contain ' + name, function () { return expect(_typeof(reactTestUtilsTestkitFactories[lowerFirst(name) + 'TestkitFactory'])).toBe('function'); }); }); } }; Object.keys(_extends({}, _allComponents2.default, _componentDefinitions2.default, _testkitDefinitions2.default)).forEach(function (name) { var definition = _testkitDefinitions2.default[name] || {}; var config = _extends({ beforeAllHook: noop, afterAllHook: noop, props: _componentDefinitions2.default[name] ? _componentDefinitions2.default[name].props : {} }, definition, { name: name, component: _allComponents2.default[name] }); if (!definition.skipSanityTest) { var sanityAsserts = definition.unidriver ? UNIDRIVER_ASSERTS : DRIVER_ASSERTS; if (definition.drivers) { definition.drivers.forEach(function (driver) { return sanityAsserts[driver](config); }); } else { Object.keys(sanityAsserts).forEach(function (driver) { return sanityAsserts[driver](config); }); } } if (!definition.noTestkit) { EXPORT_ASSERTS.vanilla(name); EXPORT_ASSERTS.enzyme(name); } });