wrapito 12.4.0 → 12.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
- "use strict";var de=Object.create;var E=Object.defineProperty;var he=Object.getOwnPropertyDescriptor;var fe=Object.getOwnPropertyNames;var ge=Object.getPrototypeOf,ye=Object.prototype.hasOwnProperty;var Re=(e,t)=>{for(var n in t)E(e,n,{get:t[n],enumerable:!0})},$=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of fe(t))!ye.call(e,o)&&o!==n&&E(e,o,{get:()=>t[o],enumerable:!(s=he(t,o))||s.enumerable});return e};var T=(e,t,n)=>(n=e!=null?de(ge(e)):{},$(t||!e||!e.__esModule?E(n,"default",{value:e,enumerable:!0}):n,e)),we=e=>$(E({},"__esModule",{value:!0}),e);var ze={};Re(ze,{assertions:()=>Ye,configure:()=>be,getConfig:()=>d,matchers:()=>Ye,mount:()=>U,wrap:()=>Ae});module.exports=we(ze);var Y=T(require("react"),1);var f=T(require("chalk"),1);var H=T(require("object-hash"),1);var D=require("react-dom"),U=e=>{let t=document.body.appendChild(document.createElement("div"));return(0,D.render)(e,t),t},A={defaultHost:"",extend:{},mount:U,changeRoute:e=>window.history.replaceState(null,"",e)};function be(e){A={...A,...e}}var d=()=>({...A});var F=e=>t=>{let{method:n="GET",path:s,host:o=d().defaultHost,requestBody:r=void 0,catchParams:a}=t,l=o+s,i=!d().handleQueryParams||a,u=(0,H.default)({url:i?l:l.split("?")[0],method:n.toUpperCase(),requestBody:r}),p;return"_bodyInit"in e&&e._bodyInit!==void 0&&(p=JSON.parse(e._bodyInit)),(0,H.default)({url:i?e.url:e.url.split("?")[0],method:e.method,requestBody:p})===u};function P(e,t){if(!e)throw new Error(t)}function b(e,t){return typeof t===e}function ke(e){return e instanceof Promise}function B(e,t,n){Object.defineProperty(e,t,n)}function k(e,t,n){Object.defineProperty(e,t,{value:n})}var M=Symbol.for("tinyspy:spy"),xe=new Set,Me=e=>{e.called=!1,e.callCount=0,e.calls=[],e.results=[],e.next=[]},Ee=e=>(B(e,M,{value:{reset:()=>Me(e[M])}}),e[M]),I=e=>e[M]||Ee(e);function Te(e){P(b("function",e)||b("undefined",e),"cannot spy on a non-function value");let t=function(...s){let o=I(t);o.called=!0,o.callCount++,o.calls.push(s);let r=o.next.shift();if(r){o.results.push(r);let[u,p]=r;if(u==="ok")return p;throw p}let a,l="ok";if(o.impl)try{new.target?a=Reflect.construct(o.impl,s,new.target):a=o.impl.apply(this,s),l="ok"}catch(u){throw a=u,l="error",o.results.push([l,u]),u}let i=[l,a];if(ke(a)){let u=a.then(p=>i[1]=p).catch(p=>{throw i[0]="error",i[1]=p,p});Object.assign(u,a),a=u}return o.results.push(i),a};k(t,"_isMockFunction",!0),k(t,"length",e?e.length:0),k(t,"name",e&&e.name||"spy");let n=I(t);return n.reset(),n.impl=e,t}var L=(e,t)=>Object.getOwnPropertyDescriptor(e,t),_=(e,t)=>{t!=null&&typeof t=="function"&&t.prototype!=null&&Object.setPrototypeOf(e.prototype,t.prototype)};function G(e,t,n){P(!b("undefined",e),"spyOn could not find an object to spy upon"),P(b("object",e)||b("function",e),"cannot spyOn on a primitive value");let[s,o]=(()=>{if(!b("object",t))return[t,"value"];if("getter"in t&&"setter"in t)throw new Error("cannot spy on both getter and setter");if("getter"in t)return[t.getter,"get"];if("setter"in t)return[t.setter,"set"];throw new Error("specify getter or setter to spy on")})(),r=L(e,s),a=Object.getPrototypeOf(e),l=a&&L(a,s),i=r||l;P(i||s in e,`${String(s)} does not exist`);let u=!1;o==="value"&&i&&!i.value&&i.get&&(o="get",u=!0,n=i.get());let p;i?p=i[o]:o!=="value"?p=()=>e[s]:p=e[s],n||(n=p);let m=Te(n);o==="value"&&_(m,p);let c=w=>{let{value:W,...C}=i||{configurable:!0,writable:!0};o!=="value"&&delete C.writable,C[o]=w,B(e,s,C)},R=()=>i?B(e,s,i):c(p),h=m[M];return k(h,"restore",R),k(h,"getOriginal",()=>u?p():p),k(h,"willCall",w=>(h.impl=w,m)),c(u?()=>(_(m,n),m):m),xe.add(m),m}var Ie=new Set,Oe=0;function qe(e){let t=e,n,s=[],o=[],r=I(e),a={get calls(){return r.calls},get instances(){return s},get invocationCallOrder(){return o},get results(){return r.results.map(([c,R])=>({type:c==="error"?"throw":"return",value:R}))},get lastCall(){return r.calls[r.calls.length-1]}},l=[],i=!1;function u(...c){return s.push(this),o.push(++Oe),(i?n:l.shift()||n||r.getOriginal()||(()=>{})).apply(this,c)}let p=t.name;t.getMockName=()=>p||"vi.fn()",t.mockName=c=>(p=c,t),t.mockClear=()=>(r.reset(),s=[],o=[],t),t.mockReset=()=>(t.mockClear(),n=()=>{},l=[],t),t.mockRestore=()=>(t.mockReset(),r.restore(),n=void 0,t),t.getMockImplementation=()=>n,t.mockImplementation=c=>(n=c,r.willCall(u),t),t.mockImplementationOnce=c=>(l.push(c),t);function m(c,R){let h=n;n=c,r.willCall(u),i=!0;let w=()=>{n=h,i=!1},W=R();return W instanceof Promise?W.then(()=>(w(),t)):(w(),t)}return t.withImplementation=m,t.mockReturnThis=()=>t.mockImplementation(function(){return this}),t.mockReturnValue=c=>t.mockImplementation(()=>c),t.mockReturnValueOnce=c=>t.mockImplementationOnce(()=>c),t.mockResolvedValue=c=>t.mockImplementation(()=>Promise.resolve(c)),t.mockResolvedValueOnce=c=>t.mockImplementationOnce(()=>Promise.resolve(c)),t.mockRejectedValue=c=>t.mockImplementation(()=>Promise.reject(c)),t.mockRejectedValueOnce=c=>t.mockImplementationOnce(()=>Promise.reject(c)),Object.defineProperty(t,"mock",{get:()=>a}),r.willCall(u),Ie.add(t),t}var O=e=>qe(G({spy:e||(()=>{})},"spy"));beforeEach(()=>{global.window.fetch=O()});afterEach(()=>{global.window.fetch.mockReset()});var ve=async()=>{let e={json:()=>Promise.resolve(),status:200,ok:!0,headers:new Headers({"Content-Type":"application/json"})};return Promise.resolve(e)},V=async e=>{let{responseBody:t,status:n=200,headers:s={},delay:o}=e,r={json:()=>Promise.resolve(t),status:n,ok:n>=200&&n<=299,headers:new Headers({"Content-Type":"application/json",...s})};return o?new Promise(a=>setTimeout(()=>a(r),o)):Promise.resolve(r)},We=e=>console.warn(`
1
+ "use strict";var de=Object.create;var E=Object.defineProperty;var he=Object.getOwnPropertyDescriptor;var fe=Object.getOwnPropertyNames;var ge=Object.getPrototypeOf,ye=Object.prototype.hasOwnProperty;var Re=(e,t)=>{for(var n in t)E(e,n,{get:t[n],enumerable:!0})},$=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of fe(t))!ye.call(e,o)&&o!==n&&E(e,o,{get:()=>t[o],enumerable:!(s=he(t,o))||s.enumerable});return e};var T=(e,t,n)=>(n=e!=null?de(ge(e)):{},$(t||!e||!e.__esModule?E(n,"default",{value:e,enumerable:!0}):n,e)),we=e=>$(E({},"__esModule",{value:!0}),e);var ze={};Re(ze,{assertions:()=>Ye,configure:()=>be,getConfig:()=>d,matchers:()=>Ye,mount:()=>U,wrap:()=>Ce});module.exports=we(ze);var Y=T(require("react"),1);var f=T(require("chalk"),1);var H=T(require("object-hash"),1);var D=require("react-dom"),U=e=>{let t=document.body.appendChild(document.createElement("div"));return(0,D.render)(e,t),t},C={defaultHost:"",extend:{},mount:U,changeRoute:e=>window.history.replaceState(null,"",e)};function be(e){C={...C,...e}}var d=()=>({...C});var F=e=>t=>{let{method:n="GET",path:s,host:o=d().defaultHost,requestBody:r=void 0,catchParams:a}=t,l=o+s,i=!d().handleQueryParams||a,u=(0,H.default)({url:i?l:l.split("?")[0],method:n.toUpperCase(),requestBody:r}),p;return"_bodyInit"in e&&e._bodyInit!==void 0&&(p=JSON.parse(e._bodyInit)),(0,H.default)({url:i?e.url:e.url.split("?")[0],method:e.method,requestBody:p})===u};function P(e,t){if(!e)throw new Error(t)}function b(e,t){return typeof t===e}function ke(e){return e instanceof Promise}function B(e,t,n){Object.defineProperty(e,t,n)}function k(e,t,n){Object.defineProperty(e,t,{value:n})}var M=Symbol.for("tinyspy:spy"),xe=new Set,Me=e=>{e.called=!1,e.callCount=0,e.calls=[],e.results=[],e.next=[]},Ee=e=>(B(e,M,{value:{reset:()=>Me(e[M])}}),e[M]),O=e=>e[M]||Ee(e);function Te(e){P(b("function",e)||b("undefined",e),"cannot spy on a non-function value");let t=function(...s){let o=O(t);o.called=!0,o.callCount++,o.calls.push(s);let r=o.next.shift();if(r){o.results.push(r);let[u,p]=r;if(u==="ok")return p;throw p}let a,l="ok";if(o.impl)try{new.target?a=Reflect.construct(o.impl,s,new.target):a=o.impl.apply(this,s),l="ok"}catch(u){throw a=u,l="error",o.results.push([l,u]),u}let i=[l,a];if(ke(a)){let u=a.then(p=>i[1]=p).catch(p=>{throw i[0]="error",i[1]=p,p});Object.assign(u,a),a=u}return o.results.push(i),a};k(t,"_isMockFunction",!0),k(t,"length",e?e.length:0),k(t,"name",e&&e.name||"spy");let n=O(t);return n.reset(),n.impl=e,t}var L=(e,t)=>Object.getOwnPropertyDescriptor(e,t),_=(e,t)=>{t!=null&&typeof t=="function"&&t.prototype!=null&&Object.setPrototypeOf(e.prototype,t.prototype)};function G(e,t,n){P(!b("undefined",e),"spyOn could not find an object to spy upon"),P(b("object",e)||b("function",e),"cannot spyOn on a primitive value");let[s,o]=(()=>{if(!b("object",t))return[t,"value"];if("getter"in t&&"setter"in t)throw new Error("cannot spy on both getter and setter");if("getter"in t)return[t.getter,"get"];if("setter"in t)return[t.setter,"set"];throw new Error("specify getter or setter to spy on")})(),r=L(e,s),a=Object.getPrototypeOf(e),l=a&&L(a,s),i=r||l;P(i||s in e,`${String(s)} does not exist`);let u=!1;o==="value"&&i&&!i.value&&i.get&&(o="get",u=!0,n=i.get());let p;i?p=i[o]:o!=="value"?p=()=>e[s]:p=e[s],n||(n=p);let m=Te(n);o==="value"&&_(m,p);let c=w=>{let{value:W,...A}=i||{configurable:!0,writable:!0};o!=="value"&&delete A.writable,A[o]=w,B(e,s,A)},R=()=>i?B(e,s,i):c(p),h=m[M];return k(h,"restore",R),k(h,"getOriginal",()=>u?p():p),k(h,"willCall",w=>(h.impl=w,m)),c(u?()=>(_(m,n),m):m),xe.add(m),m}var Oe=new Set,qe=0;function Ie(e){let t=e,n,s=[],o=[],r=O(e),a={get calls(){return r.calls},get instances(){return s},get invocationCallOrder(){return o},get results(){return r.results.map(([c,R])=>({type:c==="error"?"throw":"return",value:R}))},get lastCall(){return r.calls[r.calls.length-1]}},l=[],i=!1;function u(...c){return s.push(this),o.push(++qe),(i?n:l.shift()||n||r.getOriginal()||(()=>{})).apply(this,c)}let p=t.name;t.getMockName=()=>p||"vi.fn()",t.mockName=c=>(p=c,t),t.mockClear=()=>(r.reset(),s=[],o=[],t),t.mockReset=()=>(t.mockClear(),n=()=>{},l=[],t),t.mockRestore=()=>(t.mockReset(),r.restore(),n=void 0,t),t.getMockImplementation=()=>n,t.mockImplementation=c=>(n=c,r.willCall(u),t),t.mockImplementationOnce=c=>(l.push(c),t);function m(c,R){let h=n;n=c,r.willCall(u),i=!0;let w=()=>{n=h,i=!1},W=R();return W instanceof Promise?W.then(()=>(w(),t)):(w(),t)}return t.withImplementation=m,t.mockReturnThis=()=>t.mockImplementation(function(){return this}),t.mockReturnValue=c=>t.mockImplementation(()=>c),t.mockReturnValueOnce=c=>t.mockImplementationOnce(()=>c),t.mockResolvedValue=c=>t.mockImplementation(()=>Promise.resolve(c)),t.mockResolvedValueOnce=c=>t.mockImplementationOnce(()=>Promise.resolve(c)),t.mockRejectedValue=c=>t.mockImplementation(()=>Promise.reject(c)),t.mockRejectedValueOnce=c=>t.mockImplementationOnce(()=>Promise.reject(c)),Object.defineProperty(t,"mock",{get:()=>a}),r.willCall(u),Oe.add(t),t}var q=e=>Ie(G({spy:e||(()=>{})},"spy"));beforeEach(()=>{global.window.fetch=q()});afterEach(()=>{global.window.fetch.mockReset()});var ve=async()=>{let e={json:()=>Promise.resolve(),status:200,ok:!0,headers:new Headers({"Content-Type":"application/json"})};return Promise.resolve(e)},V=async e=>{let{responseBody:t,status:n=200,headers:s={},delay:o}=e,r={json:()=>Promise.resolve(t),status:n,ok:n>=200&&n<=299,headers:new Headers({"Content-Type":"application/json",...s})};return o?new Promise(a=>setTimeout(()=>a(r),o)):Promise.resolve(r)},We=e=>console.warn(`
2
2
  ${f.default.white.bold.bgRed("wrapito")} ${f.default.redBright.bold("cannot find any mock matching:")}
3
3
  ${f.default.greenBright(`URL: ${e.url}`)}
4
4
  ${f.default.greenBright(`METHOD: ${e.method?.toLowerCase()}`)}
5
5
  ${f.default.greenBright(`REQUEST BODY: ${e._bodyInit}`)}
6
- `),Q=async(e,t,n)=>{let s=e.find(F(t));if(!s)return n&&We(t),ve();let{multipleResponses:o}=s;if(!o)return V(s);let r=o.find(a=>!a.hasBeenReturned);if(!r){n&&Ce(s);return}return r.hasBeenReturned=!0,V(r)},J=(e=[],t=!1)=>{global.window.fetch.mockImplementation((s,o)=>{if(typeof s=="string"){let a=new Request(s,o);return Q(e,a,t)}return Q(e,s,t)})},Ce=e=>{let t=`\u{1F32F} Wrapito: Missing response in the multipleResponses array for path ${e.path} and method ${e.method}.`,n=f.default.greenBright(t);console.warn(n)};var j,g=e=>{j={...j,...e}},y=()=>({...j});beforeEach(()=>{global.fetch=O()});afterEach(()=>{global.fetch.mockReset()});var Ae=e=>(g({Component:e,responses:[],props:{},path:"",hasPath:!1,debug:process.env.npm_config_debugRequests==="true"}),x()),x=()=>{let e=Ne();return{withProps:Se,withNetwork:$e,atPath:De,debugRequests:Ue,mount:Fe,...e}},He=e=>{let t=y(),n=[...t.responses,...e];g({...t,responses:n})},Be=(e,t)=>(t({addResponses:He},e),x()),je=(e,t)=>{let{extend:n}=d(),s=n[t];return{...e,[t]:(...o)=>Be(o,s)}},Ne=()=>{let{extend:e}=d();return Object.keys(e).reduce(je,{})},Se=e=>{let t=y();return g({...t,props:e}),x()},$e=(e=[])=>{let t=y(),n=Array.isArray(e)?e:[e];return g({...t,responses:[...t.responses,...n]}),x()},De=(e,t)=>{let n=y();return g({...n,historyState:t,path:e,hasPath:!0}),x()},Ue=()=>{let e=y();return g({...e,debug:!0}),x()},Fe=()=>{let{portal:e,portals:t,changeRoute:n,history:s,mount:o}=d(),{Component:r,props:a,responses:l,path:i,hasPath:u,debug:p,historyState:m}=y(),c=r;return e&&z(e),t&&Le(t),u&&s&&(console.warn("wrapito WARNING: history is DEPRECATED. Pass a changeRoute function to the config instead."),console.warn("Read about changeRoute in: https://github.com/mercadona/wrapito#changeRoute"),s.push(i,m)),u&&!s&&n(i),J(l,p),o(Y.createElement(c,{...a}))},z=e=>{if(document.getElementById(e))return;let t=document.createElement("div");t.setAttribute("id",e),document.body.appendChild(t)},Le=e=>{e.forEach(t=>{z(t)})};var K=require("jest-diff"),N=(e,t)=>{let n=t?.host?`\u{1F32F} Wrapito: ${t?.host}${e} ain't got called`:`\u{1F32F} Wrapito: ${e} ain't got called`;return{pass:!1,message:()=>n}},X=(e,t,n)=>({pass:!1,message:()=>`\u{1F32F} Wrapito: ${e} is called ${n} times, you expected ${t} times`}),Z=(e,t)=>({pass:!1,message:()=>`\u{1F32F} Wrapito: Fetch method does not match, expected ${e} received ${t??"none"}`}),ee=(e,t)=>{let n=t.map(s=>(0,K.diff)(e,s)).join(`
6
+ `),Q=async(e,t,n)=>{let s=e.find(F(t));if(!s)return n&&We(t),ve();let{multipleResponses:o}=s;if(!o)return V(s);let r=o.find(a=>!a.hasBeenReturned);if(!r){n&&Ae(s);return}return r.hasBeenReturned=!0,V(r)},J=(e=[],t=!1)=>{global.window.fetch.mockImplementation((s,o)=>{if(typeof s=="string"){let a=new Request(s,o);return Q(e,a,t)}return Q(e,s,t)})},Ae=e=>{let t=`\u{1F32F} Wrapito: Missing response in the multipleResponses array for path ${e.path} and method ${e.method}.`,n=f.default.greenBright(t);console.warn(n)};var j,g=e=>{j={...j,...e}},y=()=>({...j});beforeEach(()=>{global.fetch=q()});afterEach(()=>{global.fetch.mockReset()});var Ce=e=>(g({Component:e,responses:[],props:{},path:"",hasPath:!1,debug:process.env.npm_config_debugRequests==="true"}),x()),x=()=>{let e=Ne();return{withProps:Se,withNetwork:$e,atPath:De,debugRequests:Ue,mount:Fe,...e}},He=e=>{let t=y(),n=[...t.responses,...e];g({...t,responses:n})},Be=(e,t)=>(t({addResponses:He},e),x()),je=(e,t)=>{let{extend:n}=d(),s=n[t];return{...e,[t]:(...o)=>Be(o,s)}},Ne=()=>{let{extend:e}=d();return Object.keys(e).reduce(je,{})},Se=e=>{let t=y();return g({...t,props:e}),x()},$e=(e=[])=>{let t=y(),n=Array.isArray(e)?e:[e];return g({...t,responses:[...t.responses,...n]}),x()},De=(e,t)=>{let n=y();return g({...n,historyState:t,path:e,hasPath:!0}),x()},Ue=()=>{let e=y();return g({...e,debug:!0}),x()},Fe=()=>{let{portal:e,portals:t,changeRoute:n,history:s,mount:o}=d(),{Component:r,props:a,responses:l,path:i,hasPath:u,debug:p,historyState:m}=y(),c=r;return e&&z(e),t&&Le(t),u&&s&&(console.warn("wrapito WARNING: history is DEPRECATED. Pass a changeRoute function to the config instead."),console.warn("Read about changeRoute in: https://github.com/mercadona/wrapito#changeRoute"),s.push(i,m)),u&&!s&&n(i),J(l,p),o(Y.createElement(c,{...a}))},z=e=>{if(document.getElementById(e))return;let t=document.createElement("div");t.setAttribute("id",e),t.setAttribute("data-testid",e),document.body.appendChild(t)},Le=e=>{e.forEach(t=>{z(t)})};var K=require("jest-diff"),N=(e,t)=>{let n=t?.host?`\u{1F32F} Wrapito: ${t?.host}${e} ain't got called`:`\u{1F32F} Wrapito: ${e} ain't got called`;return{pass:!1,message:()=>n}},X=(e,t,n)=>({pass:!1,message:()=>`\u{1F32F} Wrapito: ${e} is called ${n} times, you expected ${t} times`}),Z=(e,t)=>({pass:!1,message:()=>`\u{1F32F} Wrapito: Fetch method does not match, expected ${e} received ${t??"none"}`}),ee=(e,t)=>{let n=t.map(s=>(0,K.diff)(e,s)).join(`
7
7
 
8
8
  `);return{pass:!1,message:()=>`\u{1F32F} Wrapito: Fetch body does not match.
9
- ${n}`}},te=(e,t)=>{let n=t.find(s=>e!==s);return{pass:!1,message:()=>`\u{1F32F} Wrapito: Host request does not match, expected ${e} received ${n}`}},ne=()=>({pass:!1,message:()=>"\u{1F32F} Wrapito: Unable to find body."}),S=()=>({pass:!0,message:()=>"Test passing"}),se=(e,t)=>{let n=t?.host?`\u{1F32F} Wrapito: ${t.host}${e} is called`:`\u{1F32F} Wrapito: ${e} is called`;return{pass:!0,message:()=>n}};var oe=T(require("deep-equal"),1);var re=()=>{let e=d().defaultHost;return e?.includes("http")?e:"https://default.com"},_e=(e="",t,n)=>t.includes(n)?t:e+t,q=e=>e instanceof Request,Ge=e=>q(e)?e.url:e,v=(e,t={method:"GET"})=>fetch.mock.calls.filter(([s])=>{let o=Ge(s),r=re(),a=new URL(o,r),l=_e(t?.host,e,r),i=t?.host||r,u=new URL(l,i),p=a.pathname===u.pathname,m=a.search===u.search,c=a.host===u.host;return u.search?p&&m:t?.host?p&&c:p}),ae=e=>e.flat(1).filter(q).map(t=>t.method),ie=e=>e.flat(1).filter(q).map(t=>t._bodyInit?JSON.parse(t._bodyInit):{}),ce=e=>e.flat(1).filter(q).map(t=>new URL(t.url,re()).hostname),pe=(e,t)=>e&&!t.includes(e),ue=(e,t)=>t.map(s=>(0,oe.default)(e,s)).every(s=>s===!1),le=(e,t)=>t.every(s=>s!==e),me=e=>e.length===0;var Ve=(e,t)=>{let n=v(e);if(me(n))return N(e);let s=ae(n),o=t?.method;if(pe(o,s))return Z(o,s);let r=ie(n),a=t?.body;if(!a)return ne();if(ue(a,r))return ee(a,r);let l=ce(n),i=t?.host;return i&&le(i,l)?te(i,l):S()},Qe=(e,t={method:"GET"})=>v(e,t).length?se(e,t):N(e,t),Je=(e,t,n={method:"GET"})=>{let s=v(e,n);return s.length!==t?X(e,t,s.length):S()},Ye={toHaveBeenFetched:Qe,toHaveBeenFetchedWith:Ve,toHaveBeenFetchedTimes:Je};0&&(module.exports={assertions,configure,getConfig,matchers,mount,wrap});
9
+ ${n}`}},te=(e,t)=>{let n=t.find(s=>e!==s);return{pass:!1,message:()=>`\u{1F32F} Wrapito: Host request does not match, expected ${e} received ${n}`}},ne=()=>({pass:!1,message:()=>"\u{1F32F} Wrapito: Unable to find body."}),S=()=>({pass:!0,message:()=>"Test passing"}),se=(e,t)=>{let n=t?.host?`\u{1F32F} Wrapito: ${t.host}${e} is called`:`\u{1F32F} Wrapito: ${e} is called`;return{pass:!0,message:()=>n}};var oe=T(require("deep-equal"),1);var re=()=>{let e=d().defaultHost;return e?.includes("http")?e:"https://default.com"},_e=(e="",t,n)=>t.includes(n)?t:e+t,I=e=>e instanceof Request,Ge=e=>I(e)?e.url:e,v=(e,t={method:"GET"})=>fetch.mock.calls.filter(([s])=>{let o=Ge(s),r=re(),a=new URL(o,r),l=_e(t?.host,e,r),i=t?.host||r,u=new URL(l,i),p=a.pathname===u.pathname,m=a.search===u.search,c=a.host===u.host;return u.search?p&&m:t?.host?p&&c:p}),ae=e=>e.flat(1).filter(I).map(t=>t.method),ie=e=>e.flat(1).filter(I).map(t=>t._bodyInit?JSON.parse(t._bodyInit):{}),ce=e=>e.flat(1).filter(I).map(t=>new URL(t.url,re()).hostname),pe=(e,t)=>e&&!t.includes(e),ue=(e,t)=>t.map(s=>(0,oe.default)(e,s)).every(s=>s===!1),le=(e,t)=>t.every(s=>s!==e),me=e=>e.length===0;var Ve=(e,t)=>{let n=v(e);if(me(n))return N(e);let s=ae(n),o=t?.method;if(pe(o,s))return Z(o,s);let r=ie(n),a=t?.body;if(!a)return ne();if(ue(a,r))return ee(a,r);let l=ce(n),i=t?.host;return i&&le(i,l)?te(i,l):S()},Qe=(e,t={method:"GET"})=>v(e,t).length?se(e,t):N(e,t),Je=(e,t,n={method:"GET"})=>{let s=v(e,n);return s.length!==t?X(e,t,s.length):S()},Ye={toHaveBeenFetched:Qe,toHaveBeenFetchedWith:Ve,toHaveBeenFetchedTimes:Je};0&&(module.exports={assertions,configure,getConfig,matchers,mount,wrap});
package/dist/index.mjs CHANGED
@@ -1,9 +1,9 @@
1
- import*as _ from"react";import k from"chalk";import j from"object-hash";import{render as ae}from"react-dom";var ie=e=>{let t=document.body.appendChild(document.createElement("div"));return ae(e,t),t},W={defaultHost:"",extend:{},mount:ie,changeRoute:e=>window.history.replaceState(null,"",e)};function Se(e){W={...W,...e}}var d=()=>({...W});var N=e=>t=>{let{method:n="GET",path:s,host:o=d().defaultHost,requestBody:r=void 0,catchParams:a}=t,l=o+s,i=!d().handleQueryParams||a,u=j({url:i?l:l.split("?")[0],method:n.toUpperCase(),requestBody:r}),p;return"_bodyInit"in e&&e._bodyInit!==void 0&&(p=JSON.parse(e._bodyInit)),j({url:i?e.url:e.url.split("?")[0],method:e.method,requestBody:p})===u};function E(e,t){if(!e)throw new Error(t)}function w(e,t){return typeof t===e}function ce(e){return e instanceof Promise}function C(e,t,n){Object.defineProperty(e,t,n)}function b(e,t,n){Object.defineProperty(e,t,{value:n})}var M=Symbol.for("tinyspy:spy"),pe=new Set,ue=e=>{e.called=!1,e.callCount=0,e.calls=[],e.results=[],e.next=[]},le=e=>(C(e,M,{value:{reset:()=>ue(e[M])}}),e[M]),T=e=>e[M]||le(e);function me(e){E(w("function",e)||w("undefined",e),"cannot spy on a non-function value");let t=function(...s){let o=T(t);o.called=!0,o.callCount++,o.calls.push(s);let r=o.next.shift();if(r){o.results.push(r);let[u,p]=r;if(u==="ok")return p;throw p}let a,l="ok";if(o.impl)try{new.target?a=Reflect.construct(o.impl,s,new.target):a=o.impl.apply(this,s),l="ok"}catch(u){throw a=u,l="error",o.results.push([l,u]),u}let i=[l,a];if(ce(a)){let u=a.then(p=>i[1]=p).catch(p=>{throw i[0]="error",i[1]=p,p});Object.assign(u,a),a=u}return o.results.push(i),a};b(t,"_isMockFunction",!0),b(t,"length",e?e.length:0),b(t,"name",e&&e.name||"spy");let n=T(t);return n.reset(),n.impl=e,t}var S=(e,t)=>Object.getOwnPropertyDescriptor(e,t),$=(e,t)=>{t!=null&&typeof t=="function"&&t.prototype!=null&&Object.setPrototypeOf(e.prototype,t.prototype)};function D(e,t,n){E(!w("undefined",e),"spyOn could not find an object to spy upon"),E(w("object",e)||w("function",e),"cannot spyOn on a primitive value");let[s,o]=(()=>{if(!w("object",t))return[t,"value"];if("getter"in t&&"setter"in t)throw new Error("cannot spy on both getter and setter");if("getter"in t)return[t.getter,"get"];if("setter"in t)return[t.setter,"set"];throw new Error("specify getter or setter to spy on")})(),r=S(e,s),a=Object.getPrototypeOf(e),l=a&&S(a,s),i=r||l;E(i||s in e,`${String(s)} does not exist`);let u=!1;o==="value"&&i&&!i.value&&i.get&&(o="get",u=!0,n=i.get());let p;i?p=i[o]:o!=="value"?p=()=>e[s]:p=e[s],n||(n=p);let m=me(n);o==="value"&&$(m,p);let c=R=>{let{value:q,...v}=i||{configurable:!0,writable:!0};o!=="value"&&delete v.writable,v[o]=R,C(e,s,v)},y=()=>i?C(e,s,i):c(p),h=m[M];return b(h,"restore",y),b(h,"getOriginal",()=>u?p():p),b(h,"willCall",R=>(h.impl=R,m)),c(u?()=>($(m,n),m):m),pe.add(m),m}var he=new Set,fe=0;function ge(e){let t=e,n,s=[],o=[],r=T(e),a={get calls(){return r.calls},get instances(){return s},get invocationCallOrder(){return o},get results(){return r.results.map(([c,y])=>({type:c==="error"?"throw":"return",value:y}))},get lastCall(){return r.calls[r.calls.length-1]}},l=[],i=!1;function u(...c){return s.push(this),o.push(++fe),(i?n:l.shift()||n||r.getOriginal()||(()=>{})).apply(this,c)}let p=t.name;t.getMockName=()=>p||"vi.fn()",t.mockName=c=>(p=c,t),t.mockClear=()=>(r.reset(),s=[],o=[],t),t.mockReset=()=>(t.mockClear(),n=()=>{},l=[],t),t.mockRestore=()=>(t.mockReset(),r.restore(),n=void 0,t),t.getMockImplementation=()=>n,t.mockImplementation=c=>(n=c,r.willCall(u),t),t.mockImplementationOnce=c=>(l.push(c),t);function m(c,y){let h=n;n=c,r.willCall(u),i=!0;let R=()=>{n=h,i=!1},q=y();return q instanceof Promise?q.then(()=>(R(),t)):(R(),t)}return t.withImplementation=m,t.mockReturnThis=()=>t.mockImplementation(function(){return this}),t.mockReturnValue=c=>t.mockImplementation(()=>c),t.mockReturnValueOnce=c=>t.mockImplementationOnce(()=>c),t.mockResolvedValue=c=>t.mockImplementation(()=>Promise.resolve(c)),t.mockResolvedValueOnce=c=>t.mockImplementationOnce(()=>Promise.resolve(c)),t.mockRejectedValue=c=>t.mockImplementation(()=>Promise.reject(c)),t.mockRejectedValueOnce=c=>t.mockImplementationOnce(()=>Promise.reject(c)),Object.defineProperty(t,"mock",{get:()=>a}),r.willCall(u),he.add(t),t}var P=e=>ge(D({spy:e||(()=>{})},"spy"));beforeEach(()=>{global.window.fetch=P()});afterEach(()=>{global.window.fetch.mockReset()});var ye=async()=>{let e={json:()=>Promise.resolve(),status:200,ok:!0,headers:new Headers({"Content-Type":"application/json"})};return Promise.resolve(e)},U=async e=>{let{responseBody:t,status:n=200,headers:s={},delay:o}=e,r={json:()=>Promise.resolve(t),status:n,ok:n>=200&&n<=299,headers:new Headers({"Content-Type":"application/json",...s})};return o?new Promise(a=>setTimeout(()=>a(r),o)):Promise.resolve(r)},Re=e=>console.warn(`
1
+ import*as _ from"react";import k from"chalk";import j from"object-hash";import{render as ae}from"react-dom";var ie=e=>{let t=document.body.appendChild(document.createElement("div"));return ae(e,t),t},W={defaultHost:"",extend:{},mount:ie,changeRoute:e=>window.history.replaceState(null,"",e)};function Se(e){W={...W,...e}}var d=()=>({...W});var N=e=>t=>{let{method:n="GET",path:s,host:o=d().defaultHost,requestBody:r=void 0,catchParams:a}=t,l=o+s,i=!d().handleQueryParams||a,u=j({url:i?l:l.split("?")[0],method:n.toUpperCase(),requestBody:r}),p;return"_bodyInit"in e&&e._bodyInit!==void 0&&(p=JSON.parse(e._bodyInit)),j({url:i?e.url:e.url.split("?")[0],method:e.method,requestBody:p})===u};function E(e,t){if(!e)throw new Error(t)}function w(e,t){return typeof t===e}function ce(e){return e instanceof Promise}function A(e,t,n){Object.defineProperty(e,t,n)}function b(e,t,n){Object.defineProperty(e,t,{value:n})}var M=Symbol.for("tinyspy:spy"),pe=new Set,ue=e=>{e.called=!1,e.callCount=0,e.calls=[],e.results=[],e.next=[]},le=e=>(A(e,M,{value:{reset:()=>ue(e[M])}}),e[M]),T=e=>e[M]||le(e);function me(e){E(w("function",e)||w("undefined",e),"cannot spy on a non-function value");let t=function(...s){let o=T(t);o.called=!0,o.callCount++,o.calls.push(s);let r=o.next.shift();if(r){o.results.push(r);let[u,p]=r;if(u==="ok")return p;throw p}let a,l="ok";if(o.impl)try{new.target?a=Reflect.construct(o.impl,s,new.target):a=o.impl.apply(this,s),l="ok"}catch(u){throw a=u,l="error",o.results.push([l,u]),u}let i=[l,a];if(ce(a)){let u=a.then(p=>i[1]=p).catch(p=>{throw i[0]="error",i[1]=p,p});Object.assign(u,a),a=u}return o.results.push(i),a};b(t,"_isMockFunction",!0),b(t,"length",e?e.length:0),b(t,"name",e&&e.name||"spy");let n=T(t);return n.reset(),n.impl=e,t}var S=(e,t)=>Object.getOwnPropertyDescriptor(e,t),$=(e,t)=>{t!=null&&typeof t=="function"&&t.prototype!=null&&Object.setPrototypeOf(e.prototype,t.prototype)};function D(e,t,n){E(!w("undefined",e),"spyOn could not find an object to spy upon"),E(w("object",e)||w("function",e),"cannot spyOn on a primitive value");let[s,o]=(()=>{if(!w("object",t))return[t,"value"];if("getter"in t&&"setter"in t)throw new Error("cannot spy on both getter and setter");if("getter"in t)return[t.getter,"get"];if("setter"in t)return[t.setter,"set"];throw new Error("specify getter or setter to spy on")})(),r=S(e,s),a=Object.getPrototypeOf(e),l=a&&S(a,s),i=r||l;E(i||s in e,`${String(s)} does not exist`);let u=!1;o==="value"&&i&&!i.value&&i.get&&(o="get",u=!0,n=i.get());let p;i?p=i[o]:o!=="value"?p=()=>e[s]:p=e[s],n||(n=p);let m=me(n);o==="value"&&$(m,p);let c=R=>{let{value:I,...v}=i||{configurable:!0,writable:!0};o!=="value"&&delete v.writable,v[o]=R,A(e,s,v)},y=()=>i?A(e,s,i):c(p),h=m[M];return b(h,"restore",y),b(h,"getOriginal",()=>u?p():p),b(h,"willCall",R=>(h.impl=R,m)),c(u?()=>($(m,n),m):m),pe.add(m),m}var he=new Set,fe=0;function ge(e){let t=e,n,s=[],o=[],r=T(e),a={get calls(){return r.calls},get instances(){return s},get invocationCallOrder(){return o},get results(){return r.results.map(([c,y])=>({type:c==="error"?"throw":"return",value:y}))},get lastCall(){return r.calls[r.calls.length-1]}},l=[],i=!1;function u(...c){return s.push(this),o.push(++fe),(i?n:l.shift()||n||r.getOriginal()||(()=>{})).apply(this,c)}let p=t.name;t.getMockName=()=>p||"vi.fn()",t.mockName=c=>(p=c,t),t.mockClear=()=>(r.reset(),s=[],o=[],t),t.mockReset=()=>(t.mockClear(),n=()=>{},l=[],t),t.mockRestore=()=>(t.mockReset(),r.restore(),n=void 0,t),t.getMockImplementation=()=>n,t.mockImplementation=c=>(n=c,r.willCall(u),t),t.mockImplementationOnce=c=>(l.push(c),t);function m(c,y){let h=n;n=c,r.willCall(u),i=!0;let R=()=>{n=h,i=!1},I=y();return I instanceof Promise?I.then(()=>(R(),t)):(R(),t)}return t.withImplementation=m,t.mockReturnThis=()=>t.mockImplementation(function(){return this}),t.mockReturnValue=c=>t.mockImplementation(()=>c),t.mockReturnValueOnce=c=>t.mockImplementationOnce(()=>c),t.mockResolvedValue=c=>t.mockImplementation(()=>Promise.resolve(c)),t.mockResolvedValueOnce=c=>t.mockImplementationOnce(()=>Promise.resolve(c)),t.mockRejectedValue=c=>t.mockImplementation(()=>Promise.reject(c)),t.mockRejectedValueOnce=c=>t.mockImplementationOnce(()=>Promise.reject(c)),Object.defineProperty(t,"mock",{get:()=>a}),r.willCall(u),he.add(t),t}var P=e=>ge(D({spy:e||(()=>{})},"spy"));beforeEach(()=>{global.window.fetch=P()});afterEach(()=>{global.window.fetch.mockReset()});var ye=async()=>{let e={json:()=>Promise.resolve(),status:200,ok:!0,headers:new Headers({"Content-Type":"application/json"})};return Promise.resolve(e)},U=async e=>{let{responseBody:t,status:n=200,headers:s={},delay:o}=e,r={json:()=>Promise.resolve(t),status:n,ok:n>=200&&n<=299,headers:new Headers({"Content-Type":"application/json",...s})};return o?new Promise(a=>setTimeout(()=>a(r),o)):Promise.resolve(r)},Re=e=>console.warn(`
2
2
  ${k.white.bold.bgRed("wrapito")} ${k.redBright.bold("cannot find any mock matching:")}
3
3
  ${k.greenBright(`URL: ${e.url}`)}
4
4
  ${k.greenBright(`METHOD: ${e.method?.toLowerCase()}`)}
5
5
  ${k.greenBright(`REQUEST BODY: ${e._bodyInit}`)}
6
- `),F=async(e,t,n)=>{let s=e.find(N(t));if(!s)return n&&Re(t),ye();let{multipleResponses:o}=s;if(!o)return U(s);let r=o.find(a=>!a.hasBeenReturned);if(!r){n&&we(s);return}return r.hasBeenReturned=!0,U(r)},L=(e=[],t=!1)=>{global.window.fetch.mockImplementation((s,o)=>{if(typeof s=="string"){let a=new Request(s,o);return F(e,a,t)}return F(e,s,t)})},we=e=>{let t=`\u{1F32F} Wrapito: Missing response in the multipleResponses array for path ${e.path} and method ${e.method}.`,n=k.greenBright(t);console.warn(n)};var A,f=e=>{A={...A,...e}},g=()=>({...A});beforeEach(()=>{global.fetch=P()});afterEach(()=>{global.fetch.mockReset()});var Ze=e=>(f({Component:e,responses:[],props:{},path:"",hasPath:!1,debug:process.env.npm_config_debugRequests==="true"}),x()),x=()=>{let e=Me();return{withProps:Ee,withNetwork:Te,atPath:Pe,debugRequests:Ie,mount:Oe,...e}},be=e=>{let t=g(),n=[...t.responses,...e];f({...t,responses:n})},ke=(e,t)=>(t({addResponses:be},e),x()),xe=(e,t)=>{let{extend:n}=d(),s=n[t];return{...e,[t]:(...o)=>ke(o,s)}},Me=()=>{let{extend:e}=d();return Object.keys(e).reduce(xe,{})},Ee=e=>{let t=g();return f({...t,props:e}),x()},Te=(e=[])=>{let t=g(),n=Array.isArray(e)?e:[e];return f({...t,responses:[...t.responses,...n]}),x()},Pe=(e,t)=>{let n=g();return f({...n,historyState:t,path:e,hasPath:!0}),x()},Ie=()=>{let e=g();return f({...e,debug:!0}),x()},Oe=()=>{let{portal:e,portals:t,changeRoute:n,history:s,mount:o}=d(),{Component:r,props:a,responses:l,path:i,hasPath:u,debug:p,historyState:m}=g(),c=r;return e&&G(e),t&&qe(t),u&&s&&(console.warn("wrapito WARNING: history is DEPRECATED. Pass a changeRoute function to the config instead."),console.warn("Read about changeRoute in: https://github.com/mercadona/wrapito#changeRoute"),s.push(i,m)),u&&!s&&n(i),L(l,p),o(_.createElement(c,{...a}))},G=e=>{if(document.getElementById(e))return;let t=document.createElement("div");t.setAttribute("id",e),document.body.appendChild(t)},qe=e=>{e.forEach(t=>{G(t)})};import{diff as ve}from"jest-diff";var H=(e,t)=>{let n=t?.host?`\u{1F32F} Wrapito: ${t?.host}${e} ain't got called`:`\u{1F32F} Wrapito: ${e} ain't got called`;return{pass:!1,message:()=>n}},V=(e,t,n)=>({pass:!1,message:()=>`\u{1F32F} Wrapito: ${e} is called ${n} times, you expected ${t} times`}),Q=(e,t)=>({pass:!1,message:()=>`\u{1F32F} Wrapito: Fetch method does not match, expected ${e} received ${t??"none"}`}),J=(e,t)=>{let n=t.map(s=>ve(e,s)).join(`
6
+ `),F=async(e,t,n)=>{let s=e.find(N(t));if(!s)return n&&Re(t),ye();let{multipleResponses:o}=s;if(!o)return U(s);let r=o.find(a=>!a.hasBeenReturned);if(!r){n&&we(s);return}return r.hasBeenReturned=!0,U(r)},L=(e=[],t=!1)=>{global.window.fetch.mockImplementation((s,o)=>{if(typeof s=="string"){let a=new Request(s,o);return F(e,a,t)}return F(e,s,t)})},we=e=>{let t=`\u{1F32F} Wrapito: Missing response in the multipleResponses array for path ${e.path} and method ${e.method}.`,n=k.greenBright(t);console.warn(n)};var C,f=e=>{C={...C,...e}},g=()=>({...C});beforeEach(()=>{global.fetch=P()});afterEach(()=>{global.fetch.mockReset()});var Ze=e=>(f({Component:e,responses:[],props:{},path:"",hasPath:!1,debug:process.env.npm_config_debugRequests==="true"}),x()),x=()=>{let e=Me();return{withProps:Ee,withNetwork:Te,atPath:Pe,debugRequests:Oe,mount:qe,...e}},be=e=>{let t=g(),n=[...t.responses,...e];f({...t,responses:n})},ke=(e,t)=>(t({addResponses:be},e),x()),xe=(e,t)=>{let{extend:n}=d(),s=n[t];return{...e,[t]:(...o)=>ke(o,s)}},Me=()=>{let{extend:e}=d();return Object.keys(e).reduce(xe,{})},Ee=e=>{let t=g();return f({...t,props:e}),x()},Te=(e=[])=>{let t=g(),n=Array.isArray(e)?e:[e];return f({...t,responses:[...t.responses,...n]}),x()},Pe=(e,t)=>{let n=g();return f({...n,historyState:t,path:e,hasPath:!0}),x()},Oe=()=>{let e=g();return f({...e,debug:!0}),x()},qe=()=>{let{portal:e,portals:t,changeRoute:n,history:s,mount:o}=d(),{Component:r,props:a,responses:l,path:i,hasPath:u,debug:p,historyState:m}=g(),c=r;return e&&G(e),t&&Ie(t),u&&s&&(console.warn("wrapito WARNING: history is DEPRECATED. Pass a changeRoute function to the config instead."),console.warn("Read about changeRoute in: https://github.com/mercadona/wrapito#changeRoute"),s.push(i,m)),u&&!s&&n(i),L(l,p),o(_.createElement(c,{...a}))},G=e=>{if(document.getElementById(e))return;let t=document.createElement("div");t.setAttribute("id",e),t.setAttribute("data-testid",e),document.body.appendChild(t)},Ie=e=>{e.forEach(t=>{G(t)})};import{diff as ve}from"jest-diff";var H=(e,t)=>{let n=t?.host?`\u{1F32F} Wrapito: ${t?.host}${e} ain't got called`:`\u{1F32F} Wrapito: ${e} ain't got called`;return{pass:!1,message:()=>n}},V=(e,t,n)=>({pass:!1,message:()=>`\u{1F32F} Wrapito: ${e} is called ${n} times, you expected ${t} times`}),Q=(e,t)=>({pass:!1,message:()=>`\u{1F32F} Wrapito: Fetch method does not match, expected ${e} received ${t??"none"}`}),J=(e,t)=>{let n=t.map(s=>ve(e,s)).join(`
7
7
 
8
8
  `);return{pass:!1,message:()=>`\u{1F32F} Wrapito: Fetch body does not match.
9
- ${n}`}},Y=(e,t)=>{let n=t.find(s=>e!==s);return{pass:!1,message:()=>`\u{1F32F} Wrapito: Host request does not match, expected ${e} received ${n}`}},z=()=>({pass:!1,message:()=>"\u{1F32F} Wrapito: Unable to find body."}),B=()=>({pass:!0,message:()=>"Test passing"}),K=(e,t)=>{let n=t?.host?`\u{1F32F} Wrapito: ${t.host}${e} is called`:`\u{1F32F} Wrapito: ${e} is called`;return{pass:!0,message:()=>n}};import We from"deep-equal";var X=()=>{let e=d().defaultHost;return e?.includes("http")?e:"https://default.com"},Ce=(e="",t,n)=>t.includes(n)?t:e+t,I=e=>e instanceof Request,Ae=e=>I(e)?e.url:e,O=(e,t={method:"GET"})=>fetch.mock.calls.filter(([s])=>{let o=Ae(s),r=X(),a=new URL(o,r),l=Ce(t?.host,e,r),i=t?.host||r,u=new URL(l,i),p=a.pathname===u.pathname,m=a.search===u.search,c=a.host===u.host;return u.search?p&&m:t?.host?p&&c:p}),Z=e=>e.flat(1).filter(I).map(t=>t.method),ee=e=>e.flat(1).filter(I).map(t=>t._bodyInit?JSON.parse(t._bodyInit):{}),te=e=>e.flat(1).filter(I).map(t=>new URL(t.url,X()).hostname),ne=(e,t)=>e&&!t.includes(e),se=(e,t)=>t.map(s=>We(e,s)).every(s=>s===!1),oe=(e,t)=>t.every(s=>s!==e),re=e=>e.length===0;var He=(e,t)=>{let n=O(e);if(re(n))return H(e);let s=Z(n),o=t?.method;if(ne(o,s))return Q(o,s);let r=ee(n),a=t?.body;if(!a)return z();if(se(a,r))return J(a,r);let l=te(n),i=t?.host;return i&&oe(i,l)?Y(i,l):B()},Be=(e,t={method:"GET"})=>O(e,t).length?K(e,t):H(e,t),je=(e,t,n={method:"GET"})=>{let s=O(e,n);return s.length!==t?V(e,t,s.length):B()},ct={toHaveBeenFetched:Be,toHaveBeenFetchedWith:He,toHaveBeenFetchedTimes:je};export{ct as assertions,Se as configure,d as getConfig,ct as matchers,ie as mount,Ze as wrap};
9
+ ${n}`}},Y=(e,t)=>{let n=t.find(s=>e!==s);return{pass:!1,message:()=>`\u{1F32F} Wrapito: Host request does not match, expected ${e} received ${n}`}},z=()=>({pass:!1,message:()=>"\u{1F32F} Wrapito: Unable to find body."}),B=()=>({pass:!0,message:()=>"Test passing"}),K=(e,t)=>{let n=t?.host?`\u{1F32F} Wrapito: ${t.host}${e} is called`:`\u{1F32F} Wrapito: ${e} is called`;return{pass:!0,message:()=>n}};import We from"deep-equal";var X=()=>{let e=d().defaultHost;return e?.includes("http")?e:"https://default.com"},Ae=(e="",t,n)=>t.includes(n)?t:e+t,O=e=>e instanceof Request,Ce=e=>O(e)?e.url:e,q=(e,t={method:"GET"})=>fetch.mock.calls.filter(([s])=>{let o=Ce(s),r=X(),a=new URL(o,r),l=Ae(t?.host,e,r),i=t?.host||r,u=new URL(l,i),p=a.pathname===u.pathname,m=a.search===u.search,c=a.host===u.host;return u.search?p&&m:t?.host?p&&c:p}),Z=e=>e.flat(1).filter(O).map(t=>t.method),ee=e=>e.flat(1).filter(O).map(t=>t._bodyInit?JSON.parse(t._bodyInit):{}),te=e=>e.flat(1).filter(O).map(t=>new URL(t.url,X()).hostname),ne=(e,t)=>e&&!t.includes(e),se=(e,t)=>t.map(s=>We(e,s)).every(s=>s===!1),oe=(e,t)=>t.every(s=>s!==e),re=e=>e.length===0;var He=(e,t)=>{let n=q(e);if(re(n))return H(e);let s=Z(n),o=t?.method;if(ne(o,s))return Q(o,s);let r=ee(n),a=t?.body;if(!a)return z();if(se(a,r))return J(a,r);let l=te(n),i=t?.host;return i&&oe(i,l)?Y(i,l):B()},Be=(e,t={method:"GET"})=>q(e,t).length?K(e,t):H(e,t),je=(e,t,n={method:"GET"})=>{let s=q(e,n);return s.length!==t?V(e,t,s.length):B()},ct={toHaveBeenFetched:Be,toHaveBeenFetchedWith:He,toHaveBeenFetchedTimes:je};export{ct as assertions,Se as configure,d as getConfig,ct as matchers,ie as mount,Ze as wrap};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wrapito",
3
- "version": "12.4.0",
3
+ "version": "12.5.0",
4
4
  "description": "🌯 🌯 Wrap you tests so that you can test both behaviour and components with less effort.",
5
5
  "type": "module",
6
6
  "exports": {