@itsjonq/cyan
Version:
Cypress-like Testing for React + JSDOM
126 lines (85 loc) • 4.25 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var React = _interopRequireWildcard(require("react"));
var _reactDom = _interopRequireDefault(require("react-dom"));
var _cyan = _interopRequireDefault(require("../cyan"));
var _cleanUp2 = _interopRequireDefault(require("../cleanUp"));
var _domCleanUp = _interopRequireDefault(require("../domCleanUp"));
var _timers = require("../timers");
var _wrapWithProvider = _interopRequireDefault(require("./wrapWithProvider"));
var _render = require("../utils/render.utils");
var _is = require("../utils/is.utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
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; }
var RenderWrapper =
/*#__PURE__*/
function (_Cyan) {
_inheritsLoose(RenderWrapper, _Cyan);
function RenderWrapper(Component) {
var _this = _Cyan.call(this) || this;
_this.setComponent(Component);
_this.mount(Component); // .get() method comes from Cyan
// @ts-ignore
_this.get(_this.root.children[0]);
return _assertThisInitialized(_this) || _assertThisInitialized(_this);
}
var _proto = RenderWrapper.prototype;
_proto.setRootNode = function setRootNode() {
this.cleanUp(); // Create the root node for ReactDOM to mount to
this.root = (0, _render.createRootNode)();
document.body.appendChild(this.root);
};
_proto.setComponent = function setComponent(Component) {
this.Component = Component && Component.type ? React.createElement(Component.type, null) : null;
this.initialProps = Component && Component.props ? Component.props : {};
};
_proto.mount = function mount(Component) {
if (Component === void 0) {
Component = this.Component;
}
this.setComponent(Component);
this.setRootNode(); // Render the WrappedComponent into the root node
this.WrappedComponent = (0, _wrapWithProvider.default)(this.Component);
(0, _timers.runAllTimers)();
this.render(this.initialProps);
return this;
};
_proto.setProps = function setProps(props) {
if (props === void 0) {
props = this.initialProps;
}
this.render(props);
return this;
};
_proto.setProp = function setProp(prop, value) {
var _this$setProps;
if (!(0, _is.isDefined)(prop)) {
return this;
}
this.setProps((_this$setProps = {}, _this$setProps[prop] = value, _this$setProps));
return this;
};
_proto.cleanUp = function cleanUp() {
(0, _cleanUp2.default)();
(0, _domCleanUp.default)();
return this;
};
_proto.unmount = function unmount() {
this.cleanUp();
return this;
};
_proto.render = function render(props) {
var Component = this.WrappedComponent;
_reactDom.default.render(React.createElement(Component, props), this.root);
return this;
};
return RenderWrapper;
}(_cyan.default);
var _default = RenderWrapper;
exports.default = _default;