"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var React = require("react"); var asAsync_1 = require("./asAsync"); var react_1 = require("@testing-library/react"); describe('asAsync', function () { it('can async load exports', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var _resolve, _loadCalled, loadThingPromise, AsyncThing, _a, container, unmount; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: _resolve = function () { return undefined; }; _loadCalled = false; loadThingPromise = new Promise(function (resolve) { _resolve = resolve; }); AsyncThing = (0, asAsync_1.asAsync)({ load: function () { _loadCalled = true; return loadThingPromise; }, }); _a = (0, react_1.render)(React.createElement(AsyncThing, null)), container = _a.container, unmount = _a.unmount; expect(_loadCalled).toBe(true); expect(container).toBeEmptyDOMElement(); expect(_resolve).toBeTruthy(); return [4 /*yield*/, (0, react_1.act)(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: _resolve(function () { return React.createElement("div", null, "thing"); }); // allow microtasks to flush return [4 /*yield*/, Promise.resolve()]; case 1: // allow microtasks to flush _a.sent(); return [2 /*return*/]; } }); }); })]; case 1: _b.sent(); return [4 /*yield*/, (0, react_1.waitFor)(function () { return expect(container.firstChild).toHaveTextContent('thing'); })]; case 2: _b.sent(); _loadCalled = false; // Test cached case. (0, react_1.render)(React.createElement(AsyncThing, null)); expect(_loadCalled).toBe(false); expect(container.firstChild).toHaveTextContent('thing'); unmount(); return [2 /*return*/]; } }); }); }); it('can async load with placeholder', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var _resolve, _loadCalled, loadThingPromise, AsyncThing, _a, container, unmount; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: _resolve = function () { return undefined; }; _loadCalled = false; loadThingPromise = new Promise(function (resolve) { _resolve = resolve; }); AsyncThing = (0, asAsync_1.asAsync)({ load: function () { _loadCalled = true; return loadThingPromise; }, }); _a = (0, react_1.render)(React.createElement(AsyncThing, { asyncPlaceholder: function () { return React.createElement("div", null, "placeholder"); } })), container = _a.container, unmount = _a.unmount; expect(_loadCalled).toBe(true); expect(container).toHaveTextContent('placeholder'); expect(_resolve).toBeTruthy(); return [4 /*yield*/, (0, react_1.act)(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: _resolve(function () { return React.createElement("div", null, "thing"); }); return [4 /*yield*/, Promise.resolve()]; case 1: _a.sent(); return [2 /*return*/]; } }); }); })]; case 1: _b.sent(); return [4 /*yield*/, (0, react_1.waitFor)(function () { return expect(container.firstChild).toHaveTextContent('thing'); })]; case 2: _b.sent(); unmount(); return [2 /*return*/]; } }); }); }); }); //# sourceMappingURL=asAsync.test.js.map