@ngneat/spectator
Version:
A powerful tool to simplify your Angular tests
19 lines • 3.75 kB
JavaScript
// This is a public API surface of @ngneat/spectator/internals. It's not intended to be used
// by consumers. Please, don't import anything from this entry-point.
// This is done to prevent tests, that are being run in a `fakeAsync` zone, from failing randomly.
// jQuery setups a timer internally if the `document.readyState` is `complete` by doing
// `window.setTimeout(jQuery.ready)` (see its source code). Unit tests might fail randomly that
// there're still timers in the queue, but the timer has been scheduled by jQuery, so we don't
// want to allow that to happen.
const patchedSetTimeout = window.setTimeout;
// The unpatched `setTimeout` can be retrieved through this property.
// We might have used `Zone.__symbol__('OriginalDelegate')`, which would also give us
// the current string, but accessing `Zone` requires messing up with types (like declaring it
// globally through `declare const Zone`). This is the safest way of doing that.
// This is done before importing jQuery since it will use the unpatched timer
// when its code is executed, which will not be captured by zone.js.
window.setTimeout = patchedSetTimeout['__zone_symbol__OriginalDelegate'] || patchedSetTimeout;
export function restoreSetTimeout() {
window.setTimeout = patchedSetTimeout;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWN0YXRvci9pbnRlcm5hbHMvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEZBQTRGO0FBQzVGLHFFQUFxRTtBQUVyRSxrR0FBa0c7QUFDbEcsdUZBQXVGO0FBQ3ZGLCtGQUErRjtBQUMvRiw4RkFBOEY7QUFDOUYsZ0NBQWdDO0FBQ2hDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUM1QyxxRUFBcUU7QUFDckUscUZBQXFGO0FBQ3JGLDZGQUE2RjtBQUM3RixnRkFBZ0Y7QUFDaEYsNkVBQTZFO0FBQzdFLG9FQUFvRTtBQUNwRSxNQUFNLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDLGlDQUFpQyxDQUFDLElBQUksaUJBQWlCLENBQUM7QUFFOUYsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixNQUFNLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGlzIGEgcHVibGljIEFQSSBzdXJmYWNlIG9mIEBuZ25lYXQvc3BlY3RhdG9yL2ludGVybmFscy4gSXQncyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZFxuLy8gYnkgY29uc3VtZXJzLiBQbGVhc2UsIGRvbid0IGltcG9ydCBhbnl0aGluZyBmcm9tIHRoaXMgZW50cnktcG9pbnQuXG5cbi8vIFRoaXMgaXMgZG9uZSB0byBwcmV2ZW50IHRlc3RzLCB0aGF0IGFyZSBiZWluZyBydW4gaW4gYSBgZmFrZUFzeW5jYCB6b25lLCBmcm9tIGZhaWxpbmcgcmFuZG9tbHkuXG4vLyBqUXVlcnkgc2V0dXBzIGEgdGltZXIgaW50ZXJuYWxseSBpZiB0aGUgYGRvY3VtZW50LnJlYWR5U3RhdGVgIGlzIGBjb21wbGV0ZWAgYnkgZG9pbmdcbi8vIGB3aW5kb3cuc2V0VGltZW91dChqUXVlcnkucmVhZHkpYCAoc2VlIGl0cyBzb3VyY2UgY29kZSkuIFVuaXQgdGVzdHMgbWlnaHQgZmFpbCByYW5kb21seSB0aGF0XG4vLyB0aGVyZSdyZSBzdGlsbCB0aW1lcnMgaW4gdGhlIHF1ZXVlLCBidXQgdGhlIHRpbWVyIGhhcyBiZWVuIHNjaGVkdWxlZCBieSBqUXVlcnksIHNvIHdlIGRvbid0XG4vLyB3YW50IHRvIGFsbG93IHRoYXQgdG8gaGFwcGVuLlxuY29uc3QgcGF0Y2hlZFNldFRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dDtcbi8vIFRoZSB1bnBhdGNoZWQgYHNldFRpbWVvdXRgIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGlzIHByb3BlcnR5LlxuLy8gV2UgbWlnaHQgaGF2ZSB1c2VkIGBab25lLl9fc3ltYm9sX18oJ09yaWdpbmFsRGVsZWdhdGUnKWAsIHdoaWNoIHdvdWxkIGFsc28gZ2l2ZSB1c1xuLy8gdGhlIGN1cnJlbnQgc3RyaW5nLCBidXQgYWNjZXNzaW5nIGBab25lYCByZXF1aXJlcyBtZXNzaW5nIHVwIHdpdGggdHlwZXMgKGxpa2UgZGVjbGFyaW5nIGl0XG4vLyBnbG9iYWxseSB0aHJvdWdoIGBkZWNsYXJlIGNvbnN0IFpvbmVgKS4gVGhpcyBpcyB0aGUgc2FmZXN0IHdheSBvZiBkb2luZyB0aGF0LlxuLy8gVGhpcyBpcyBkb25lIGJlZm9yZSBpbXBvcnRpbmcgalF1ZXJ5IHNpbmNlIGl0IHdpbGwgdXNlIHRoZSB1bnBhdGNoZWQgdGltZXJcbi8vIHdoZW4gaXRzIGNvZGUgaXMgZXhlY3V0ZWQsIHdoaWNoIHdpbGwgbm90IGJlIGNhcHR1cmVkIGJ5IHpvbmUuanMuXG53aW5kb3cuc2V0VGltZW91dCA9IHBhdGNoZWRTZXRUaW1lb3V0WydfX3pvbmVfc3ltYm9sX19PcmlnaW5hbERlbGVnYXRlJ10gfHwgcGF0Y2hlZFNldFRpbWVvdXQ7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXN0b3JlU2V0VGltZW91dCgpIHtcbiAgd2luZG93LnNldFRpbWVvdXQgPSBwYXRjaGVkU2V0VGltZW91dDtcbn1cbiJdfQ==