@thisisagile/easy-test 15.8.6 → 15.8.8

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.
Files changed (148) hide show
  1. package/dist/index.d.ts +2 -379
  2. package/dist/index.js +25 -3
  3. package/dist/index.js.map +1 -0
  4. package/dist/index.mjs +3 -3
  5. package/dist/index.mjs.map +1 -0
  6. package/dist/matchers/Check.d.ts +17 -0
  7. package/dist/matchers/Check.js +64 -0
  8. package/dist/matchers/Check.js.map +1 -0
  9. package/dist/matchers/Check.mjs +39 -0
  10. package/dist/matchers/Check.mjs.map +1 -0
  11. package/dist/matchers/HttpMatchers.d.ts +31 -0
  12. package/dist/matchers/HttpMatchers.js +89 -0
  13. package/dist/matchers/HttpMatchers.js.map +1 -0
  14. package/dist/matchers/HttpMatchers.mjs +54 -0
  15. package/dist/matchers/HttpMatchers.mjs.map +1 -0
  16. package/dist/matchers/Match.d.ts +12 -0
  17. package/dist/matchers/Match.js +59 -0
  18. package/dist/matchers/Match.js.map +1 -0
  19. package/dist/matchers/Match.mjs +34 -0
  20. package/dist/matchers/Match.mjs.map +1 -0
  21. package/dist/matchers/ResultMatchers.d.ts +13 -0
  22. package/dist/matchers/ResultMatchers.js +51 -0
  23. package/dist/matchers/ResultMatchers.js.map +1 -0
  24. package/dist/matchers/ResultMatchers.mjs +25 -0
  25. package/dist/matchers/ResultMatchers.mjs.map +1 -0
  26. package/dist/matchers/index.d.ts +19 -0
  27. package/dist/matchers/index.js +59 -0
  28. package/dist/matchers/index.js.map +1 -0
  29. package/dist/matchers/index.mjs +20 -0
  30. package/dist/matchers/index.mjs.map +1 -0
  31. package/dist/matchers/toBeArrayOf.d.ts +9 -0
  32. package/dist/matchers/toBeArrayOf.js +33 -0
  33. package/dist/matchers/toBeArrayOf.js.map +1 -0
  34. package/dist/matchers/toBeArrayOf.mjs +9 -0
  35. package/dist/matchers/toBeArrayOf.mjs.map +1 -0
  36. package/dist/matchers/toBeArrayOfWithLength.d.ts +9 -0
  37. package/dist/matchers/toBeArrayOfWithLength.js +36 -0
  38. package/dist/matchers/toBeArrayOfWithLength.js.map +1 -0
  39. package/dist/matchers/toBeArrayOfWithLength.mjs +12 -0
  40. package/dist/matchers/toBeArrayOfWithLength.mjs.map +1 -0
  41. package/dist/matchers/toBeAt.d.ts +9 -0
  42. package/dist/matchers/toBeAt.js +44 -0
  43. package/dist/matchers/toBeAt.js.map +1 -0
  44. package/dist/matchers/toBeAt.mjs +20 -0
  45. package/dist/matchers/toBeAt.mjs.map +1 -0
  46. package/dist/matchers/toBeExactlyAt.d.ts +9 -0
  47. package/dist/matchers/toBeExactlyAt.js +43 -0
  48. package/dist/matchers/toBeExactlyAt.js.map +1 -0
  49. package/dist/matchers/toBeExactlyAt.mjs +19 -0
  50. package/dist/matchers/toBeExactlyAt.mjs.map +1 -0
  51. package/dist/matchers/toBeQueriedWith.d.ts +9 -0
  52. package/dist/matchers/toBeQueriedWith.js +36 -0
  53. package/dist/matchers/toBeQueriedWith.js.map +1 -0
  54. package/dist/matchers/toBeQueriedWith.mjs +12 -0
  55. package/dist/matchers/toBeQueriedWith.mjs.map +1 -0
  56. package/dist/matchers/toBeRoutedTo.d.ts +9 -0
  57. package/dist/matchers/toBeRoutedTo.js +37 -0
  58. package/dist/matchers/toBeRoutedTo.js.map +1 -0
  59. package/dist/matchers/toBeRoutedTo.mjs +13 -0
  60. package/dist/matchers/toBeRoutedTo.mjs.map +1 -0
  61. package/dist/matchers/toBeValid.d.ts +8 -0
  62. package/dist/matchers/toBeValid.js +34 -0
  63. package/dist/matchers/toBeValid.js.map +1 -0
  64. package/dist/matchers/toBeValid.mjs +10 -0
  65. package/dist/matchers/toBeValid.mjs.map +1 -0
  66. package/dist/matchers/toFailMatcher.d.ts +19 -0
  67. package/dist/matchers/toFailMatcher.js +59 -0
  68. package/dist/matchers/toFailMatcher.js.map +1 -0
  69. package/dist/matchers/toFailMatcher.mjs +32 -0
  70. package/dist/matchers/toFailMatcher.mjs.map +1 -0
  71. package/dist/matchers/toMatchArray.d.ts +9 -0
  72. package/dist/matchers/toMatchArray.js +35 -0
  73. package/dist/matchers/toMatchArray.js.map +1 -0
  74. package/dist/matchers/toMatchArray.mjs +11 -0
  75. package/dist/matchers/toMatchArray.mjs.map +1 -0
  76. package/dist/matchers/toMatchExactJson.d.ts +14 -0
  77. package/dist/matchers/toMatchExactJson.js +42 -0
  78. package/dist/matchers/toMatchExactJson.js.map +1 -0
  79. package/dist/matchers/toMatchExactJson.mjs +17 -0
  80. package/dist/matchers/toMatchExactJson.mjs.map +1 -0
  81. package/dist/matchers/toMatchException.d.ts +9 -0
  82. package/dist/matchers/toMatchException.js +43 -0
  83. package/dist/matchers/toMatchException.js.map +1 -0
  84. package/dist/matchers/toMatchException.mjs +19 -0
  85. package/dist/matchers/toMatchException.mjs.map +1 -0
  86. package/dist/matchers/toMatchJson.d.ts +14 -0
  87. package/dist/matchers/toMatchJson.js +43 -0
  88. package/dist/matchers/toMatchJson.js.map +1 -0
  89. package/dist/matchers/toMatchJson.mjs +18 -0
  90. package/dist/matchers/toMatchJson.mjs.map +1 -0
  91. package/dist/matchers/toMatchRoute.d.ts +9 -0
  92. package/dist/matchers/toMatchRoute.js +37 -0
  93. package/dist/matchers/toMatchRoute.js.map +1 -0
  94. package/dist/matchers/toMatchRoute.mjs +13 -0
  95. package/dist/matchers/toMatchRoute.mjs.map +1 -0
  96. package/dist/matchers/toMatchText.d.ts +8 -0
  97. package/dist/matchers/toMatchText.js +37 -0
  98. package/dist/matchers/toMatchText.js.map +1 -0
  99. package/dist/matchers/toMatchText.mjs +13 -0
  100. package/dist/matchers/toMatchText.mjs.map +1 -0
  101. package/dist/matchers/toPassMatcher.d.ts +19 -0
  102. package/dist/matchers/toPassMatcher.js +59 -0
  103. package/dist/matchers/toPassMatcher.js.map +1 -0
  104. package/dist/matchers/toPassMatcher.mjs +32 -0
  105. package/dist/matchers/toPassMatcher.mjs.map +1 -0
  106. package/dist/mock/Fits.d.ts +24 -0
  107. package/dist/mock/Fits.js +71 -0
  108. package/dist/mock/Fits.js.map +1 -0
  109. package/dist/mock/Fits.mjs +44 -0
  110. package/dist/mock/Fits.mjs.map +1 -0
  111. package/dist/mock/Mocks.d.ts +39 -0
  112. package/dist/mock/Mocks.js +98 -0
  113. package/dist/mock/Mocks.js.map +1 -0
  114. package/dist/mock/Mocks.mjs +73 -0
  115. package/dist/mock/Mocks.mjs.map +1 -0
  116. package/dist/mock/index.d.ts +2 -0
  117. package/dist/mock/index.js +25 -0
  118. package/dist/mock/index.js.map +1 -0
  119. package/dist/mock/index.mjs +3 -0
  120. package/dist/mock/index.mjs.map +1 -0
  121. package/dist/utils/Eq.d.ts +5 -0
  122. package/dist/utils/Eq.js +35 -0
  123. package/dist/utils/Eq.js.map +1 -0
  124. package/dist/utils/Eq.mjs +11 -0
  125. package/dist/utils/Eq.mjs.map +1 -0
  126. package/dist/utils/Req.d.ts +14 -0
  127. package/dist/utils/Req.js +57 -0
  128. package/dist/utils/Req.js.map +1 -0
  129. package/dist/utils/Req.mjs +33 -0
  130. package/dist/utils/Req.mjs.map +1 -0
  131. package/dist/utils/Response.d.ts +25 -0
  132. package/dist/utils/Response.js +17 -0
  133. package/dist/utils/Response.js.map +1 -0
  134. package/dist/utils/Response.mjs +1 -0
  135. package/dist/utils/Response.mjs.map +1 -0
  136. package/dist/utils/Types.d.ts +44 -0
  137. package/dist/utils/Types.js +30 -0
  138. package/dist/utils/Types.js.map +1 -0
  139. package/dist/utils/Types.mjs +6 -0
  140. package/dist/utils/Types.mjs.map +1 -0
  141. package/dist/utils/Utils.d.ts +12 -0
  142. package/dist/utils/Utils.js +62 -0
  143. package/dist/utils/Utils.js.map +1 -0
  144. package/dist/utils/Utils.mjs +28 -0
  145. package/dist/utils/Utils.mjs.map +1 -0
  146. package/package.json +2 -2
  147. package/src/utils/Req.ts +7 -10
  148. package/dist/index.d.mts +0 -379
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var HttpMatchers_exports = {};
20
+ __export(HttpMatchers_exports, {
21
+ toBeBadGateway: () => toBeBadGateway,
22
+ toBeBadRequest: () => toBeBadRequest,
23
+ toBeConflict: () => toBeConflict,
24
+ toBeCreated: () => toBeCreated,
25
+ toBeForbidden: () => toBeForbidden,
26
+ toBeInternalServerError: () => toBeInternalServerError,
27
+ toBeNotFound: () => toBeNotFound,
28
+ toBeOk: () => toBeOk,
29
+ toBeOkWithItems: () => toBeOkWithItems,
30
+ toBeUnauthorized: () => toBeUnauthorized,
31
+ toHaveNoContent: () => toHaveNoContent,
32
+ toHaveStatus: () => toHaveStatus
33
+ });
34
+ module.exports = __toCommonJS(HttpMatchers_exports);
35
+ var import_Match = require("./Match");
36
+ const toHaveStatus = (res, code) => (0, import_Match.match)(res).undefined((r) => r, "Response is unknown.").undefined(
37
+ (r) => r?.status?.id,
38
+ () => "Response does not have a status code"
39
+ ).not(
40
+ (r) => r.status.id === code,
41
+ (r) => `Response does not have code '${code}', but has code '${r.status.id}' instead.`
42
+ ).else(`Response does have status code '${code}'.`);
43
+ const toBeOk = (res) => toHaveStatus(res, 200);
44
+ const toBeCreated = (res) => toHaveStatus(res, 201);
45
+ const toHaveNoContent = (res) => toHaveStatus(res, 204);
46
+ const toBeBadRequest = (res) => toHaveStatus(res, 400);
47
+ const toBeUnauthorized = (res) => toHaveStatus(res, 401);
48
+ const toBeForbidden = (res) => toHaveStatus(res, 403);
49
+ const toBeNotFound = (res) => toHaveStatus(res, 404);
50
+ const toBeConflict = (res) => toHaveStatus(res, 409);
51
+ const toBeInternalServerError = (res) => toHaveStatus(res, 500);
52
+ const toBeBadGateway = (res) => toHaveStatus(res, 502);
53
+ const toBeOkWithItems = (res, length) => (0, import_Match.match)(res).undefined((r) => r.status?.id, "Response did not have a status").not(
54
+ (r) => r.status.id === 200,
55
+ (r) => `Response did not have status '200'. It had status '${r.status.id}' instead.`
56
+ ).undefined((r) => r?.body?.data?.items, `Response did not have any items.`).not(
57
+ (r) => (r?.body?.data?.itemCount ?? 0) >= length,
58
+ (r) => `Response did not have at least ${length} items. It only had ${r?.body?.data?.itemCount ?? 0} items.`
59
+ ).else(`Response had status 200 and at least ${length} items`);
60
+ expect.extend({
61
+ toBeOk,
62
+ toBeOkWithItems,
63
+ toBeCreated,
64
+ toHaveNoContent,
65
+ toBeNotFound,
66
+ toBeBadRequest,
67
+ toBeUnauthorized,
68
+ toBeForbidden,
69
+ toBeConflict,
70
+ toBeInternalServerError,
71
+ toHaveStatus,
72
+ toBeBadGateway
73
+ });
74
+ // Annotate the CommonJS export names for ESM import in node:
75
+ 0 && (module.exports = {
76
+ toBeBadGateway,
77
+ toBeBadRequest,
78
+ toBeConflict,
79
+ toBeCreated,
80
+ toBeForbidden,
81
+ toBeInternalServerError,
82
+ toBeNotFound,
83
+ toBeOk,
84
+ toBeOkWithItems,
85
+ toBeUnauthorized,
86
+ toHaveNoContent,
87
+ toHaveStatus
88
+ });
89
+ //# sourceMappingURL=HttpMatchers.js.map
@@ -0,0 +1 @@
1
+ {"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":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAsB;AAEf,MAAM,eAAe,CAAC,KAAe,aAC1C,oBAAgB,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,MAAM,SAAS,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEjF,MAAM,cAAc,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEtF,MAAM,kBAAkB,CAAC,QAA4C,aAAa,KAAK,GAAG;AAE1F,MAAM,iBAAiB,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEzF,MAAM,mBAAmB,CAAC,QAA4C,aAAa,KAAK,GAAG;AAE3F,MAAM,gBAAgB,CAAC,QAA4C,aAAa,KAAK,GAAG;AAExF,MAAM,eAAe,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEvF,MAAM,eAAe,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEvF,MAAM,0BAA0B,CAAC,QAA4C,aAAa,KAAK,GAAG;AAElG,MAAM,iBAAiB,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEzF,MAAM,kBAAkB,CAAC,KAAe,eAC7C,oBAAgB,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":[]}
@@ -0,0 +1,54 @@
1
+ import { match } from "./Match";
2
+ const toHaveStatus = (res, code) => match(res).undefined((r) => r, "Response is unknown.").undefined(
3
+ (r) => r?.status?.id,
4
+ () => "Response does not have a status code"
5
+ ).not(
6
+ (r) => r.status.id === code,
7
+ (r) => `Response does not have code '${code}', but has code '${r.status.id}' instead.`
8
+ ).else(`Response does have status code '${code}'.`);
9
+ const toBeOk = (res) => toHaveStatus(res, 200);
10
+ const toBeCreated = (res) => toHaveStatus(res, 201);
11
+ const toHaveNoContent = (res) => toHaveStatus(res, 204);
12
+ const toBeBadRequest = (res) => toHaveStatus(res, 400);
13
+ const toBeUnauthorized = (res) => toHaveStatus(res, 401);
14
+ const toBeForbidden = (res) => toHaveStatus(res, 403);
15
+ const toBeNotFound = (res) => toHaveStatus(res, 404);
16
+ const toBeConflict = (res) => toHaveStatus(res, 409);
17
+ const toBeInternalServerError = (res) => toHaveStatus(res, 500);
18
+ const toBeBadGateway = (res) => toHaveStatus(res, 502);
19
+ const toBeOkWithItems = (res, length) => match(res).undefined((r) => r.status?.id, "Response did not have a status").not(
20
+ (r) => r.status.id === 200,
21
+ (r) => `Response did not have status '200'. It had status '${r.status.id}' instead.`
22
+ ).undefined((r) => r?.body?.data?.items, `Response did not have any items.`).not(
23
+ (r) => (r?.body?.data?.itemCount ?? 0) >= length,
24
+ (r) => `Response did not have at least ${length} items. It only had ${r?.body?.data?.itemCount ?? 0} items.`
25
+ ).else(`Response had status 200 and at least ${length} items`);
26
+ expect.extend({
27
+ toBeOk,
28
+ toBeOkWithItems,
29
+ toBeCreated,
30
+ toHaveNoContent,
31
+ toBeNotFound,
32
+ toBeBadRequest,
33
+ toBeUnauthorized,
34
+ toBeForbidden,
35
+ toBeConflict,
36
+ toBeInternalServerError,
37
+ toHaveStatus,
38
+ toBeBadGateway
39
+ });
40
+ export {
41
+ toBeBadGateway,
42
+ toBeBadRequest,
43
+ toBeConflict,
44
+ toBeCreated,
45
+ toBeForbidden,
46
+ toBeInternalServerError,
47
+ toBeNotFound,
48
+ toBeOk,
49
+ toBeOkWithItems,
50
+ toBeUnauthorized,
51
+ toHaveNoContent,
52
+ toHaveStatus
53
+ };
54
+ //# sourceMappingURL=HttpMatchers.mjs.map
@@ -0,0 +1 @@
1
+ {"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":"AACA,SAAS,aAAa;AAEf,MAAM,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,MAAM,SAAS,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEjF,MAAM,cAAc,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEtF,MAAM,kBAAkB,CAAC,QAA4C,aAAa,KAAK,GAAG;AAE1F,MAAM,iBAAiB,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEzF,MAAM,mBAAmB,CAAC,QAA4C,aAAa,KAAK,GAAG;AAE3F,MAAM,gBAAgB,CAAC,QAA4C,aAAa,KAAK,GAAG;AAExF,MAAM,eAAe,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEvF,MAAM,eAAe,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEvF,MAAM,0BAA0B,CAAC,QAA4C,aAAa,KAAK,GAAG;AAElG,MAAM,iBAAiB,CAAC,QAA4C,aAAa,KAAK,GAAG;AAEzF,MAAM,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":[]}
@@ -0,0 +1,12 @@
1
+ /// <reference types="jest" />
2
+ import { Message } from '../utils/Types';
3
+ export declare class Match<S> {
4
+ private readonly subject;
5
+ private readonly failed;
6
+ private readonly message;
7
+ constructor(subject: S, failed?: boolean, message?: Message<S>);
8
+ not(p: (s: S) => boolean, message: Message<S>): Match<S>;
9
+ undefined(p: (s: S) => any, message: Message<S>): Match<S>;
10
+ else(message: Message<S>): jest.CustomMatcherResult;
11
+ }
12
+ export declare const match: <S>(subject: S) => Match<S>;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var Match_exports = {};
20
+ __export(Match_exports, {
21
+ Match: () => Match,
22
+ match: () => match
23
+ });
24
+ module.exports = __toCommonJS(Match_exports);
25
+ var import_Utils = require("../utils/Utils");
26
+ var import_Types = require("../utils/Types");
27
+ class Match {
28
+ constructor(subject, failed = false, message = "") {
29
+ this.subject = subject;
30
+ this.failed = failed;
31
+ this.message = message;
32
+ }
33
+ not(p, message) {
34
+ if (this.failed) {
35
+ return this;
36
+ }
37
+ try {
38
+ return new Match(this.subject, !p(this.subject), (0, import_Types.toMessage)(message, this.subject));
39
+ } catch (e) {
40
+ return new Match(this.subject, true, e.message);
41
+ }
42
+ }
43
+ undefined(p, message) {
44
+ return this.not(() => (0, import_Utils.isDefined)(p(this.subject)), message);
45
+ }
46
+ else(message) {
47
+ return {
48
+ pass: !this.failed,
49
+ message: () => this.failed ? (0, import_Types.toMessage)(this.message) : `${(0, import_Types.toMessage)(message, this.subject)}, which we did not expect.`
50
+ };
51
+ }
52
+ }
53
+ const match = (subject) => new Match(subject);
54
+ // Annotate the CommonJS export names for ESM import in node:
55
+ 0 && (module.exports = {
56
+ Match,
57
+ match
58
+ });
59
+ //# sourceMappingURL=Match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/matchers/Match.ts"],"sourcesContent":["import { isDefined } from '../utils/Utils';\nimport { Message, toMessage } from '../utils/Types';\n\nexport class Match<S> {\n constructor(private readonly subject: S, private readonly failed = false, private readonly message: Message<S> = '') {}\n\n not(p: (s: S) => boolean, message: Message<S>): Match<S> {\n if (this.failed) {\n return this;\n }\n try {\n return new Match<S>(this.subject, !p(this.subject), toMessage(message, this.subject));\n } catch (e: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new Match<S>(this.subject, true, e.message);\n }\n }\n\n undefined(p: (s: S) => any, message: Message<S>): Match<S> {\n return this.not(() => isDefined(p(this.subject)), message);\n }\n\n else(message: Message<S>): jest.CustomMatcherResult {\n return {\n pass: !this.failed,\n message: () => (this.failed ? toMessage(this.message) : `${toMessage(message, this.subject)}, which we did not expect.`),\n };\n }\n}\n\nexport const match = <S>(subject: S): Match<S> => new Match<S>(subject);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA0B;AAC1B,mBAAmC;AAE5B,MAAM,MAAS;AAAA,EACpB,YAA6B,SAA6B,SAAS,OAAwB,UAAsB,IAAI;AAAxF;AAA6B;AAAiC;AAAA,EAA2B;AAAA,EAEtH,IAAI,GAAsB,SAA+B;AACvD,QAAI,KAAK,QAAQ;AACf,aAAO;AAAA,IACT;AACA,QAAI;AACF,aAAO,IAAI,MAAS,KAAK,SAAS,CAAC,EAAE,KAAK,OAAO,OAAG,wBAAU,SAAS,KAAK,OAAO,CAAC;AAAA,IACtF,SAAS,GAAQ;AAEf,aAAO,IAAI,MAAS,KAAK,SAAS,MAAM,EAAE,OAAO;AAAA,IACnD;AAAA,EACF;AAAA,EAEA,UAAU,GAAkB,SAA+B;AACzD,WAAO,KAAK,IAAI,UAAM,wBAAU,EAAE,KAAK,OAAO,CAAC,GAAG,OAAO;AAAA,EAC3D;AAAA,EAEA,KAAK,SAA+C;AAClD,WAAO;AAAA,MACL,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS,MAAO,KAAK,aAAS,wBAAU,KAAK,OAAO,IAAI,OAAG,wBAAU,SAAS,KAAK,OAAO,CAAC;AAAA,IAC7F;AAAA,EACF;AACF;AAEO,MAAM,QAAQ,CAAI,YAAyB,IAAI,MAAS,OAAO;","names":[]}
@@ -0,0 +1,34 @@
1
+ import { isDefined } from "../utils/Utils";
2
+ import { toMessage } from "../utils/Types";
3
+ class Match {
4
+ constructor(subject, failed = false, message = "") {
5
+ this.subject = subject;
6
+ this.failed = failed;
7
+ this.message = message;
8
+ }
9
+ not(p, message) {
10
+ if (this.failed) {
11
+ return this;
12
+ }
13
+ try {
14
+ return new Match(this.subject, !p(this.subject), toMessage(message, this.subject));
15
+ } catch (e) {
16
+ return new Match(this.subject, true, e.message);
17
+ }
18
+ }
19
+ undefined(p, message) {
20
+ return this.not(() => isDefined(p(this.subject)), message);
21
+ }
22
+ else(message) {
23
+ return {
24
+ pass: !this.failed,
25
+ message: () => this.failed ? toMessage(this.message) : `${toMessage(message, this.subject)}, which we did not expect.`
26
+ };
27
+ }
28
+ }
29
+ const match = (subject) => new Match(subject);
30
+ export {
31
+ Match,
32
+ match
33
+ };
34
+ //# sourceMappingURL=Match.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/matchers/Match.ts"],"sourcesContent":["import { isDefined } from '../utils/Utils';\nimport { Message, toMessage } from '../utils/Types';\n\nexport class Match<S> {\n constructor(private readonly subject: S, private readonly failed = false, private readonly message: Message<S> = '') {}\n\n not(p: (s: S) => boolean, message: Message<S>): Match<S> {\n if (this.failed) {\n return this;\n }\n try {\n return new Match<S>(this.subject, !p(this.subject), toMessage(message, this.subject));\n } catch (e: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new Match<S>(this.subject, true, e.message);\n }\n }\n\n undefined(p: (s: S) => any, message: Message<S>): Match<S> {\n return this.not(() => isDefined(p(this.subject)), message);\n }\n\n else(message: Message<S>): jest.CustomMatcherResult {\n return {\n pass: !this.failed,\n message: () => (this.failed ? toMessage(this.message) : `${toMessage(message, this.subject)}, which we did not expect.`),\n };\n }\n}\n\nexport const match = <S>(subject: S): Match<S> => new Match<S>(subject);\n"],"mappings":"AAAA,SAAS,iBAAiB;AAC1B,SAAkB,iBAAiB;AAE5B,MAAM,MAAS;AAAA,EACpB,YAA6B,SAA6B,SAAS,OAAwB,UAAsB,IAAI;AAAxF;AAA6B;AAAiC;AAAA,EAA2B;AAAA,EAEtH,IAAI,GAAsB,SAA+B;AACvD,QAAI,KAAK,QAAQ;AACf,aAAO;AAAA,IACT;AACA,QAAI;AACF,aAAO,IAAI,MAAS,KAAK,SAAS,CAAC,EAAE,KAAK,OAAO,GAAG,UAAU,SAAS,KAAK,OAAO,CAAC;AAAA,IACtF,SAAS,GAAQ;AAEf,aAAO,IAAI,MAAS,KAAK,SAAS,MAAM,EAAE,OAAO;AAAA,IACnD;AAAA,EACF;AAAA,EAEA,UAAU,GAAkB,SAA+B;AACzD,WAAO,KAAK,IAAI,MAAM,UAAU,EAAE,KAAK,OAAO,CAAC,GAAG,OAAO;AAAA,EAC3D;AAAA,EAEA,KAAK,SAA+C;AAClD,WAAO;AAAA,MACL,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS,MAAO,KAAK,SAAS,UAAU,KAAK,OAAO,IAAI,GAAG,UAAU,SAAS,KAAK,OAAO,CAAC;AAAA,IAC7F;AAAA,EACF;AACF;AAEO,MAAM,QAAQ,CAAI,YAAyB,IAAI,MAAS,OAAO;","names":[]}
@@ -0,0 +1,13 @@
1
+ import { Results } from '../utils/Types';
2
+ export declare const toResultWith: (results: Results, message: string) => jest.CustomMatcherResult;
3
+ export declare const toFail: (results: Results) => jest.CustomMatcherResult;
4
+ export declare const toFailWith: (results: Results, message: string) => jest.CustomMatcherResult;
5
+ declare global {
6
+ namespace jest {
7
+ interface Matchers<R, T> {
8
+ toResultWith(message: string): R;
9
+ toFail(): R;
10
+ toFailWith(message: string): R;
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var ResultMatchers_exports = {};
20
+ __export(ResultMatchers_exports, {
21
+ toFail: () => toFail,
22
+ toFailWith: () => toFailWith,
23
+ toResultWith: () => toResultWith
24
+ });
25
+ module.exports = __toCommonJS(ResultMatchers_exports);
26
+ var import_Match = require("./Match");
27
+ const notDefined = "Results is not defined.";
28
+ const doesNotFail = "Results does not fail.";
29
+ const hasMessage = (res, message) => res.results.some((r) => r.message === message);
30
+ const messages = (res) => "'" + res?.results.map((r) => r.message).join("', '") + "'";
31
+ const toResultWith = (results, message) => (0, import_Match.match)(results).undefined((r) => r, notDefined).not(
32
+ (r) => hasMessage(r, message),
33
+ (r) => `Results does not have message '${message}', but it has messages ${messages(r)} instead.`
34
+ ).else(`Succeeds with message ${message}`);
35
+ const toFail = (results) => (0, import_Match.match)(results).undefined((r) => r, notDefined).not((r) => !r.isValid, doesNotFail).else("Results does not fail");
36
+ const toFailWith = (results, message) => (0, import_Match.match)(results).undefined((r) => r, notDefined).not((r) => !r.isValid, doesNotFail).not(
37
+ (r) => hasMessage(r, message),
38
+ (r) => `Fails, but results does not have message '${message}', but it has messages ${messages(r)} instead.`
39
+ ).else(`Fails with message '${message}'`);
40
+ expect.extend({
41
+ toResultWith,
42
+ toFail,
43
+ toFailWith
44
+ });
45
+ // Annotate the CommonJS export names for ESM import in node:
46
+ 0 && (module.exports = {
47
+ toFail,
48
+ toFailWith,
49
+ toResultWith
50
+ });
51
+ //# sourceMappingURL=ResultMatchers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/matchers/ResultMatchers.ts"],"sourcesContent":["import { match } from './Match';\nimport { Results } from '../utils/Types';\n\n// Tests for handling Results.\n\nconst notDefined = 'Results is not defined.';\nconst doesNotFail = 'Results does not fail.';\n\nconst hasMessage = (res: Results, message: string) => res.results.some((r: any) => r.message === message);\n\nconst messages = (res: Results): string => \"'\" + res?.results.map(r => r.message).join(\"', '\") + \"'\";\n\nexport const toResultWith = (results: Results, message: string): jest.CustomMatcherResult =>\n match(results)\n .undefined(r => r, notDefined)\n .not(\n r => hasMessage(r, message),\n r => `Results does not have message '${message}', but it has messages ${messages(r)} instead.`\n )\n .else(`Succeeds with message ${message}`);\n\nexport const toFail = (results: Results): jest.CustomMatcherResult =>\n match(results)\n .undefined(r => r, notDefined)\n .not(r => !r.isValid, doesNotFail)\n .else('Results does not fail');\n\nexport const toFailWith = (results: Results, message: string): jest.CustomMatcherResult =>\n match(results)\n .undefined(r => r, notDefined)\n .not(r => !r.isValid, doesNotFail)\n .not(\n r => hasMessage(r, message),\n r => `Fails, but results does not have message '${message}', but it has messages ${messages(r)} instead.`\n )\n .else(`Fails with message '${message}'`);\n\nexpect.extend({\n toResultWith,\n toFail: toFail,\n toFailWith: toFailWith,\n});\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace jest {\n interface Matchers<R, T> {\n toResultWith(message: string): R;\n toFail(): R;\n toFailWith(message: string): R;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAsB;AAKtB,MAAM,aAAa;AACnB,MAAM,cAAc;AAEpB,MAAM,aAAa,CAAC,KAAc,YAAoB,IAAI,QAAQ,KAAK,CAAC,MAAW,EAAE,YAAY,OAAO;AAExG,MAAM,WAAW,CAAC,QAAyB,MAAM,KAAK,QAAQ,IAAI,OAAK,EAAE,OAAO,EAAE,KAAK,MAAM,IAAI;AAE1F,MAAM,eAAe,CAAC,SAAkB,gBAC7C,oBAAM,OAAO,EACV,UAAU,OAAK,GAAG,UAAU,EAC5B;AAAA,EACC,OAAK,WAAW,GAAG,OAAO;AAAA,EAC1B,OAAK,kCAAkC,OAAO,0BAA0B,SAAS,CAAC,CAAC;AACrF,EACC,KAAK,yBAAyB,OAAO,EAAE;AAErC,MAAM,SAAS,CAAC,gBACrB,oBAAM,OAAO,EACV,UAAU,OAAK,GAAG,UAAU,EAC5B,IAAI,OAAK,CAAC,EAAE,SAAS,WAAW,EAChC,KAAK,uBAAuB;AAE1B,MAAM,aAAa,CAAC,SAAkB,gBAC3C,oBAAM,OAAO,EACV,UAAU,OAAK,GAAG,UAAU,EAC5B,IAAI,OAAK,CAAC,EAAE,SAAS,WAAW,EAChC;AAAA,EACC,OAAK,WAAW,GAAG,OAAO;AAAA,EAC1B,OAAK,6CAA6C,OAAO,0BAA0B,SAAS,CAAC,CAAC;AAChG,EACC,KAAK,uBAAuB,OAAO,GAAG;AAE3C,OAAO,OAAO;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AACF,CAAC;","names":[]}
@@ -0,0 +1,25 @@
1
+ import { match } from "./Match";
2
+ const notDefined = "Results is not defined.";
3
+ const doesNotFail = "Results does not fail.";
4
+ const hasMessage = (res, message) => res.results.some((r) => r.message === message);
5
+ const messages = (res) => "'" + res?.results.map((r) => r.message).join("', '") + "'";
6
+ const toResultWith = (results, message) => match(results).undefined((r) => r, notDefined).not(
7
+ (r) => hasMessage(r, message),
8
+ (r) => `Results does not have message '${message}', but it has messages ${messages(r)} instead.`
9
+ ).else(`Succeeds with message ${message}`);
10
+ const toFail = (results) => match(results).undefined((r) => r, notDefined).not((r) => !r.isValid, doesNotFail).else("Results does not fail");
11
+ const toFailWith = (results, message) => match(results).undefined((r) => r, notDefined).not((r) => !r.isValid, doesNotFail).not(
12
+ (r) => hasMessage(r, message),
13
+ (r) => `Fails, but results does not have message '${message}', but it has messages ${messages(r)} instead.`
14
+ ).else(`Fails with message '${message}'`);
15
+ expect.extend({
16
+ toResultWith,
17
+ toFail,
18
+ toFailWith
19
+ });
20
+ export {
21
+ toFail,
22
+ toFailWith,
23
+ toResultWith
24
+ };
25
+ //# sourceMappingURL=ResultMatchers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/matchers/ResultMatchers.ts"],"sourcesContent":["import { match } from './Match';\nimport { Results } from '../utils/Types';\n\n// Tests for handling Results.\n\nconst notDefined = 'Results is not defined.';\nconst doesNotFail = 'Results does not fail.';\n\nconst hasMessage = (res: Results, message: string) => res.results.some((r: any) => r.message === message);\n\nconst messages = (res: Results): string => \"'\" + res?.results.map(r => r.message).join(\"', '\") + \"'\";\n\nexport const toResultWith = (results: Results, message: string): jest.CustomMatcherResult =>\n match(results)\n .undefined(r => r, notDefined)\n .not(\n r => hasMessage(r, message),\n r => `Results does not have message '${message}', but it has messages ${messages(r)} instead.`\n )\n .else(`Succeeds with message ${message}`);\n\nexport const toFail = (results: Results): jest.CustomMatcherResult =>\n match(results)\n .undefined(r => r, notDefined)\n .not(r => !r.isValid, doesNotFail)\n .else('Results does not fail');\n\nexport const toFailWith = (results: Results, message: string): jest.CustomMatcherResult =>\n match(results)\n .undefined(r => r, notDefined)\n .not(r => !r.isValid, doesNotFail)\n .not(\n r => hasMessage(r, message),\n r => `Fails, but results does not have message '${message}', but it has messages ${messages(r)} instead.`\n )\n .else(`Fails with message '${message}'`);\n\nexpect.extend({\n toResultWith,\n toFail: toFail,\n toFailWith: toFailWith,\n});\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace jest {\n interface Matchers<R, T> {\n toResultWith(message: string): R;\n toFail(): R;\n toFailWith(message: string): R;\n }\n }\n}\n"],"mappings":"AAAA,SAAS,aAAa;AAKtB,MAAM,aAAa;AACnB,MAAM,cAAc;AAEpB,MAAM,aAAa,CAAC,KAAc,YAAoB,IAAI,QAAQ,KAAK,CAAC,MAAW,EAAE,YAAY,OAAO;AAExG,MAAM,WAAW,CAAC,QAAyB,MAAM,KAAK,QAAQ,IAAI,OAAK,EAAE,OAAO,EAAE,KAAK,MAAM,IAAI;AAE1F,MAAM,eAAe,CAAC,SAAkB,YAC7C,MAAM,OAAO,EACV,UAAU,OAAK,GAAG,UAAU,EAC5B;AAAA,EACC,OAAK,WAAW,GAAG,OAAO;AAAA,EAC1B,OAAK,kCAAkC,OAAO,0BAA0B,SAAS,CAAC,CAAC;AACrF,EACC,KAAK,yBAAyB,OAAO,EAAE;AAErC,MAAM,SAAS,CAAC,YACrB,MAAM,OAAO,EACV,UAAU,OAAK,GAAG,UAAU,EAC5B,IAAI,OAAK,CAAC,EAAE,SAAS,WAAW,EAChC,KAAK,uBAAuB;AAE1B,MAAM,aAAa,CAAC,SAAkB,YAC3C,MAAM,OAAO,EACV,UAAU,OAAK,GAAG,UAAU,EAC5B,IAAI,OAAK,CAAC,EAAE,SAAS,WAAW,EAChC;AAAA,EACC,OAAK,WAAW,GAAG,OAAO;AAAA,EAC1B,OAAK,6CAA6C,OAAO,0BAA0B,SAAS,CAAC,CAAC;AAChG,EACC,KAAK,uBAAuB,OAAO,GAAG;AAE3C,OAAO,OAAO;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AACF,CAAC;","names":[]}
@@ -0,0 +1,19 @@
1
+ export * from './HttpMatchers';
2
+ export * from './Match';
3
+ export * from './Check';
4
+ export * from './ResultMatchers';
5
+ export * from './toBeArrayOf';
6
+ export * from './toBeArrayOfWithLength';
7
+ export * from './toBeAt';
8
+ export * from './toBeExactlyAt';
9
+ export * from './toFailMatcher';
10
+ export * from './toBeValid';
11
+ export * from './toMatchArray';
12
+ export * from './toMatchExactJson';
13
+ export * from './toMatchException';
14
+ export * from './toMatchJson';
15
+ export * from './toMatchRoute';
16
+ export * from './toMatchText';
17
+ export * from './toPassMatcher';
18
+ export * from './toBeQueriedWith';
19
+ export * from './toBeRoutedTo';
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var matchers_exports = {};
17
+ module.exports = __toCommonJS(matchers_exports);
18
+ __reExport(matchers_exports, require("./HttpMatchers"), module.exports);
19
+ __reExport(matchers_exports, require("./Match"), module.exports);
20
+ __reExport(matchers_exports, require("./Check"), module.exports);
21
+ __reExport(matchers_exports, require("./ResultMatchers"), module.exports);
22
+ __reExport(matchers_exports, require("./toBeArrayOf"), module.exports);
23
+ __reExport(matchers_exports, require("./toBeArrayOfWithLength"), module.exports);
24
+ __reExport(matchers_exports, require("./toBeAt"), module.exports);
25
+ __reExport(matchers_exports, require("./toBeExactlyAt"), module.exports);
26
+ __reExport(matchers_exports, require("./toFailMatcher"), module.exports);
27
+ __reExport(matchers_exports, require("./toBeValid"), module.exports);
28
+ __reExport(matchers_exports, require("./toMatchArray"), module.exports);
29
+ __reExport(matchers_exports, require("./toMatchExactJson"), module.exports);
30
+ __reExport(matchers_exports, require("./toMatchException"), module.exports);
31
+ __reExport(matchers_exports, require("./toMatchJson"), module.exports);
32
+ __reExport(matchers_exports, require("./toMatchRoute"), module.exports);
33
+ __reExport(matchers_exports, require("./toMatchText"), module.exports);
34
+ __reExport(matchers_exports, require("./toPassMatcher"), module.exports);
35
+ __reExport(matchers_exports, require("./toBeQueriedWith"), module.exports);
36
+ __reExport(matchers_exports, require("./toBeRoutedTo"), module.exports);
37
+ // Annotate the CommonJS export names for ESM import in node:
38
+ 0 && (module.exports = {
39
+ ...require("./HttpMatchers"),
40
+ ...require("./Match"),
41
+ ...require("./Check"),
42
+ ...require("./ResultMatchers"),
43
+ ...require("./toBeArrayOf"),
44
+ ...require("./toBeArrayOfWithLength"),
45
+ ...require("./toBeAt"),
46
+ ...require("./toBeExactlyAt"),
47
+ ...require("./toFailMatcher"),
48
+ ...require("./toBeValid"),
49
+ ...require("./toMatchArray"),
50
+ ...require("./toMatchExactJson"),
51
+ ...require("./toMatchException"),
52
+ ...require("./toMatchJson"),
53
+ ...require("./toMatchRoute"),
54
+ ...require("./toMatchText"),
55
+ ...require("./toPassMatcher"),
56
+ ...require("./toBeQueriedWith"),
57
+ ...require("./toBeRoutedTo")
58
+ });
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/matchers/index.ts"],"sourcesContent":["export * from './HttpMatchers';\nexport * from './Match';\nexport * from './Check';\nexport * from './ResultMatchers';\nexport * from './toBeArrayOf';\nexport * from './toBeArrayOfWithLength';\nexport * from './toBeAt';\nexport * from './toBeExactlyAt';\nexport * from './toFailMatcher';\nexport * from './toBeValid';\nexport * from './toMatchArray';\nexport * from './toMatchExactJson';\nexport * from './toMatchException';\nexport * from './toMatchJson';\nexport * from './toMatchRoute';\nexport * from './toMatchText';\nexport * from './toPassMatcher';\nexport * from './toBeQueriedWith';\nexport * from './toBeRoutedTo';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,6BAAc,2BAAd;AACA,6BAAc,oBADd;AAEA,6BAAc,oBAFd;AAGA,6BAAc,6BAHd;AAIA,6BAAc,0BAJd;AAKA,6BAAc,oCALd;AAMA,6BAAc,qBANd;AAOA,6BAAc,4BAPd;AAQA,6BAAc,4BARd;AASA,6BAAc,wBATd;AAUA,6BAAc,2BAVd;AAWA,6BAAc,+BAXd;AAYA,6BAAc,+BAZd;AAaA,6BAAc,0BAbd;AAcA,6BAAc,2BAdd;AAeA,6BAAc,0BAfd;AAgBA,6BAAc,4BAhBd;AAiBA,6BAAc,8BAjBd;AAkBA,6BAAc,2BAlBd;","names":[]}
@@ -0,0 +1,20 @@
1
+ export * from "./HttpMatchers";
2
+ export * from "./Match";
3
+ export * from "./Check";
4
+ export * from "./ResultMatchers";
5
+ export * from "./toBeArrayOf";
6
+ export * from "./toBeArrayOfWithLength";
7
+ export * from "./toBeAt";
8
+ export * from "./toBeExactlyAt";
9
+ export * from "./toFailMatcher";
10
+ export * from "./toBeValid";
11
+ export * from "./toMatchArray";
12
+ export * from "./toMatchExactJson";
13
+ export * from "./toMatchException";
14
+ export * from "./toMatchJson";
15
+ export * from "./toMatchRoute";
16
+ export * from "./toMatchText";
17
+ export * from "./toPassMatcher";
18
+ export * from "./toBeQueriedWith";
19
+ export * from "./toBeRoutedTo";
20
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/matchers/index.ts"],"sourcesContent":["export * from './HttpMatchers';\nexport * from './Match';\nexport * from './Check';\nexport * from './ResultMatchers';\nexport * from './toBeArrayOf';\nexport * from './toBeArrayOfWithLength';\nexport * from './toBeAt';\nexport * from './toBeExactlyAt';\nexport * from './toFailMatcher';\nexport * from './toBeValid';\nexport * from './toMatchArray';\nexport * from './toMatchExactJson';\nexport * from './toMatchException';\nexport * from './toMatchJson';\nexport * from './toMatchRoute';\nexport * from './toMatchText';\nexport * from './toPassMatcher';\nexport * from './toBeQueriedWith';\nexport * from './toBeRoutedTo';\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -0,0 +1,9 @@
1
+ import { Constructor as Ctor } from '../utils/Types';
2
+ export declare const toBeArrayOf: <T>(items: unknown, ctor: Ctor<T>) => jest.CustomMatcherResult;
3
+ declare global {
4
+ namespace jest {
5
+ interface Matchers<R, T> {
6
+ toBeArrayOf<Z>(ctor: Ctor<Z>): R;
7
+ }
8
+ }
9
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var toBeArrayOf_exports = {};
20
+ __export(toBeArrayOf_exports, {
21
+ toBeArrayOf: () => toBeArrayOf
22
+ });
23
+ module.exports = __toCommonJS(toBeArrayOf_exports);
24
+ var import_Match = require("./Match");
25
+ const toBeArrayOf = (items, ctor) => (0, import_Match.match)(items).undefined((it) => it, "Subject is undefined.").not((it) => it instanceof Array, "Subject is not an array.").not((it) => it.every((i) => i instanceof ctor), `Not all elements are of type '${ctor.name}'.`).else(`All elements in array are of type '${ctor.name}'`);
26
+ expect.extend({
27
+ toBeArrayOf
28
+ });
29
+ // Annotate the CommonJS export names for ESM import in node:
30
+ 0 && (module.exports = {
31
+ toBeArrayOf
32
+ });
33
+ //# sourceMappingURL=toBeArrayOf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/matchers/toBeArrayOf.ts"],"sourcesContent":["import { Constructor as Ctor } from '../utils/Types';\nimport { match } from './Match';\n\nexport const toBeArrayOf = <T>(items: unknown, ctor: Ctor<T>): jest.CustomMatcherResult =>\n match<unknown>(items)\n .undefined(it => it, 'Subject is undefined.')\n .not(it => it instanceof Array, 'Subject is not an array.')\n .not(it => (it as []).every((i: any) => i instanceof ctor), `Not all elements are of type '${ctor.name}'.`)\n .else(`All elements in array are of type '${ctor.name}'`);\n\nexpect.extend({\n toBeArrayOf,\n});\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace jest {\n interface Matchers<R, T> {\n toBeArrayOf<Z>(ctor: Ctor<Z>): R;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAsB;AAEf,MAAM,cAAc,CAAI,OAAgB,aAC7C,oBAAe,KAAK,EACjB,UAAU,QAAM,IAAI,uBAAuB,EAC3C,IAAI,QAAM,cAAc,OAAO,0BAA0B,EACzD,IAAI,QAAO,GAAU,MAAM,CAAC,MAAW,aAAa,IAAI,GAAG,iCAAiC,KAAK,IAAI,IAAI,EACzG,KAAK,sCAAsC,KAAK,IAAI,GAAG;AAE5D,OAAO,OAAO;AAAA,EACZ;AACF,CAAC;","names":[]}
@@ -0,0 +1,9 @@
1
+ import { match } from "./Match";
2
+ const toBeArrayOf = (items, ctor) => match(items).undefined((it) => it, "Subject is undefined.").not((it) => it instanceof Array, "Subject is not an array.").not((it) => it.every((i) => i instanceof ctor), `Not all elements are of type '${ctor.name}'.`).else(`All elements in array are of type '${ctor.name}'`);
3
+ expect.extend({
4
+ toBeArrayOf
5
+ });
6
+ export {
7
+ toBeArrayOf
8
+ };
9
+ //# sourceMappingURL=toBeArrayOf.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/matchers/toBeArrayOf.ts"],"sourcesContent":["import { Constructor as Ctor } from '../utils/Types';\nimport { match } from './Match';\n\nexport const toBeArrayOf = <T>(items: unknown, ctor: Ctor<T>): jest.CustomMatcherResult =>\n match<unknown>(items)\n .undefined(it => it, 'Subject is undefined.')\n .not(it => it instanceof Array, 'Subject is not an array.')\n .not(it => (it as []).every((i: any) => i instanceof ctor), `Not all elements are of type '${ctor.name}'.`)\n .else(`All elements in array are of type '${ctor.name}'`);\n\nexpect.extend({\n toBeArrayOf,\n});\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace jest {\n interface Matchers<R, T> {\n toBeArrayOf<Z>(ctor: Ctor<Z>): R;\n }\n }\n}\n"],"mappings":"AACA,SAAS,aAAa;AAEf,MAAM,cAAc,CAAI,OAAgB,SAC7C,MAAe,KAAK,EACjB,UAAU,QAAM,IAAI,uBAAuB,EAC3C,IAAI,QAAM,cAAc,OAAO,0BAA0B,EACzD,IAAI,QAAO,GAAU,MAAM,CAAC,MAAW,aAAa,IAAI,GAAG,iCAAiC,KAAK,IAAI,IAAI,EACzG,KAAK,sCAAsC,KAAK,IAAI,GAAG;AAE5D,OAAO,OAAO;AAAA,EACZ;AACF,CAAC;","names":[]}
@@ -0,0 +1,9 @@
1
+ import { Constructor as Ctor } from '../utils/Types';
2
+ export declare const toBeArrayOfWithLength: <T>(items: unknown, ctor: Ctor<T>, length: number) => jest.CustomMatcherResult;
3
+ declare global {
4
+ namespace jest {
5
+ interface Matchers<R, T> {
6
+ toBeArrayOfWithLength<Z>(ctor: Ctor<Z>, length: number): R;
7
+ }
8
+ }
9
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var toBeArrayOfWithLength_exports = {};
20
+ __export(toBeArrayOfWithLength_exports, {
21
+ toBeArrayOfWithLength: () => toBeArrayOfWithLength
22
+ });
23
+ module.exports = __toCommonJS(toBeArrayOfWithLength_exports);
24
+ var import_Match = require("./Match");
25
+ const toBeArrayOfWithLength = (items, ctor, length) => (0, import_Match.match)(items).undefined((it) => it, "Subject is undefined.").not((it) => it instanceof Array, "Subject is not an array.").not(
26
+ (it) => it.length === length,
27
+ (it) => `Subject does not have ${length} elements, but ${it.length}.`
28
+ ).not((it) => it.every((i) => i instanceof ctor), `Not all elements are of type '${ctor.name}'.`).else(`Subject has ${length} elements, which are all of type '${ctor.name}'`);
29
+ expect.extend({
30
+ toBeArrayOfWithLength
31
+ });
32
+ // Annotate the CommonJS export names for ESM import in node:
33
+ 0 && (module.exports = {
34
+ toBeArrayOfWithLength
35
+ });
36
+ //# sourceMappingURL=toBeArrayOfWithLength.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/matchers/toBeArrayOfWithLength.ts"],"sourcesContent":["import { Constructor as Ctor } from '../utils/Types';\nimport { match } from './Match';\n\nexport const toBeArrayOfWithLength = <T>(items: unknown, ctor: Ctor<T>, length: number): jest.CustomMatcherResult =>\n match<unknown>(items)\n .undefined(it => it, 'Subject is undefined.')\n .not(it => it instanceof Array, 'Subject is not an array.')\n .not(\n it => (it as []).length === length,\n it => `Subject does not have ${length} elements, but ${(it as []).length}.`\n )\n .not(it => (it as []).every((i: any) => i instanceof ctor), `Not all elements are of type '${ctor.name}'.`)\n .else(`Subject has ${length} elements, which are all of type '${ctor.name}'`);\n\nexpect.extend({\n toBeArrayOfWithLength,\n});\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace jest {\n interface Matchers<R, T> {\n toBeArrayOfWithLength<Z>(ctor: Ctor<Z>, length: number): R;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAsB;AAEf,MAAM,wBAAwB,CAAI,OAAgB,MAAe,eACtE,oBAAe,KAAK,EACjB,UAAU,QAAM,IAAI,uBAAuB,EAC3C,IAAI,QAAM,cAAc,OAAO,0BAA0B,EACzD;AAAA,EACC,QAAO,GAAU,WAAW;AAAA,EAC5B,QAAM,yBAAyB,MAAM,kBAAmB,GAAU,MAAM;AAC1E,EACC,IAAI,QAAO,GAAU,MAAM,CAAC,MAAW,aAAa,IAAI,GAAG,iCAAiC,KAAK,IAAI,IAAI,EACzG,KAAK,eAAe,MAAM,qCAAqC,KAAK,IAAI,GAAG;AAEhF,OAAO,OAAO;AAAA,EACZ;AACF,CAAC;","names":[]}