@rageltd/bun-test-utils
Version:
A collection of test utilities for Bun projects
3 lines (2 loc) • 1.37 kB
JavaScript
// @bun
var{afterAll:J,afterEach:K,mock:L}=globalThis.Bun.jest(import.meta.path);var{mock:v}=globalThis.Bun.jest(import.meta.path);class D{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 z=import(x);this.modulePromises.set(x,z);try{let B=await z;return this.originalModules.set(x,B),this.modulePromises.delete(x),B}catch(B){throw this.modulePromises.delete(x),B}}getOriginal(x){return this.originalModules.get(x)}restoreModule(x){let j=this.originalModules.get(x);if(j)v.module(x,()=>j)}restoreAll(){for(let[x,j]of this.originalModules)v.module(x,()=>j)}clear(){this.originalModules.clear(),this.modulePromises.clear()}}var H=new D;function G(){let x=new Map;return{async mock(j,q){if(!x.has(j))try{let z=await import(j);x.set(j,z)}catch(z){console.warn(`Could not store original for ${j}:`,z)}v.module(j,q)},restore(j){let q=x.get(j);if(q)v.restore(),v.module(j,()=>q)},restoreAll(){v.restore();for(let[j,q]of x)v.module(j,()=>q);x.clear()}}}function O(x){v.restore();for(let[j,q]of Object.entries(x))if(q)v.module(j,()=>q)}function Q(){H.clear()}function X(){K(()=>{L.restore()})}function Y(x){let j=G();J(()=>{j.restoreAll()}),x()}export{Y as withMockCleanup,X as setupTestCleanup,O as restoreModules,G as createModuleMocker,Q as clearMockRegistry};