wix-style-react
Version:
wix-style-react
221 lines (175 loc) • 8.45 kB
JavaScript
;
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);
}
});