100 lines
5.2 KiB
JavaScript
100 lines
5.2 KiB
JavaScript
"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
|