You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
4.7 KiB
110 lines
4.7 KiB
import { __assign, __awaiter, __generator } from "tslib"; |
|
import { WaitForRenderTimeoutError } from "../internal/index.js"; |
|
export var toRerender = function (actual, options) { |
|
return __awaiter(this, void 0, void 0, function () { |
|
var _profiler, profiler, hint, pass, e_1; |
|
return __generator(this, function (_a) { |
|
switch (_a.label) { |
|
case 0: |
|
_profiler = actual; |
|
profiler = "Profiler" in _profiler ? _profiler.Profiler : _profiler; |
|
hint = this.utils.matcherHint("toRerender", "ProfiledComponent", ""); |
|
pass = true; |
|
_a.label = 1; |
|
case 1: |
|
_a.trys.push([1, 3, , 4]); |
|
return [4 /*yield*/, profiler.peekRender(__assign({ timeout: 100 }, options))]; |
|
case 2: |
|
_a.sent(); |
|
return [3 /*break*/, 4]; |
|
case 3: |
|
e_1 = _a.sent(); |
|
if (e_1 instanceof WaitForRenderTimeoutError) { |
|
pass = false; |
|
} |
|
else { |
|
throw e_1; |
|
} |
|
return [3 /*break*/, 4]; |
|
case 4: return [2 /*return*/, { |
|
pass: pass, |
|
message: function () { |
|
return (hint + |
|
"\n\nExpected component to".concat(pass ? " not" : "", " rerender, ") + |
|
"but it did".concat(pass ? "" : " not", ".")); |
|
}, |
|
}]; |
|
} |
|
}); |
|
}); |
|
}; |
|
/** to be thrown to "break" test execution and fail it */ |
|
var failed = {}; |
|
export var toRenderExactlyTimes = function (actual, times, optionsPerRender) { |
|
return __awaiter(this, void 0, void 0, function () { |
|
var _profiler, profiler, options, hint, pass, e_2, e_3, e_4; |
|
return __generator(this, function (_a) { |
|
switch (_a.label) { |
|
case 0: |
|
_profiler = actual; |
|
profiler = "Profiler" in _profiler ? _profiler.Profiler : _profiler; |
|
options = __assign({ timeout: 100 }, optionsPerRender); |
|
hint = this.utils.matcherHint("toRenderExactlyTimes"); |
|
pass = true; |
|
_a.label = 1; |
|
case 1: |
|
_a.trys.push([1, 11, , 12]); |
|
if (profiler.totalRenderCount() > times) { |
|
throw failed; |
|
} |
|
_a.label = 2; |
|
case 2: |
|
_a.trys.push([2, 6, , 7]); |
|
_a.label = 3; |
|
case 3: |
|
if (!(profiler.totalRenderCount() < times)) return [3 /*break*/, 5]; |
|
return [4 /*yield*/, profiler.waitForNextRender(options)]; |
|
case 4: |
|
_a.sent(); |
|
return [3 /*break*/, 3]; |
|
case 5: return [3 /*break*/, 7]; |
|
case 6: |
|
e_2 = _a.sent(); |
|
// timeouts here should just fail the test, rethrow other errors |
|
throw e_2 instanceof WaitForRenderTimeoutError ? failed : e_2; |
|
case 7: |
|
_a.trys.push([7, 9, , 10]); |
|
return [4 /*yield*/, profiler.waitForNextRender(options)]; |
|
case 8: |
|
_a.sent(); |
|
return [3 /*break*/, 10]; |
|
case 9: |
|
e_3 = _a.sent(); |
|
// we are expecting a timeout here, so swallow that error, rethrow others |
|
if (!(e_3 instanceof WaitForRenderTimeoutError)) { |
|
throw e_3; |
|
} |
|
return [3 /*break*/, 10]; |
|
case 10: return [3 /*break*/, 12]; |
|
case 11: |
|
e_4 = _a.sent(); |
|
if (e_4 === failed) { |
|
pass = false; |
|
} |
|
else { |
|
throw e_4; |
|
} |
|
return [3 /*break*/, 12]; |
|
case 12: return [2 /*return*/, { |
|
pass: pass, |
|
message: function () { |
|
return (hint + |
|
" Expected component to".concat(pass ? " not" : "", " render exactly ").concat(times, ".") + |
|
" It rendered ".concat(profiler.totalRenderCount(), " times.")); |
|
}, |
|
}]; |
|
} |
|
}); |
|
}); |
|
}; |
|
//# sourceMappingURL=ProfiledComponent.js.map
|