wrapito 0.0.0 → 1.3.0-beta
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/LICENSE +21 -0
- package/README.md +154 -76
- package/dist/index.d.cts +111 -0
- package/dist/index.d.ts +111 -0
- package/dist/index.js +12 -0
- package/dist/index.mjs +12 -0
- package/package.json +61 -53
- package/assertions/fetch.d.ts +0 -13
- package/assertions/fetch.d.ts.map +0 -1
- package/assertions/fetch.js +0 -90
- package/assertions/fetch.js.map +0 -1
- package/assertions/index.d.ts +0 -9
- package/assertions/index.d.ts.map +0 -1
- package/assertions/index.js +0 -11
- package/assertions/index.js.map +0 -1
- package/config.d.ts +0 -6
- package/config.d.ts.map +0 -1
- package/config.js +0 -31
- package/config.js.map +0 -1
- package/index.d.ts +0 -4
- package/index.d.ts.map +0 -1
- package/index.js +0 -10
- package/index.js.map +0 -1
- package/mockNetwork.d.ts +0 -2
- package/mockNetwork.d.ts.map +0 -1
- package/mockNetwork.js +0 -114
- package/mockNetwork.js.map +0 -1
- package/requestMatcher.d.ts +0 -2
- package/requestMatcher.d.ts.map +0 -1
- package/requestMatcher.js +0 -27
- package/requestMatcher.js.map +0 -1
- package/wrap.d.ts +0 -8
- package/wrap.d.ts.map +0 -1
- package/wrap.js +0 -107
- package/wrap.js.map +0 -1
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import*as _ from"react";import x from"chalk";import H from"object-hash";import{render as ue}from"@testing-library/react";var A={defaultHost:"",extend:{},mount:ue,changeRoute:e=>window.history.replaceState(null,"",e)};function $e(e){A={...A,...e}}var f=()=>({...A});var S=e=>t=>{let{method:n="GET",path:s,host:r=f().defaultHost,requestBody:o=void 0,catchParams:i}=t,l=r+s,c=!f().handleQueryParams||i,u=H({url:c?l:l.split("?")[0],method:n.toUpperCase(),requestBody:o}),a;return"_bodyInit"in e&&e._bodyInit!==void 0&&(a=JSON.parse(e._bodyInit)),H({url:c?e.url:e.url.split("?")[0],method:e.method,requestBody:a})===u};function E(e,t){if(!e)throw new Error(t)}function I(e,t){return typeof t===e}function le(e){return e instanceof Promise}function v(e,t,n){Object.defineProperty(e,t,n)}function w(e,t,n){Object.defineProperty(e,t,{value:n})}var M=Symbol.for("tinyspy:spy"),me=new Set,de=e=>{e.called=!1,e.callCount=0,e.calls=[],e.results=[],e.next=[]},he=e=>(v(e,M,{value:{reset:()=>de(e[M])}}),e[M]),T=e=>e[M]||he(e);function fe(e){E(I("function",e)||I("undefined",e),"cannot spy on a non-function value");let t=function(...s){let r=T(t);r.called=!0,r.callCount++,r.calls.push(s);let o=r.next.shift();if(o){r.results.push(o);let[u,a]=o;if(u==="ok")return a;throw a}let i,l="ok";if(r.impl)try{new.target?i=Reflect.construct(r.impl,s,new.target):i=r.impl.apply(this,s),l="ok"}catch(u){throw i=u,l="error",r.results.push([l,u]),u}let c=[l,i];if(le(i)){let u=i.then(a=>c[1]=a).catch(a=>{throw c[0]="error",c[1]=a,a});Object.assign(u,i),i=u}return r.results.push(c),i};w(t,"_isMockFunction",!0),w(t,"length",e?e.length:0),w(t,"name",e&&e.name||"spy");let n=T(t);return n.reset(),n.impl=e,t}var j=(e,t)=>Object.getOwnPropertyDescriptor(e,t),N=(e,t)=>{t!=null&&typeof t=="function"&&t.prototype!=null&&Object.setPrototypeOf(e.prototype,t.prototype)};function B(e,t,n){E(!I("undefined",e),"spyOn could not find an object to spy upon"),E(I("object",e)||I("function",e),"cannot spyOn on a primitive value");let[s,r]=(()=>{if(!I("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")})(),o=j(e,s),i=Object.getPrototypeOf(e),l=i&&j(i,s),c=o||l;E(c||s in e,`${String(s)} does not exist`);let u=!1;r==="value"&&c&&!c.value&&c.get&&(r="get",u=!0,n=c.get());let a;c?a=c[r]:r!=="value"?a=()=>e[s]:a=e[s],n||(n=a);let m=fe(n);r==="value"&&N(m,a);let p=h=>{let{value:k,...U}=c||{configurable:!0,writable:!0};r!=="value"&&delete U.writable,U[r]=h,v(e,s,U)},g=()=>c?v(e,s,c):p(a),d=m[M];return w(d,"restore",g),w(d,"getOriginal",()=>u?a():a),w(d,"willCall",h=>(d.impl=h,m)),p(u?()=>(N(m,n),m):m),me.add(m),m}var ye=new Set,Re=0;function be(e){let t=e,n,s=[],r=[],o=T(e),i={get calls(){return o.calls},get instances(){return s},get invocationCallOrder(){return r},get results(){return o.results.map(([p,g])=>({type:p==="error"?"throw":"return",value:g}))},get lastCall(){return o.calls[o.calls.length-1]}},l=[],c=!1;function u(...p){return s.push(this),r.push(++Re),(c?n:l.shift()||n||o.getOriginal()||(()=>{})).apply(this,p)}let a=t.name;t.getMockName=()=>a||"vi.fn()",t.mockName=p=>(a=p,t),t.mockClear=()=>(o.reset(),s=[],r=[],t),t.mockReset=()=>(t.mockClear(),n=()=>{},l=[],t),t.mockRestore=()=>(t.mockReset(),o.restore(),n=void 0,t),t.getMockImplementation=()=>n,t.mockImplementation=p=>(n=p,o.willCall(u),t),t.mockImplementationOnce=p=>(l.push(p),t);function m(p,g){let d=n;n=p,o.willCall(u),c=!0;let h=()=>{n=d,c=!1},k=g();return k instanceof Promise?k.then(()=>(h(),t)):(h(),t)}return t.withImplementation=m,t.mockReturnThis=()=>t.mockImplementation(function(){return this}),t.mockReturnValue=p=>t.mockImplementation(()=>p),t.mockReturnValueOnce=p=>t.mockImplementationOnce(()=>p),t.mockResolvedValue=p=>t.mockImplementation(()=>Promise.resolve(p)),t.mockResolvedValueOnce=p=>t.mockImplementationOnce(()=>Promise.resolve(p)),t.mockRejectedValue=p=>t.mockImplementation(()=>Promise.reject(p)),t.mockRejectedValueOnce=p=>t.mockImplementationOnce(()=>Promise.reject(p)),Object.defineProperty(t,"mock",{get:()=>i}),o.willCall(u),ye.add(t),t}var q=e=>be(B({spy:e||(()=>{})},"spy"));beforeEach(()=>{global.window.fetch=q()});afterEach(()=>{global.window.fetch.mockReset()});var Ie=async()=>{let e={json:()=>Promise.resolve(),status:200,ok:!0,headers:new Headers({"Content-Type":"application/json"})};return Promise.resolve(e)},$=async e=>{let{responseBody:t,status:n=200,headers:s={},delay:r}=e,o={json:()=>Promise.resolve(t),status:n,ok:n>=200&&n<=299,headers:new Headers({"Content-Type":"application/json",...s})};return r?new Promise(i=>setTimeout(()=>i(o),r)):Promise.resolve(o)},we=e=>console.warn(`
|
|
2
|
+
${x.white.bold.bgRed("wrapito")} ${x.redBright.bold("cannot find any mock matching:")}
|
|
3
|
+
${x.greenBright(`URL: ${e.url}`)}
|
|
4
|
+
${x.greenBright(`METHOD: ${e.method?.toLowerCase()}`)}
|
|
5
|
+
${x.greenBright(`REQUEST BODY: ${e._bodyInit}`)}
|
|
6
|
+
`),L=async(e,t,n)=>{let s=e.find(S(t));if(!s)return n&&we(t),Ie();let{multipleResponses:r}=s;if(!r)return $(s);let o=r.find(i=>!i.hasBeenReturned);if(!o){n&&xe(s);return}return o.hasBeenReturned=!0,$(o)},F=(e=[],t=!1)=>{global.window.fetch.mockImplementation((s,r)=>{if(typeof s=="string"){let i=new Request(s,r);return L(e,i,t)}return L(e,s,t)})},xe=e=>{let t=`\u{1F32F} Wrapito: Missing response in the multipleResponses array for path ${e.path} and method ${e.method}.`,n=x.greenBright(t);console.warn(n)};var W,y=e=>{W={...W,...e}},R=()=>({...W});beforeEach(()=>{global.fetch=q()});afterEach(()=>{global.fetch.mockReset()});var nt=e=>(y({Component:e,responses:[],props:{},path:"",hasPath:!1,interactionConfig:void 0,debug:process.env.npm_config_debugRequests==="true"}),b()),b=()=>{let e=Ee();return{withProps:Te,withNetwork:Pe,withInteraction:qe,atPath:Ue,debugRequests:Ae,mount:ve,...e}},ke=e=>{let t=R(),n=[...t.responses,...e];y({...t,responses:n})},Me=(e,t)=>(t({addResponses:ke},e),b()),Oe=(e,t)=>{let{extend:n}=f(),s=n[t];return{...e,[t]:(...r)=>Me(r,s)}},Ee=()=>{let{extend:e}=f();return Object.keys(e).reduce(Oe,{})},Te=e=>{let t=R();return y({...t,props:e}),b()},qe=e=>{let t=R();return y({...t,interactionConfig:e}),b()},Pe=(e=[])=>{let t=R(),n=Array.isArray(e)?e:[e];return y({...t,responses:[...t.responses,...n]}),b()},Ue=(e,t)=>{let n=R();return y({...n,historyState:t,path:e,hasPath:!0}),b()},Ae=()=>{let e=R();return y({...e,debug:!0}),b()},ve=()=>{let{portal:e,portals:t,changeRoute:n,history:s,mount:r,interaction:o}=f(),{Component:i,props:l,responses:c,path:u,hasPath:a,debug:m,historyState:p,interactionConfig:g}=R(),d=i;e&&G(e),t&&We(t),a&&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(u,p)),a&&!s&&n(u),F(c,m);let h=r(_.createElement(d,{...l}));if(o){let k=o.setup?o.setup(o.userLib,g):o.userLib;return{...h,user:k}}return{...h,user:void 0}},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)},We=e=>{e.forEach(t=>{G(t)})};import{diff as V}from"jest-diff";var C=(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}},Q=(e,t,n)=>({pass:!1,message:()=>`\u{1F32F} Wrapito: ${e} is called ${n} times, you expected ${t} times`}),J=(e,t)=>({pass:!1,message:()=>`\u{1F32F} Wrapito: Fetch method does not match, expected ${e} received ${t??"none"}`}),Y=(e,t)=>{let n=t.map(s=>V(e,s)).join(`
|
|
7
|
+
|
|
8
|
+
`);return{pass:!1,message:()=>`\u{1F32F} Wrapito: Fetch body does not match.
|
|
9
|
+
${n}`}},z=(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}`}},K=(e,t)=>{let n=t.map(s=>V(e,s)).join(`
|
|
10
|
+
|
|
11
|
+
`);return{pass:!1,message:()=>`\u{1F32F} Wrapito: Fetch headers do not match.
|
|
12
|
+
${n}`}},X=()=>({pass:!1,message:()=>"\u{1F32F} Wrapito: Unable to find body."}),D=()=>({pass:!0,message:()=>"Test passing"}),Z=(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 Ce from"deep-equal";var ee=()=>{let e=f().defaultHost;return e?.includes("http")?e:"https://default.com"},De=(e="",t,n)=>t.includes(n)?t:e+t,O=e=>e instanceof Request,He=e=>O(e)?e.url:e,P=(e,t={method:"GET"})=>fetch.mock.calls.filter(([s])=>{let r=He(s),o=ee(),i=new URL(r,o),l=De(t?.host,e,o),c=t?.host||o,u=new URL(l,c),a=i.pathname===u.pathname,m=i.search===u.search,p=i.host===u.host;return u.search?a&&m:t?.host?a&&p:a}),te=e=>e.flat(1).filter(O).map(t=>t.method),ne=e=>e.flat(1).filter(O).map(t=>t._bodyInit?JSON.parse(t._bodyInit):{}),se=e=>e.flat(1).filter(O).map(t=>new URL(t.url,ee()).hostname),re=e=>e.flat(1).filter(O).map(t=>{let n={};return t.headers.forEach((s,r)=>{n[r]=s}),n}),oe=(e,t)=>e&&!t.includes(e),ae=(e,t)=>t.map(s=>Ce(e,s)).every(s=>s===!1),ie=(e,t)=>t.every(s=>s!==e),ce=(e,t)=>t.every(s=>Object.entries(e).some(([r,o])=>s[r.toLowerCase()]!==o)),pe=e=>e.length===0;var Se=(e,t)=>{let n=P(e);if(pe(n))return C(e);let s=te(n),r=t?.method;if(oe(r,s))return J(r,s);let o=ne(n),i=t?.body;if(!i)return X();if(ae(i,o))return Y(i,o);let l=se(n),c=t?.host;if(c&&ie(c,l))return z(c,l);let u=re(n),a=t?.headers;return a&&ce(a,u)?K(a,u):D()},je=(e,t={method:"GET"})=>P(e,t).length?Z(e,t):C(e,t),Ne=(e,t,n={method:"GET"})=>{let s=P(e,n);return s.length!==t?Q(e,t,s.length):D()},lt={toHaveBeenFetched:je,toHaveBeenFetchedWith:Se,toHaveBeenFetchedTimes:Ne};export{lt as assertions,$e as configure,f as getConfig,lt as matchers,nt as wrap};
|
package/package.json
CHANGED
|
@@ -1,16 +1,32 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wrapito",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.3.0-beta",
|
|
4
4
|
"description": "🌯 🌯 Wrap you tests so that you can test both behaviour and components with less effort.",
|
|
5
|
-
"
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"require": "./dist/index.js",
|
|
9
|
+
"import": "./dist/index.mjs",
|
|
10
|
+
"types": "./dist/index.d.ts"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"main": "./dist/index.js",
|
|
14
|
+
"module": "./dist/index.mjs",
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
6
19
|
"license": "MIT",
|
|
7
20
|
"scripts": {
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
21
|
+
"build": "tsup",
|
|
22
|
+
"build:watch": "tsup --watch",
|
|
23
|
+
"test": "vitest",
|
|
24
|
+
"test:coverage": "vitest --coverage",
|
|
25
|
+
"test:publish": "npm publish --dry-run",
|
|
26
|
+
"build:types": "tsc --build",
|
|
27
|
+
"publish-package": "npm run build && npm publish",
|
|
28
|
+
"publish-package:beta": "npm run build && npm publish --tag beta",
|
|
29
|
+
"typecheck": "tsc --noEmit dist/index.d.ts"
|
|
14
30
|
},
|
|
15
31
|
"repository": {
|
|
16
32
|
"type": "git",
|
|
@@ -20,68 +36,60 @@
|
|
|
20
36
|
"react",
|
|
21
37
|
"testing",
|
|
22
38
|
"test",
|
|
23
|
-
"integration",
|
|
24
39
|
"unit",
|
|
25
40
|
"javascript",
|
|
26
41
|
"dom",
|
|
27
42
|
"js",
|
|
28
|
-
"jest",
|
|
29
43
|
"wrap",
|
|
30
44
|
"component",
|
|
31
45
|
"mock",
|
|
32
46
|
"fetch",
|
|
33
|
-
"http"
|
|
47
|
+
"http",
|
|
48
|
+
"vitest"
|
|
34
49
|
],
|
|
35
50
|
"bugs": {
|
|
36
51
|
"url": "https://github.com/mercadona/wrapito/issues"
|
|
37
52
|
},
|
|
38
53
|
"homepage": "https://github.com/mercadona/wrapito#readme",
|
|
39
54
|
"dependencies": {
|
|
40
|
-
"
|
|
41
|
-
"deep-equal": "^
|
|
42
|
-
"
|
|
43
|
-
"
|
|
55
|
+
"chalk": "^5.6.2",
|
|
56
|
+
"deep-equal": "^2.2.3",
|
|
57
|
+
"jest-diff": "^29.7.0",
|
|
58
|
+
"object-hash": "^3.0.0",
|
|
59
|
+
"whatwg-fetch": "^3.6.20"
|
|
44
60
|
},
|
|
45
61
|
"devDependencies": {
|
|
46
|
-
"@
|
|
47
|
-
"@
|
|
48
|
-
"@
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
51
|
-
"@
|
|
52
|
-
"@
|
|
53
|
-
"@
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"react": "^
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
62
|
+
"@testing-library/jest-dom": "^6.6.4",
|
|
63
|
+
"@testing-library/react": "^16.3.0",
|
|
64
|
+
"@types/deep-equal": "^1.0.4",
|
|
65
|
+
"@types/node": "^20.10.5",
|
|
66
|
+
"@types/object-hash": "^3.0.6",
|
|
67
|
+
"@types/react": "^19.1.8",
|
|
68
|
+
"@types/react-router-dom": "^5.3.3",
|
|
69
|
+
"@vitest/coverage-istanbul": "^1.1.0",
|
|
70
|
+
"eslint": "^8.56.0",
|
|
71
|
+
"eslint-config-prettier": "^10.1.8",
|
|
72
|
+
"eslint-config-react-app": "^7.0.1",
|
|
73
|
+
"eslint-plugin-prettier": "^5.1.1",
|
|
74
|
+
"eslint-plugin-react": "^7.33.2",
|
|
75
|
+
"history": "^4.10.1",
|
|
76
|
+
"jsdom": "^26.1.0",
|
|
77
|
+
"prettier": "^3.1.1",
|
|
78
|
+
"react": "^19.1.0",
|
|
79
|
+
"react-dom": "^19.2.0",
|
|
80
|
+
"react-redux": "^9.2.0",
|
|
81
|
+
"react-router-dom": "^5.3.4",
|
|
82
|
+
"redux": "^5.0.1",
|
|
83
|
+
"redux-thunk": "^3.1.0",
|
|
84
|
+
"tinyspy": "^2.2.1",
|
|
85
|
+
"tsup": "^8.5.1",
|
|
86
|
+
"typescript": "^5.9.3",
|
|
87
|
+
"vitest": "^1.1.0"
|
|
66
88
|
},
|
|
67
89
|
"peerDependencies": {
|
|
68
|
-
"jest": "
|
|
69
|
-
"
|
|
70
|
-
"react": "
|
|
71
|
-
"react-dom": "
|
|
72
|
-
},
|
|
73
|
-
"babel": {
|
|
74
|
-
"presets": [
|
|
75
|
-
"@babel/env",
|
|
76
|
-
"@babel/react"
|
|
77
|
-
],
|
|
78
|
-
"plugins": [
|
|
79
|
-
"@babel/plugin-transform-runtime",
|
|
80
|
-
"@babel/proposal-class-properties"
|
|
81
|
-
]
|
|
82
|
-
},
|
|
83
|
-
"jest-junit": {
|
|
84
|
-
"suiteName": "jest tests",
|
|
85
|
-
"output": "results/tests/jest-junit.xml"
|
|
90
|
+
"@testing-library/jest-dom": ">=5.16.4",
|
|
91
|
+
"@testing-library/react": ">=14.0.0",
|
|
92
|
+
"react": ">=18.0.0",
|
|
93
|
+
"react-dom": ">=18.0.0"
|
|
86
94
|
}
|
|
87
95
|
}
|
package/assertions/fetch.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export function toHaveBeenFetchedWith(path: any, options: any): {
|
|
2
|
-
pass: boolean;
|
|
3
|
-
message: () => any;
|
|
4
|
-
};
|
|
5
|
-
export function toHaveBeenFetched(path: any): {
|
|
6
|
-
pass: boolean;
|
|
7
|
-
message: () => any;
|
|
8
|
-
};
|
|
9
|
-
export function toHaveBeenFetchedTimes(path: any, expectedLength: any): {
|
|
10
|
-
pass: boolean;
|
|
11
|
-
message: () => any;
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/assertions/fetch.js"],"names":[],"mappings":"AAgEA;;;EAyBC;AAED;;;EAGC;AAED;;;EAKC"}
|
package/assertions/fetch.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.toHaveBeenFetchedTimes = exports.toHaveBeenFetched = exports.toHaveBeenFetchedWith = void 0;
|
|
7
|
-
var deep_equal_1 = __importDefault(require("deep-equal"));
|
|
8
|
-
var chalk_1 = require("chalk");
|
|
9
|
-
var emptyErrorMessage = function (path) { return ({
|
|
10
|
-
pass: false,
|
|
11
|
-
message: function () { return "\uD83C\uDF2F Wrapito: " + path + " ain't got called"; },
|
|
12
|
-
}); };
|
|
13
|
-
var fetchLengthErrorMessage = function (path, expectLength, currentLength) { return ({
|
|
14
|
-
pass: false,
|
|
15
|
-
message: function () {
|
|
16
|
-
return "\uD83C\uDF2F Wrapito: " + path + " is called " + currentLength + " times, you expected " + expectLength + " times";
|
|
17
|
-
},
|
|
18
|
-
}); };
|
|
19
|
-
var methodDoesNotMatchErrorMessage = function (expected, received) { return ({
|
|
20
|
-
pass: false,
|
|
21
|
-
message: function () {
|
|
22
|
-
return "\uD83C\uDF2F Wrapito: Fetch method does not match, expected " + expected + " received " + received;
|
|
23
|
-
},
|
|
24
|
-
}); };
|
|
25
|
-
var bodyDoesNotMatchErrorMessage = function (expected, received) { return ({
|
|
26
|
-
pass: false,
|
|
27
|
-
message: function () {
|
|
28
|
-
return "\uD83C\uDF2F Wrapito: Fetch body does not match.\nExpected:\n" + chalk_1.green(JSON.stringify(expected, null, ' ')) + "\n\nReceived:\n" + chalk_1.red(JSON.stringify(received, null, ' '));
|
|
29
|
-
},
|
|
30
|
-
}); };
|
|
31
|
-
var successMessage = function () { return ({
|
|
32
|
-
pass: true,
|
|
33
|
-
message: function () { return undefined; },
|
|
34
|
-
}); };
|
|
35
|
-
var findRequestsByPath = function (path) {
|
|
36
|
-
return fetch.mock.calls.filter(function (call) { return call[0].url.includes(path); });
|
|
37
|
-
};
|
|
38
|
-
var getRequestsMethods = function (requests) {
|
|
39
|
-
return requests.map(function (request) { var _a; return (_a = request[0]) === null || _a === void 0 ? void 0 : _a.method; });
|
|
40
|
-
};
|
|
41
|
-
var getRequestsBodies = function (requests) {
|
|
42
|
-
return requests.map(function (request) {
|
|
43
|
-
if (!request[0]._bodyInit)
|
|
44
|
-
return {};
|
|
45
|
-
return JSON.parse(request[0]._bodyInit);
|
|
46
|
-
});
|
|
47
|
-
};
|
|
48
|
-
var methodDoesNotMatch = function (expectedMethod, receivedRequestsMethods) {
|
|
49
|
-
return expectedMethod && !receivedRequestsMethods.includes(expectedMethod);
|
|
50
|
-
};
|
|
51
|
-
var bodyDoesNotMatch = function (expectedBody, receivedRequestsBodies) {
|
|
52
|
-
if (!expectedBody)
|
|
53
|
-
return false;
|
|
54
|
-
var anyRequestMatch = receivedRequestsBodies
|
|
55
|
-
.map(function (request) { return deep_equal_1.default(expectedBody, request); })
|
|
56
|
-
.every(function (requestCompare) { return requestCompare === false; });
|
|
57
|
-
return anyRequestMatch;
|
|
58
|
-
};
|
|
59
|
-
var empty = function (requests) { return requests.length === 0; };
|
|
60
|
-
var toHaveBeenFetchedWith = function (path, options) {
|
|
61
|
-
var targetRequests = findRequestsByPath(path);
|
|
62
|
-
if (empty(targetRequests)) {
|
|
63
|
-
return emptyErrorMessage(path);
|
|
64
|
-
}
|
|
65
|
-
var receivedRequestsMethods = getRequestsMethods(targetRequests);
|
|
66
|
-
var expectedMethod = options === null || options === void 0 ? void 0 : options.method;
|
|
67
|
-
if (methodDoesNotMatch(expectedMethod, receivedRequestsMethods)) {
|
|
68
|
-
return methodDoesNotMatchErrorMessage(expectedMethod, receivedRequestsMethods);
|
|
69
|
-
}
|
|
70
|
-
var receivedRequestsBodies = getRequestsBodies(targetRequests);
|
|
71
|
-
var expectedBody = options === null || options === void 0 ? void 0 : options.body;
|
|
72
|
-
if (bodyDoesNotMatch(expectedBody, receivedRequestsBodies)) {
|
|
73
|
-
return bodyDoesNotMatchErrorMessage(expectedBody, receivedRequestsBodies);
|
|
74
|
-
}
|
|
75
|
-
return successMessage();
|
|
76
|
-
};
|
|
77
|
-
exports.toHaveBeenFetchedWith = toHaveBeenFetchedWith;
|
|
78
|
-
var toHaveBeenFetched = function (path) {
|
|
79
|
-
var requests = findRequestsByPath(path);
|
|
80
|
-
return !requests.length ? emptyErrorMessage(path) : successMessage();
|
|
81
|
-
};
|
|
82
|
-
exports.toHaveBeenFetched = toHaveBeenFetched;
|
|
83
|
-
var toHaveBeenFetchedTimes = function (path, expectedLength) {
|
|
84
|
-
var requests = findRequestsByPath(path);
|
|
85
|
-
return requests.length !== expectedLength
|
|
86
|
-
? fetchLengthErrorMessage(path, expectedLength, requests.length)
|
|
87
|
-
: successMessage();
|
|
88
|
-
};
|
|
89
|
-
exports.toHaveBeenFetchedTimes = toHaveBeenFetchedTimes;
|
|
90
|
-
//# sourceMappingURL=fetch.js.map
|
package/assertions/fetch.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/assertions/fetch.js"],"names":[],"mappings":"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"}
|
package/assertions/index.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export namespace assertions {
|
|
2
|
-
export { toHaveBeenFetchedWith };
|
|
3
|
-
export { toHaveBeenFetched };
|
|
4
|
-
export { toHaveBeenFetchedTimes };
|
|
5
|
-
}
|
|
6
|
-
import { toHaveBeenFetchedWith } from "./fetch";
|
|
7
|
-
import { toHaveBeenFetched } from "./fetch";
|
|
8
|
-
import { toHaveBeenFetchedTimes } from "./fetch";
|
|
9
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/assertions/index.js"],"names":[],"mappings":""}
|
package/assertions/index.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.assertions = void 0;
|
|
4
|
-
var fetch_1 = require("./fetch");
|
|
5
|
-
var assertions = {
|
|
6
|
-
toHaveBeenFetchedWith: fetch_1.toHaveBeenFetchedWith,
|
|
7
|
-
toHaveBeenFetched: fetch_1.toHaveBeenFetched,
|
|
8
|
-
toHaveBeenFetchedTimes: fetch_1.toHaveBeenFetchedTimes,
|
|
9
|
-
};
|
|
10
|
-
exports.assertions = assertions;
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
package/assertions/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assertions/index.js"],"names":[],"mappings":";;;AAAA,iCAIgB;AAEhB,IAAM,UAAU,GAAG;IACjB,qBAAqB,+BAAA;IACrB,iBAAiB,2BAAA;IACjB,sBAAsB,gCAAA;CACvB,CAAA;AAEQ,gCAAU"}
|
package/config.d.ts
DELETED
package/config.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.js"],"names":[],"mappings":"AAeA,gDAKC;AAED;;;EAAuC"}
|
package/config.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.getConfig = exports.configure = void 0;
|
|
15
|
-
var react_dom_1 = require("react-dom");
|
|
16
|
-
var mount = function (component) {
|
|
17
|
-
var rootNode = document.body.appendChild(document.createElement('div'));
|
|
18
|
-
react_dom_1.render(component, rootNode);
|
|
19
|
-
return rootNode;
|
|
20
|
-
};
|
|
21
|
-
var config = {
|
|
22
|
-
defaultHost: '',
|
|
23
|
-
mount: mount,
|
|
24
|
-
};
|
|
25
|
-
function configure(newConfig) {
|
|
26
|
-
config = __assign(__assign({}, config), newConfig);
|
|
27
|
-
}
|
|
28
|
-
exports.configure = configure;
|
|
29
|
-
var getConfig = function () { return (__assign({}, config)); };
|
|
30
|
-
exports.getConfig = getConfig;
|
|
31
|
-
//# sourceMappingURL=config.js.map
|
package/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.js"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,uCAAkC;AAElC,IAAM,KAAK,GAAG,UAAA,SAAS;IACrB,IAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;IAEzE,kBAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAE3B,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,IAAI,MAAM,GAAG;IACX,WAAW,EAAE,EAAE;IACf,KAAK,OAAA;CACN,CAAA;AAED,SAAS,SAAS,CAAC,SAAS;IAC1B,MAAM,yBACD,MAAM,GACN,SAAS,CACb,CAAA;AACH,CAAC;AAIQ,8BAAS;AAFlB,IAAM,SAAS,GAAG,cAAM,OAAA,cAAM,MAAM,EAAG,EAAf,CAAe,CAAA;AAEnB,8BAAS"}
|
package/index.d.ts
DELETED
package/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":""}
|
package/index.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.assertions = exports.configure = exports.wrap = void 0;
|
|
4
|
-
var wrap_1 = require("./wrap");
|
|
5
|
-
Object.defineProperty(exports, "wrap", { enumerable: true, get: function () { return wrap_1.wrap; } });
|
|
6
|
-
var config_1 = require("./config");
|
|
7
|
-
Object.defineProperty(exports, "configure", { enumerable: true, get: function () { return config_1.configure; } });
|
|
8
|
-
var assertions_1 = require("./assertions");
|
|
9
|
-
Object.defineProperty(exports, "assertions", { enumerable: true, get: function () { return assertions_1.assertions; } });
|
|
10
|
-
//# sourceMappingURL=index.js.map
|
package/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.js"],"names":[],"mappings":";;;AAAA,+BAA6B;AAApB,4FAAA,IAAI,OAAA;AACb,mCAAoC;AAA3B,mGAAA,SAAS,OAAA;AAClB,2CAAyC;AAAhC,wGAAA,UAAU,OAAA"}
|
package/mockNetwork.d.ts
DELETED
package/mockNetwork.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mockNetwork.d.ts","sourceRoot":"","sources":["../src/mockNetwork.js"],"names":[],"mappings":"AA4CA,sEA4BC"}
|
package/mockNetwork.js
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (_) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
-
exports.mockNetwork = void 0;
|
|
51
|
-
var chalk_1 = require("chalk");
|
|
52
|
-
var requestMatcher_1 = require("./requestMatcher");
|
|
53
|
-
beforeEach(function () {
|
|
54
|
-
global.fetch = jest.fn();
|
|
55
|
-
});
|
|
56
|
-
afterEach(function () {
|
|
57
|
-
global.fetch.mockRestore();
|
|
58
|
-
});
|
|
59
|
-
var createResponse = function (_a) {
|
|
60
|
-
var responseBody = _a.responseBody, _b = _a.status, status = _b === void 0 ? 200 : _b, headers = _a.headers, delay = _a.delay;
|
|
61
|
-
return __awaiter(void 0, void 0, void 0, function () {
|
|
62
|
-
var response;
|
|
63
|
-
return __generator(this, function (_c) {
|
|
64
|
-
response = {
|
|
65
|
-
json: function () { return Promise.resolve(responseBody); },
|
|
66
|
-
status: status,
|
|
67
|
-
ok: status >= 200 && status <= 299,
|
|
68
|
-
headers: new Headers(__assign({ 'Content-Type': 'application/json' }, headers)),
|
|
69
|
-
};
|
|
70
|
-
if (!delay)
|
|
71
|
-
return [2 /*return*/, Promise.resolve(response)];
|
|
72
|
-
return [2 /*return*/, new Promise(function (resolve) {
|
|
73
|
-
return setTimeout(function () {
|
|
74
|
-
return resolve(response);
|
|
75
|
-
}, delay);
|
|
76
|
-
})];
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
};
|
|
80
|
-
var printRequest = function (request) {
|
|
81
|
-
return console.warn("\n" + chalk_1.white.bold.bgRed('wrapito') + " " + chalk_1.redBright.bold('cannot find any mock matching:') + "\n " + chalk_1.greenBright("URL: " + request.url) + "\n " + chalk_1.greenBright("METHOD: " + request.method.toLowerCase()) + "\n " + chalk_1.greenBright("REQUEST BODY: " + request._bodyInit) + "\n ");
|
|
82
|
-
};
|
|
83
|
-
function mockNetwork(responses, debug) {
|
|
84
|
-
var _this = this;
|
|
85
|
-
if (responses === void 0) { responses = []; }
|
|
86
|
-
if (debug === void 0) { debug = false; }
|
|
87
|
-
var listOfResponses = responses.length > 0 ? responses : [responses];
|
|
88
|
-
global.fetch.mockImplementation(function (request) { return __awaiter(_this, void 0, void 0, function () {
|
|
89
|
-
var responseMatchingRequest, multipleResponses, responseNotYetReturned;
|
|
90
|
-
return __generator(this, function (_a) {
|
|
91
|
-
responseMatchingRequest = listOfResponses.find(requestMatcher_1.getRequestMatcher(request));
|
|
92
|
-
if (!responseMatchingRequest) {
|
|
93
|
-
if (debug) {
|
|
94
|
-
printRequest(request);
|
|
95
|
-
}
|
|
96
|
-
return [2 /*return*/, createResponse({})];
|
|
97
|
-
}
|
|
98
|
-
multipleResponses = responseMatchingRequest.multipleResponses;
|
|
99
|
-
if (!multipleResponses) {
|
|
100
|
-
return [2 /*return*/, createResponse(responseMatchingRequest)];
|
|
101
|
-
}
|
|
102
|
-
responseNotYetReturned = multipleResponses.find(function (_a) {
|
|
103
|
-
var hasBeenReturned = _a.hasBeenReturned;
|
|
104
|
-
return !hasBeenReturned;
|
|
105
|
-
});
|
|
106
|
-
if (!responseNotYetReturned)
|
|
107
|
-
return [2 /*return*/];
|
|
108
|
-
responseNotYetReturned.hasBeenReturned = true;
|
|
109
|
-
return [2 /*return*/, createResponse(responseNotYetReturned)];
|
|
110
|
-
});
|
|
111
|
-
}); });
|
|
112
|
-
}
|
|
113
|
-
exports.mockNetwork = mockNetwork;
|
|
114
|
-
//# sourceMappingURL=mockNetwork.js.map
|
package/mockNetwork.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mockNetwork.js","sourceRoot":"","sources":["../src/mockNetwork.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAqD;AACrD,mDAAoD;AAEpD,UAAU,CAAC;IACT,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;AAC1B,CAAC,CAAC,CAAA;AAEF,SAAS,CAAC;IACR,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;AAC5B,CAAC,CAAC,CAAA;AAEF,IAAM,cAAc,GAAG,UAAO,EAK7B;QAJC,YAAY,kBAAA,EACZ,cAAY,EAAZ,MAAM,mBAAG,GAAG,KAAA,EACZ,OAAO,aAAA,EACP,KAAK,WAAA;;;;YAEC,QAAQ,GAAG;gBACf,IAAI,EAAE,cAAM,OAAA,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAA7B,CAA6B;gBACzC,MAAM,QAAA;gBACN,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG;gBAClC,OAAO,EAAE,IAAI,OAAO,YAAG,cAAc,EAAE,kBAAkB,IAAK,OAAO,EAAG;aACzE,CAAA;YAED,IAAI,CAAC,KAAK;gBAAE,sBAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAA;YAE5C,sBAAO,IAAI,OAAO,CAAC,UAAA,OAAO;oBACxB,OAAA,UAAU,CAAC;wBACT,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAA;oBAC1B,CAAC,EAAE,KAAK,CAAC;gBAFT,CAES,CACV,EAAA;;;CACF,CAAA;AAED,IAAM,YAAY,GAAG,UAAA,OAAO;IAC1B,OAAO,OAAO,CAAC,IAAI,CAAC,OACnB,aAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAM,iBAAS,CAAC,IAAI,CAChD,gCAAgC,CACjC,YACI,mBAAW,CAAC,UAAS,OAAO,CAAC,GAAM,CAAC,YACpC,mBAAW,CAAC,aAAY,OAAO,CAAC,MAAM,CAAC,WAAW,EAAK,CAAC,YACxD,mBAAW,CAAC,mBAAkB,OAAO,CAAC,SAAY,CAAC,QACtD,CAAC,CAAA;AACH,CAAC,CAAA;AAED,SAAS,WAAW,CAAC,SAAc,EAAE,KAAa;IAAlD,iBA4BC;IA5BoB,0BAAA,EAAA,cAAc;IAAE,sBAAA,EAAA,aAAa;IAChD,IAAM,eAAe,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACtE,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,UAAM,OAAO;;;YACrC,uBAAuB,GAAG,eAAe,CAAC,IAAI,CAClD,kCAAiB,CAAC,OAAO,CAAC,CAC3B,CAAA;YAED,IAAI,CAAC,uBAAuB,EAAE;gBAC5B,IAAI,KAAK,EAAE;oBACT,YAAY,CAAC,OAAO,CAAC,CAAA;iBACtB;gBAED,sBAAO,cAAc,CAAC,EAAE,CAAC,EAAA;aAC1B;YAEO,iBAAiB,GAAK,uBAAuB,kBAA5B,CAA4B;YACrD,IAAI,CAAC,iBAAiB,EAAE;gBACtB,sBAAO,cAAc,CAAC,uBAAuB,CAAC,EAAA;aAC/C;YAEK,sBAAsB,GAAG,iBAAiB,CAAC,IAAI,CACnD,UAAC,EAAmB;oBAAjB,eAAe,qBAAA;gBAAO,OAAA,CAAC,eAAe;YAAhB,CAAgB,CAC1C,CAAA;YACD,IAAI,CAAC,sBAAsB;gBAAE,sBAAM;YAEnC,sBAAsB,CAAC,eAAe,GAAG,IAAI,CAAA;YAC7C,sBAAO,cAAc,CAAC,sBAAsB,CAAC,EAAA;;SAC9C,CAAC,CAAA;AACJ,CAAC;AAEQ,kCAAW"}
|
package/requestMatcher.d.ts
DELETED
package/requestMatcher.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requestMatcher.d.ts","sourceRoot":"","sources":["../src/requestMatcher.js"],"names":[],"mappings":"AAIA,iFAyBC"}
|
package/requestMatcher.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getRequestMatcher = void 0;
|
|
7
|
-
var object_hash_1 = __importDefault(require("object-hash"));
|
|
8
|
-
var config_1 = require("./config");
|
|
9
|
-
var getRequestMatcher = function (request) { return function (mockedRequest) {
|
|
10
|
-
var _a = mockedRequest.method, method = _a === void 0 ? 'GET' : _a, path = mockedRequest.path, _b = mockedRequest.host, host = _b === void 0 ? config_1.getConfig().defaultHost : _b, _c = mockedRequest.requestBody, requestBody = _c === void 0 ? undefined : _c, catchParams = mockedRequest.catchParams;
|
|
11
|
-
var url = host + path;
|
|
12
|
-
var isQueryParamsSensitive = !config_1.getConfig().handleQueryParams || catchParams;
|
|
13
|
-
var hasBody = !!request._bodyInit;
|
|
14
|
-
var requestHash = object_hash_1.default({
|
|
15
|
-
url: isQueryParamsSensitive ? request.url : request.url.split('?')[0],
|
|
16
|
-
method: request.method,
|
|
17
|
-
requestBody: hasBody ? JSON.parse(request._bodyInit) : undefined,
|
|
18
|
-
});
|
|
19
|
-
var mockedRequestHash = object_hash_1.default({
|
|
20
|
-
url: isQueryParamsSensitive ? url : url.split('?')[0],
|
|
21
|
-
method: method.toUpperCase(),
|
|
22
|
-
requestBody: requestBody,
|
|
23
|
-
});
|
|
24
|
-
return requestHash === mockedRequestHash;
|
|
25
|
-
}; };
|
|
26
|
-
exports.getRequestMatcher = getRequestMatcher;
|
|
27
|
-
//# sourceMappingURL=requestMatcher.js.map
|
package/requestMatcher.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requestMatcher.js","sourceRoot":"","sources":["../src/requestMatcher.js"],"names":[],"mappings":";;;;;;AAAA,4DAA8B;AAE9B,mCAAoC;AAEpC,IAAM,iBAAiB,GAAG,UAAA,OAAO,IAAI,OAAA,UAAA,aAAa;IAE9C,IAAA,KAKE,aAAa,OALD,EAAd,MAAM,mBAAG,KAAK,KAAA,EACd,IAAI,GAIF,aAAa,KAJX,EACJ,KAGE,aAAa,KAHe,EAA9B,IAAI,mBAAG,kBAAS,EAAE,CAAC,WAAW,KAAA,EAC9B,KAEE,aAAa,YAFQ,EAAvB,WAAW,mBAAG,SAAS,KAAA,EACvB,WAAW,GACT,aAAa,YADJ,CACI;IAEjB,IAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAA;IACvB,IAAM,sBAAsB,GAAG,CAAC,kBAAS,EAAE,CAAC,iBAAiB,IAAI,WAAW,CAAA;IAE5E,IAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAA;IACnC,IAAM,WAAW,GAAG,qBAAI,CAAC;QACvB,GAAG,EAAE,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;KACjE,CAAC,CAAA;IACF,IAAM,iBAAiB,GAAG,qBAAI,CAAC;QAC7B,GAAG,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;QAC5B,WAAW,EAAE,WAAW;KACzB,CAAC,CAAA;IAEF,OAAO,WAAW,KAAK,iBAAiB,CAAA;AAC1C,CAAC,EAzBoC,CAyBpC,CAAA;AAEQ,8CAAiB"}
|
package/wrap.d.ts
DELETED
package/wrap.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../src/wrap.js"],"names":[],"mappings":"AAaA;;;;;;EAWC"}
|