UNPKG

jest-fela-bindings

Version:

Abstract Fela bindings for Jest

128 lines (106 loc) 4.41 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = createSnapshotFactory; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _felaTools = require("fela-tools"); var _utils = require("./utils"); function getFormattedOutput(renderer, markup) { return "".concat((0, _utils.formatCSS)((0, _felaTools.renderToString)(renderer)), "\n\n").concat((0, _utils.formatHTML)(markup)); } function createSnapshotFactory(createElement, renderHandler, defaultRenderer, defaultRendererProvider, defaultThemeProvider) { return /*#__PURE__*/function () { var _createSnapshot = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(component) { var theme, renderer, RendererProvider, ThemeProvider, markup, createRoot, div, root, _markup, _div, _markup2, _args = arguments; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: theme = _args.length > 1 && _args[1] !== undefined ? _args[1] : {}; renderer = _args.length > 2 && _args[2] !== undefined ? _args[2] : defaultRenderer; RendererProvider = _args.length > 3 && _args[3] !== undefined ? _args[3] : defaultRendererProvider; ThemeProvider = _args.length > 4 && _args[4] !== undefined ? _args[4] : defaultThemeProvider; // reset renderer to have a clean setup renderer.clear(); // Node environment if (!(typeof window === 'undefined')) { _context.next = 8; break; } markup = renderHandler.renderToStaticMarkup(createElement(RendererProvider, { renderer: renderer }, createElement(ThemeProvider, { theme: theme }, component))); return _context.abrupt("return", getFormattedOutput(renderer, markup)); case 8: // async createRoot, JSDOM createRoot = renderHandler.createRoot; if (!createRoot.createRoot) { _context.next = 16; break; } div = document.createElement('div'); root = createRoot.createRoot(div); _context.next = 14; return new Promise(function (resolve) { root.render(createElement(RendererProvider, { renderer: renderer }, createElement(ThemeProvider, { theme: theme }, createElement(createRoot.CallbackWrapper, { callback: function callback() { return resolve(div.innerHTML); } }, component)))); }); case 14: _markup = _context.sent; return _context.abrupt("return", getFormattedOutput(renderer, _markup)); case 16: if (!renderHandler.render) { _context.next = 22; break; } _div = document.createElement('div'); _context.next = 20; return new Promise(function (resolve) { renderHandler.render(createElement(RendererProvider, { renderer: renderer }, createElement(ThemeProvider, { theme: theme }, component)), _div, function () { return resolve(_div.innerHTML); }); }); case 20: _markup2 = _context.sent; return _context.abrupt("return", getFormattedOutput(renderer, _markup2)); case 22: return _context.abrupt("return", ''); case 23: case "end": return _context.stop(); } } }, _callee); })); function createSnapshot(_x) { return _createSnapshot.apply(this, arguments); } return createSnapshot; }(); }