@thisisagile/easy-test
Version:
Straightforward library for testing microservices built with @thisisagile/easy
1 lines • 4.26 kB
Source Map (JSON)
{"version":3,"sources":["../../src/matchers/HttpMatchers.ts"],"sourcesContent":["import { Response } from '../utils/Response';\nimport { match } from './Match';\n\nexport const toHaveStatus = (res: Response, code: number): jest.CustomMatcherResult =>\n match<Response>(res)\n .undefined(r => r, 'Response is unknown.')\n .undefined(\n r => r?.status?.id,\n () => 'Response does not have a status code'\n )\n .not(\n r => r.status.id === code,\n r => `Response does not have code '${code}', but has code '${r.status.id}' instead.`\n )\n .else(`Response does have status code '${code}'.`);\n\nexport const toBeOk = (res: Response): jest.CustomMatcherResult => toHaveStatus(res, 200);\n\nexport const toBeCreated = (res: Response): jest.CustomMatcherResult => toHaveStatus(res, 201);\n\nexport const toHaveNoContent = (res: Response): jest.CustomMatcherResult => toHaveStatus(res, 204);\n\nexport const toBeBadRequest = (res: Response): jest.CustomMatcherResult => toHaveStatus(res, 400);\n\nexport const toBeUnauthorized = (res: Response): jest.CustomMatcherResult => toHaveStatus(res, 401);\n\nexport const toBeForbidden = (res: Response): jest.CustomMatcherResult => toHaveStatus(res, 403);\n\nexport const toBeNotFound = (res: Response): jest.CustomMatcherResult => toHaveStatus(res, 404);\n\nexport const toBeConflict = (res: Response): jest.CustomMatcherResult => toHaveStatus(res, 409);\n\nexport const toBeInternalServerError = (res: Response): jest.CustomMatcherResult => toHaveStatus(res, 500);\n\nexport const toBeBadGateway = (res: Response): jest.CustomMatcherResult => toHaveStatus(res, 502);\n\nexport const toBeOkWithItems = (res: Response, length: number): jest.CustomMatcherResult =>\n match<Response>(res)\n .undefined(r => r.status?.id, 'Response did not have a status')\n .not(\n r => r.status.id === 200,\n r => `Response did not have status '200'. It had status '${r.status.id}' instead.`\n )\n .undefined(r => r?.body?.data?.items, `Response did not have any items.`)\n .not(\n r => (r?.body?.data?.itemCount ?? 0) >= length,\n r => `Response did not have at least ${length} items. It only had ${r?.body?.data?.itemCount ?? 0} items.`\n )\n .else(`Response had status 200 and at least ${length} items`);\n\nexpect.extend({\n toBeOk,\n toBeOkWithItems,\n toBeCreated,\n toHaveNoContent,\n toBeNotFound,\n toBeBadRequest,\n toBeUnauthorized,\n toBeForbidden,\n toBeConflict,\n toBeInternalServerError,\n toHaveStatus,\n toBeBadGateway,\n});\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace jest {\n interface Matchers<R, T> {\n toBeOk(): R;\n toBeOkWithItems(length: number): R;\n toBeCreated(): R;\n toHaveNoContent(): R;\n toBeNotFound(): R;\n toBeUnauthorized(): R;\n toBeForbidden(): R;\n toBeBadRequest(): R;\n toBeConflict(): R;\n toBeInternalServerError(): R;\n toBeBadGateway(): R;\n toHaveStatus(code: number): R;\n }\n }\n}\n"],"mappings":";;;;;;;AAGO,IAAM,eAAe,CAAC,KAAe,SAC1C,MAAgB,GAAG,EAChB,UAAU,OAAK,GAAG,sBAAsB,EACxC;AAAA,EACC,OAAK,GAAG,QAAQ;AAAA,EAChB,MAAM;AACR,EACC;AAAA,EACC,OAAK,EAAE,OAAO,OAAO;AAAA,EACrB,OAAK,gCAAgC,IAAI,oBAAoB,EAAE,OAAO,EAAE;AAC1E,EACC,KAAK,mCAAmC,IAAI,IAAI;AAE9C,IAAM,SAAS,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEjF,IAAM,cAAc,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEtF,IAAM,kBAAkB,CAAC,QAA4C,aAAa,KAAK,GAAG;AAE1F,IAAM,iBAAiB,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEzF,IAAM,mBAAmB,CAAC,QAA4C,aAAa,KAAK,GAAG;AAE3F,IAAM,gBAAgB,CAAC,QAA4C,aAAa,KAAK,GAAG;AAExF,IAAM,eAAe,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEvF,IAAM,eAAe,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEvF,IAAM,0BAA0B,CAAC,QAA4C,aAAa,KAAK,GAAG;AAElG,IAAM,iBAAiB,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEzF,IAAM,kBAAkB,CAAC,KAAe,WAC7C,MAAgB,GAAG,EAChB,UAAU,OAAK,EAAE,QAAQ,IAAI,gCAAgC,EAC7D;AAAA,EACC,OAAK,EAAE,OAAO,OAAO;AAAA,EACrB,OAAK,sDAAsD,EAAE,OAAO,EAAE;AACxE,EACC,UAAU,OAAK,GAAG,MAAM,MAAM,OAAO,kCAAkC,EACvE;AAAA,EACC,QAAM,GAAG,MAAM,MAAM,aAAa,MAAM;AAAA,EACxC,OAAK,kCAAkC,MAAM,uBAAuB,GAAG,MAAM,MAAM,aAAa,CAAC;AACnG,EACC,KAAK,wCAAwC,MAAM,QAAQ;AAEhE,OAAO,OAAO;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;","names":[]}