@rageltd/bun-test-utils
Version:
A collection of test utilities for Bun projects
3 lines (2 loc) • 1.9 kB
JavaScript
// @bun @bun-cjs
(function(exports, require, module, __filename, __dirname) {var{defineProperty:G,getOwnPropertyNames:L,getOwnPropertyDescriptor:N}=Object,O=Object.prototype.hasOwnProperty;var J=new WeakMap,Q=(x)=>{var j=J.get(x),q;if(j)return j;if(j=G({},"__esModule",{value:!0}),x&&typeof x==="object"||typeof x==="function")L(x).map((v)=>!O.call(j,v)&&G(j,v,{get:()=>x[v],enumerable:!(q=N(x,v))||q.enumerable}));return J.set(x,j),j};var T=(x,j)=>{for(var q in j)G(x,q,{get:j[q],enumerable:!0,configurable:!0,set:(v)=>j[q]=()=>v})};var _={};T(_,{withMockCleanup:()=>Z,setupTestCleanup:()=>Y,restoreModules:()=>V,createModuleMocker:()=>H,clearMockRegistry:()=>X});module.exports=Q(_);var B=;var z=;class K{originalModules=new Map;modulePromises=new Map;async storeOriginal(x){let j=this.originalModules.get(x);if(j)return j;let q=this.modulePromises.get(x);if(q)return q;let v=import(x);this.modulePromises.set(x,v);try{let D=await v;return this.originalModules.set(x,D),this.modulePromises.delete(x),D}catch(D){throw this.modulePromises.delete(x),D}}getOriginal(x){return this.originalModules.get(x)}restoreModule(x){let j=this.originalModules.get(x);if(j)z.mock.module(x,()=>j)}restoreAll(){for(let[x,j]of this.originalModules)z.mock.module(x,()=>j)}clear(){this.originalModules.clear(),this.modulePromises.clear()}}var U=new K;function H(){let x=new Map;return{async mock(j,q){if(!x.has(j))try{let v=await import(j);x.set(j,v)}catch(v){console.warn(`Could not store original for ${j}:`,v)}z.mock.module(j,q)},restore(j){let q=x.get(j);if(q)z.mock.restore(),z.mock.module(j,()=>q)},restoreAll(){z.mock.restore();for(let[j,q]of x)z.mock.module(j,()=>q);x.clear()}}}function V(x){z.mock.restore();for(let[j,q]of Object.entries(x))if(q)z.mock.module(j,()=>q)}function X(){U.clear()}function Y(){B.afterEach(()=>{B.mock.restore()})}function Z(x){let j=H();B.afterAll(()=>{j.restoreAll()}),x()}})