Files
starface-outlook-sync-addin/node_modules/@fluentui/utilities/lib-commonjs/asAsync.test.js
T
Stefan Hacker 37ad745546 first commit
2026-04-03 09:38:48 +02:00

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