61 lines
2.5 KiB
JavaScript
61 lines
2.5 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var React = require("react");
|
|
var asAsync_1 = require("./asAsync");
|
|
var enzyme_1 = require("enzyme");
|
|
describe('asAsync', function () {
|
|
it('can async load exports', function (done) {
|
|
var _resolve = function () { return undefined; };
|
|
var _loadCalled = false;
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
var loadThingPromise = new Promise(function (resolve) {
|
|
_resolve = resolve;
|
|
});
|
|
var AsyncThing = (0, asAsync_1.asAsync)({
|
|
load: function () {
|
|
_loadCalled = true;
|
|
return loadThingPromise;
|
|
},
|
|
});
|
|
var wrapper = (0, enzyme_1.mount)(React.createElement(AsyncThing, null));
|
|
expect(_loadCalled).toBe(true);
|
|
expect(wrapper.text()).toBeFalsy();
|
|
expect(_resolve).toBeTruthy();
|
|
_resolve(function () { return React.createElement("div", null, "thing"); });
|
|
process.nextTick(function () {
|
|
wrapper.update();
|
|
expect(wrapper.text()).toEqual('thing');
|
|
_loadCalled = false;
|
|
// Test cached case.
|
|
(0, enzyme_1.mount)(React.createElement(AsyncThing, null));
|
|
expect(_loadCalled).toBe(false);
|
|
expect(wrapper.text()).toEqual('thing');
|
|
done();
|
|
});
|
|
});
|
|
it('can async load with placeholder', function (done) {
|
|
var _resolve = function () { return undefined; };
|
|
var _loadCalled = false;
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
var loadThingPromise = new Promise(function (resolve) {
|
|
_resolve = resolve;
|
|
});
|
|
var AsyncThing = (0, asAsync_1.asAsync)({
|
|
load: function () {
|
|
_loadCalled = true;
|
|
return loadThingPromise;
|
|
},
|
|
});
|
|
var wrapper = (0, enzyme_1.mount)(React.createElement(AsyncThing, { asyncPlaceholder: function () { return React.createElement("div", null, "placeholder"); } }));
|
|
expect(_loadCalled).toBe(true);
|
|
expect(wrapper.text()).toEqual('placeholder');
|
|
expect(_resolve).toBeTruthy();
|
|
_resolve(function () { return React.createElement("div", null, "thing"); });
|
|
process.nextTick(function () {
|
|
wrapper.update();
|
|
expect(wrapper.text()).toEqual('thing');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
//# sourceMappingURL=asAsync.test.js.map
|