mt-mappersmith
Version:
It is a lightweight rest client for node.js and the browser
1 lines • 5.88 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/mocks/mock-request.js"],"sourcesContent":["import MockAssert from './mock-assert'\nimport Response from '../response'\nimport { isPlainObject } from '../utils/index'\nimport { clone } from '../utils/clone'\nimport { sortedUrl, toSortedQueryString, isSubset } from './mock-utils'\n\n/**\n * @param {number} id\n * @param {object} props\n * @param {string} props.method\n * @param {string|function} props.url\n * @param {string|function} props.body - request body\n * @param {object} props.response\n * @param {string} props.response.body\n * @param {object} props.response.headers\n * @param {integer} props.response.status\n */\nfunction MockRequest(id, props) {\n this.id = id\n\n this.method = props.method || 'get'\n this.urlFunction = typeof props.url === 'function'\n this.url = props.url\n this.bodyFunction = typeof props.body === 'function'\n this.body = this.bodyFunction ? props.body : toSortedQueryString(props.body)\n this.headersFunction = typeof props.headers === 'function'\n this.headers = props.headersFunction ? props.headers : toSortedQueryString(props.headers)\n this.headersObject = props.headers\n this.responseHeaders = props.response.headers || {}\n this.setResponseData(props.response.body)\n this.responseHandler = props.response.handler\n this.statusFunction = typeof props.response.status === 'function'\n this.responseStatus = props.response.status || 200\n\n this.calls = []\n}\n\nMockRequest.prototype = {\n /**\n * If passed a plain object, the data is stringified and the content-type header is set to JSON\n *\n * @public\n */\n setResponseData(responseData) {\n if (isPlainObject(responseData)) {\n this.responseData = JSON.stringify(responseData)\n if (!this.responseHeaders['content-type']) {\n this.responseHeaders['content-type'] = 'application/json'\n }\n } else {\n this.responseData = responseData\n }\n },\n\n /**\n * @return {Response}\n */\n call(request) {\n const assertObject = this.assertObject()\n\n if (this.responseHandler) {\n this.setResponseData(this.responseHandler(request, assertObject))\n }\n\n const status = this.statusFunction\n ? this.responseStatus(request, assertObject)\n : this.responseStatus\n\n this.calls.push(request)\n\n const responseData = clone(this.responseData)\n const responseHeaders = clone(this.responseHeaders)\n return new Response(request, status, responseData, responseHeaders)\n },\n\n /**\n * @return {MockAssert}\n */\n assertObject() {\n return new MockAssert(this.calls)\n },\n\n /**\n * Checks if the request matches with the mock HTTP method, URL, headers and body\n *\n * @return {boolean}\n */\n isExactMatch(request) {\n const bodyMatch = () => {\n if (this.body === undefined) {\n return true\n }\n\n return this.bodyFunction\n ? this.body(request.body())\n : this.body === toSortedQueryString(request.body())\n }\n\n const urlMatch = this.urlFunction\n ? this.url(request.url(), request.params())\n : sortedUrl(this.url) === sortedUrl(request.url())\n\n const headerMatch =\n !this.headers ||\n (this.headersFunction\n ? this.headers(request.headers())\n : isSubset(this.headersObject, request.headers()))\n\n return this.method === request.method() && urlMatch && bodyMatch() && headerMatch\n },\n\n /**\n * Checks if the request partially matches the mock HTTP method and URL\n *\n * @return {boolean}\n */\n isPartialMatch(request) {\n return (\n new RegExp(this.method).test(request.method()) && new RegExp(this.url).test(request.url())\n )\n },\n\n /**\n * @return {MockRequest}\n */\n toMockRequest() {\n return this\n },\n}\n\nexport default MockRequest\n"],"mappings":";AAAA,OAAO,gBAAgB;AACvB,OAAO,cAAc;AACrB,SAAS,qBAAqB;AAC9B,SAAS,aAAa;AACtB,SAAS,WAAW,qBAAqB,gBAAgB;AAazD,SAAS,YAAY,IAAI,OAAO;AAC9B,OAAK,KAAK;AAEV,OAAK,SAAS,MAAM,UAAU;AAC9B,OAAK,cAAc,OAAO,MAAM,QAAQ;AACxC,OAAK,MAAM,MAAM;AACjB,OAAK,eAAe,OAAO,MAAM,SAAS;AAC1C,OAAK,OAAO,KAAK,eAAe,MAAM,OAAO,oBAAoB,MAAM,IAAI;AAC3E,OAAK,kBAAkB,OAAO,MAAM,YAAY;AAChD,OAAK,UAAU,MAAM,kBAAkB,MAAM,UAAU,oBAAoB,MAAM,OAAO;AACxF,OAAK,gBAAgB,MAAM;AAC3B,OAAK,kBAAkB,MAAM,SAAS,WAAW,CAAC;AAClD,OAAK,gBAAgB,MAAM,SAAS,IAAI;AACxC,OAAK,kBAAkB,MAAM,SAAS;AACtC,OAAK,iBAAiB,OAAO,MAAM,SAAS,WAAW;AACvD,OAAK,iBAAiB,MAAM,SAAS,UAAU;AAE/C,OAAK,QAAQ,CAAC;AAChB;AAEA,YAAY,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtB,gBAAgB,cAAc;AAC5B,QAAI,cAAc,YAAY,GAAG;AAC/B,WAAK,eAAe,KAAK,UAAU,YAAY;AAC/C,UAAI,CAAC,KAAK,gBAAgB,cAAc,GAAG;AACzC,aAAK,gBAAgB,cAAc,IAAI;AAAA,MACzC;AAAA,IACF,OAAO;AACL,WAAK,eAAe;AAAA,IACtB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,KAAK,SAAS;AACZ,UAAM,eAAe,KAAK,aAAa;AAEvC,QAAI,KAAK,iBAAiB;AACxB,WAAK,gBAAgB,KAAK,gBAAgB,SAAS,YAAY,CAAC;AAAA,IAClE;AAEA,UAAM,SAAS,KAAK,iBAChB,KAAK,eAAe,SAAS,YAAY,IACzC,KAAK;AAET,SAAK,MAAM,KAAK,OAAO;AAEvB,UAAM,eAAe,MAAM,KAAK,YAAY;AAC5C,UAAM,kBAAkB,MAAM,KAAK,eAAe;AAClD,WAAO,IAAI,SAAS,SAAS,QAAQ,cAAc,eAAe;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe;AACb,WAAO,IAAI,WAAW,KAAK,KAAK;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,SAAS;AACpB,UAAM,YAAY,MAAM;AACtB,UAAI,KAAK,SAAS,QAAW;AAC3B,eAAO;AAAA,MACT;AAEA,aAAO,KAAK,eACR,KAAK,KAAK,QAAQ,KAAK,CAAC,IACxB,KAAK,SAAS,oBAAoB,QAAQ,KAAK,CAAC;AAAA,IACtD;AAEA,UAAM,WAAW,KAAK,cAClB,KAAK,IAAI,QAAQ,IAAI,GAAG,QAAQ,OAAO,CAAC,IACxC,UAAU,KAAK,GAAG,MAAM,UAAU,QAAQ,IAAI,CAAC;AAEnD,UAAM,cACJ,CAAC,KAAK,YACL,KAAK,kBACF,KAAK,QAAQ,QAAQ,QAAQ,CAAC,IAC9B,SAAS,KAAK,eAAe,QAAQ,QAAQ,CAAC;AAEpD,WAAO,KAAK,WAAW,QAAQ,OAAO,KAAK,YAAY,UAAU,KAAK;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,eAAe,SAAS;AACtB,WACE,IAAI,OAAO,KAAK,MAAM,EAAE,KAAK,QAAQ,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,GAAG,EAAE,KAAK,QAAQ,IAAI,CAAC;AAAA,EAE7F;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB;AACd,WAAO;AAAA,EACT;AACF;AAEA,IAAO,uBAAQ;","names":[]}