@thisisagile/easy-test 17.25.1 → 17.25.3

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 (71) hide show
  1. package/dist/index.mjs +541 -2
  2. package/dist/index.mjs.map +1 -1
  3. package/package.json +12 -4
  4. package/dist/chunk-6EKWTLNQ.mjs +0 -12
  5. package/dist/chunk-6EKWTLNQ.mjs.map +0 -1
  6. package/dist/chunk-LN24S2PC.mjs +0 -41
  7. package/dist/chunk-LN24S2PC.mjs.map +0 -1
  8. package/dist/chunk-O475TEG2.mjs +0 -30
  9. package/dist/chunk-O475TEG2.mjs.map +0 -1
  10. package/dist/chunk-QE3TR4BY.mjs +0 -16
  11. package/dist/chunk-QE3TR4BY.mjs.map +0 -1
  12. package/dist/chunk-SJR3TRWF.mjs +0 -39
  13. package/dist/chunk-SJR3TRWF.mjs.map +0 -1
  14. package/dist/chunk-Z4XAP66Q.mjs +0 -44
  15. package/dist/chunk-Z4XAP66Q.mjs.map +0 -1
  16. package/dist/matchers/Check.mjs +0 -10
  17. package/dist/matchers/Check.mjs.map +0 -1
  18. package/dist/matchers/HttpMatchers.mjs +0 -60
  19. package/dist/matchers/HttpMatchers.mjs.map +0 -1
  20. package/dist/matchers/Match.mjs +0 -11
  21. package/dist/matchers/Match.mjs.map +0 -1
  22. package/dist/matchers/ResultMatchers.mjs +0 -31
  23. package/dist/matchers/ResultMatchers.mjs.map +0 -1
  24. package/dist/matchers/index.mjs +0 -20
  25. package/dist/matchers/index.mjs.map +0 -1
  26. package/dist/matchers/toBeArrayOf.mjs +0 -15
  27. package/dist/matchers/toBeArrayOf.mjs.map +0 -1
  28. package/dist/matchers/toBeArrayOfWithLength.mjs +0 -18
  29. package/dist/matchers/toBeArrayOfWithLength.mjs.map +0 -1
  30. package/dist/matchers/toBeAt.mjs +0 -26
  31. package/dist/matchers/toBeAt.mjs.map +0 -1
  32. package/dist/matchers/toBeExactlyAt.mjs +0 -26
  33. package/dist/matchers/toBeExactlyAt.mjs.map +0 -1
  34. package/dist/matchers/toBeQueriedWith.mjs +0 -18
  35. package/dist/matchers/toBeQueriedWith.mjs.map +0 -1
  36. package/dist/matchers/toBeRoutedTo.mjs +0 -32
  37. package/dist/matchers/toBeRoutedTo.mjs.map +0 -1
  38. package/dist/matchers/toBeValid.mjs +0 -17
  39. package/dist/matchers/toBeValid.mjs.map +0 -1
  40. package/dist/matchers/toFailMatcher.mjs +0 -39
  41. package/dist/matchers/toFailMatcher.mjs.map +0 -1
  42. package/dist/matchers/toMatchArray.mjs +0 -19
  43. package/dist/matchers/toMatchArray.mjs.map +0 -1
  44. package/dist/matchers/toMatchExactJson.mjs +0 -25
  45. package/dist/matchers/toMatchExactJson.mjs.map +0 -1
  46. package/dist/matchers/toMatchException.mjs +0 -26
  47. package/dist/matchers/toMatchException.mjs.map +0 -1
  48. package/dist/matchers/toMatchJson.mjs +0 -27
  49. package/dist/matchers/toMatchJson.mjs.map +0 -1
  50. package/dist/matchers/toMatchRoute.mjs +0 -20
  51. package/dist/matchers/toMatchRoute.mjs.map +0 -1
  52. package/dist/matchers/toMatchText.mjs +0 -20
  53. package/dist/matchers/toMatchText.mjs.map +0 -1
  54. package/dist/matchers/toPassMatcher.mjs +0 -39
  55. package/dist/matchers/toPassMatcher.mjs.map +0 -1
  56. package/dist/mock/Fits.mjs +0 -52
  57. package/dist/mock/Fits.mjs.map +0 -1
  58. package/dist/mock/Mocks.mjs +0 -86
  59. package/dist/mock/Mocks.mjs.map +0 -1
  60. package/dist/mock/index.mjs +0 -3
  61. package/dist/mock/index.mjs.map +0 -1
  62. package/dist/utils/Eq.mjs +0 -8
  63. package/dist/utils/Eq.mjs.map +0 -1
  64. package/dist/utils/Req.mjs +0 -8
  65. package/dist/utils/Req.mjs.map +0 -1
  66. package/dist/utils/Response.mjs +0 -1
  67. package/dist/utils/Response.mjs.map +0 -1
  68. package/dist/utils/Types.mjs +0 -8
  69. package/dist/utils/Types.mjs.map +0 -1
  70. package/dist/utils/Utils.mjs +0 -27
  71. package/dist/utils/Utils.mjs.map +0 -1
package/package.json CHANGED
@@ -1,12 +1,20 @@
1
1
  {
2
2
  "name": "@thisisagile/easy-test",
3
- "version": "17.25.1",
3
+ "version": "17.25.3",
4
4
  "description": "Straightforward library for testing microservices built with @thisisagile/easy",
5
5
  "author": "Sander Hoogendoorn",
6
6
  "license": "MIT",
7
- "main": "dist/index.js",
8
- "module": "dist/index.mjs",
9
- "types": "dist/index.d.ts",
7
+ "main": "./dist/index.js",
8
+ "module": "./dist/index.mjs",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.mjs",
14
+ "require": "./dist/index.js"
15
+ },
16
+ "./package.json": "./package.json"
17
+ },
10
18
  "repository": {
11
19
  "type": "git",
12
20
  "url": "git@github.com:thisisagile/easy.git"
@@ -1,12 +0,0 @@
1
- import {
2
- asString,
3
- isFunction
4
- } from "./chunk-O475TEG2.mjs";
5
-
6
- // src/utils/Types.ts
7
- var toMessage = (g, ...params) => asString(isFunction(g) ? g(...params) : g);
8
-
9
- export {
10
- toMessage
11
- };
12
- //# sourceMappingURL=chunk-6EKWTLNQ.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/Types.ts"],"sourcesContent":["import { asString, isFunction } from './Utils';\n\nexport type OneOrMore<T> = T | Array<T>;\n\nexport type ArrayLike<T> = OneOrMore<T>[];\n\nexport type Constructor<T> = { new (...args: any[]): T };\n\nexport type Message<P> = Text | ((...params: P[]) => Text);\n\nexport const toMessage = <P>(g: Message<P>, ...params: P[]): string => asString(isFunction(g) ? g(...params) : g);\n\nexport type Validatable = { isValid: boolean };\n\nexport type Result = { domain?: string; location?: string; message: string };\n\nexport type Results = Validatable & { results: Result[] };\n\nexport type Uri = Text;\n\nexport type Id = string | number;\n\nexport type JsonValue = string | number | boolean | null | Json | JsonValue[];\n\nexport type Json = { [key: string]: JsonValue };\n\nexport type Exception = { id: Id; reason?: string };\n\nexport type Text = { toString: () => string };\n\nexport type Query = Text;\n\nexport type UseCase = { app: { id: Text }; id: Text };\n\nexport type Tester = { url: string };\n\nexport type CreateMutable<T> = { -readonly [P in keyof T]: T[P] };\n"],"mappings":";;;;;;AAUO,IAAM,YAAY,CAAI,MAAkB,WAAwB,SAAS,WAAW,CAAC,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC;","names":[]}
@@ -1,41 +0,0 @@
1
- import {
2
- toMessage
3
- } from "./chunk-6EKWTLNQ.mjs";
4
- import {
5
- isDefined
6
- } from "./chunk-O475TEG2.mjs";
7
-
8
- // src/matchers/Match.ts
9
- var Match = class _Match {
10
- constructor(subject, failed = false, message = "") {
11
- this.subject = subject;
12
- this.failed = failed;
13
- this.message = message;
14
- }
15
- not(p, message) {
16
- if (this.failed) {
17
- return this;
18
- }
19
- try {
20
- return new _Match(this.subject, !p(this.subject), toMessage(message, this.subject));
21
- } catch (e) {
22
- return new _Match(this.subject, true, e.message);
23
- }
24
- }
25
- undefined(p, message) {
26
- return this.not(() => isDefined(p(this.subject)), message);
27
- }
28
- else(message) {
29
- return {
30
- pass: !this.failed,
31
- message: () => this.failed ? toMessage(this.message) : `${toMessage(message, this.subject)}, which we did not expect.`
32
- };
33
- }
34
- };
35
- var match = (subject) => new Match(subject);
36
-
37
- export {
38
- Match,
39
- match
40
- };
41
- //# sourceMappingURL=chunk-LN24S2PC.mjs.map
@@ -1 +0,0 @@
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":";;;;;;;;AAGO,IAAM,QAAN,MAAM,OAAS;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,OAAS,KAAK,SAAS,CAAC,EAAE,KAAK,OAAO,GAAG,UAAU,SAAS,KAAK,OAAO,CAAC;AAAA,IACtF,SAAS,GAAQ;AAEf,aAAO,IAAI,OAAS,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,IAAM,QAAQ,CAAI,YAAyB,IAAI,MAAS,OAAO;","names":[]}
@@ -1,30 +0,0 @@
1
- // src/utils/Utils.ts
2
- var isDefined = (o) => o !== void 0 && o !== null;
3
- var isNumber = (o) => isDefined(o) && typeof o === "number" && !Number.isNaN(o);
4
- var isFunction = (o) => isDefined(o) && typeof o === "function";
5
- var isA = (t, ...properties) => isDefined(t) && properties.every((p) => isDefined(t[p]));
6
- var isAn = isA;
7
- var isArray = (o) => isDefined(o) && o instanceof Array;
8
- var isObject = (o) => o != null && (typeof o === "object" || typeof o === "function") && !isArray(o);
9
- var asJson = (a) => a?.toJSON ? a.toJSON() : isObject(a) ? a : void 0;
10
- var asString = (a) => a?.toString();
11
- var asNumber = (num, alt) => {
12
- const n = parseInt(asString(num));
13
- return isNumber(n) ? n : isFunction(alt) ? alt() : isNumber(alt) ? alt : NaN;
14
- };
15
- var toArray = (...items) => items.length > 1 ? items : isArray(items[0]) ? items[0] : isDefined(items[0]) ? [items[0]] : [];
16
-
17
- export {
18
- isDefined,
19
- isNumber,
20
- isFunction,
21
- isA,
22
- isAn,
23
- isArray,
24
- isObject,
25
- asJson,
26
- asString,
27
- asNumber,
28
- toArray
29
- };
30
- //# sourceMappingURL=chunk-O475TEG2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/Utils.ts"],"sourcesContent":["import { ArrayLike } from './Types';\n\nexport const isDefined = <T = unknown>(o?: T): boolean => o !== undefined && o !== null;\n\nexport const isNumber = (o?: unknown): o is number => isDefined(o) && typeof o === 'number' && !Number.isNaN(o);\nexport const isFunction = (o?: unknown): o is (...params: unknown[]) => unknown => isDefined(o) && typeof o === 'function';\n\nexport const isA = <T>(t?: unknown, ...properties: (keyof T)[]): t is T => isDefined(t) && properties.every(p => isDefined((t as T)[p]));\nexport const isAn = isA;\n\nexport const isArray = <T = any>(o?: unknown): o is Array<T> => isDefined(o) && o instanceof Array;\nexport const isObject = (o?: unknown): o is Record<string, unknown> => o != null && (typeof o === 'object' || typeof o === 'function') && !isArray(o);\n\nexport const asJson = (a?: unknown): any => ((a as any)?.toJSON ? (a as any).toJSON() : isObject(a) ? a : undefined);\nexport const asString = (a?: unknown): string => (a as any)?.toString();\n\nexport const asNumber = (num: unknown, alt?: number | (() => number)): number => {\n const n = parseInt(asString(num));\n return isNumber(n) ? n : isFunction(alt) ? alt() : isNumber(alt) ? alt : NaN;\n};\n\nexport const toArray = <T>(...items: ArrayLike<T>): T[] =>\n items.length > 1 ? (items as T[]) : isArray(items[0]) ? items[0] : isDefined(items[0]) ? [items[0]] : [];\n"],"mappings":";AAEO,IAAM,YAAY,CAAc,MAAmB,MAAM,UAAa,MAAM;AAE5E,IAAM,WAAW,CAAC,MAA6B,UAAU,CAAC,KAAK,OAAO,MAAM,YAAY,CAAC,OAAO,MAAM,CAAC;AACvG,IAAM,aAAa,CAAC,MAAwD,UAAU,CAAC,KAAK,OAAO,MAAM;AAEzG,IAAM,MAAM,CAAI,MAAgB,eAAoC,UAAU,CAAC,KAAK,WAAW,MAAM,OAAK,UAAW,EAAQ,CAAC,CAAC,CAAC;AAChI,IAAM,OAAO;AAEb,IAAM,UAAU,CAAU,MAA+B,UAAU,CAAC,KAAK,aAAa;AACtF,IAAM,WAAW,CAAC,MAA8C,KAAK,SAAS,OAAO,MAAM,YAAY,OAAO,MAAM,eAAe,CAAC,QAAQ,CAAC;AAE7I,IAAM,SAAS,CAAC,MAAuB,GAAW,SAAU,EAAU,OAAO,IAAI,SAAS,CAAC,IAAI,IAAI;AACnG,IAAM,WAAW,CAAC,MAAyB,GAAW,SAAS;AAE/D,IAAM,WAAW,CAAC,KAAc,QAA0C;AAC/E,QAAM,IAAI,SAAS,SAAS,GAAG,CAAC;AAChC,SAAO,SAAS,CAAC,IAAI,IAAI,WAAW,GAAG,IAAI,IAAI,IAAI,SAAS,GAAG,IAAI,MAAM;AAC3E;AAEO,IAAM,UAAU,IAAO,UAC5B,MAAM,SAAS,IAAK,QAAgB,QAAQ,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,UAAU,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;","names":[]}
@@ -1,16 +0,0 @@
1
- import {
2
- asString
3
- } from "./chunk-O475TEG2.mjs";
4
-
5
- // src/utils/Eq.ts
6
- import { equals, iterableEquality, subsetEquality } from "@jest/expect-utils";
7
- var eq = {
8
- exact: (a, b) => equals(a, b, []),
9
- subset: (a, b) => equals(a, b, [iterableEquality, subsetEquality]),
10
- string: (a, b) => asString(a) === asString(b)
11
- };
12
-
13
- export {
14
- eq
15
- };
16
- //# sourceMappingURL=chunk-QE3TR4BY.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/Eq.ts"],"sourcesContent":["import { asString } from './Utils';\nimport { equals, iterableEquality, subsetEquality } from '@jest/expect-utils';\n\nexport const eq = {\n exact: (a?: unknown, b?: unknown): boolean => equals(a, b, []),\n subset: (a?: unknown, b?: unknown): boolean => equals(a, b, [iterableEquality, subsetEquality]),\n string: (a?: unknown, b?: unknown): boolean => asString(a) === asString(b),\n};\n"],"mappings":";;;;;AACA,SAAS,QAAQ,kBAAkB,sBAAsB;AAElD,IAAM,KAAK;AAAA,EAChB,OAAO,CAAC,GAAa,MAAyB,OAAO,GAAG,GAAG,CAAC,CAAC;AAAA,EAC7D,QAAQ,CAAC,GAAa,MAAyB,OAAO,GAAG,GAAG,CAAC,kBAAkB,cAAc,CAAC;AAAA,EAC9F,QAAQ,CAAC,GAAa,MAAyB,SAAS,CAAC,MAAM,SAAS,CAAC;AAC3E;","names":[]}
@@ -1,39 +0,0 @@
1
- import {
2
- asNumber,
3
- isDefined
4
- } from "./chunk-O475TEG2.mjs";
5
-
6
- // src/utils/Req.ts
7
- var Req = class {
8
- constructor(state = {}) {
9
- this.state = state;
10
- this.skip = isDefined(this.query?.skip) ? asNumber(this.query?.skip) : void 0;
11
- this.take = isDefined(this.query?.take) ? asNumber(this.query?.take) : void 0;
12
- }
13
- skip;
14
- take;
15
- get id() {
16
- return this.state.id ?? this.path.id;
17
- }
18
- get q() {
19
- return this.state.q ?? this.query.q;
20
- }
21
- get path() {
22
- return this.state?.path ?? {};
23
- }
24
- get query() {
25
- return this.state?.query ?? {};
26
- }
27
- get body() {
28
- return this.state.body;
29
- }
30
- get headers() {
31
- return this.state.headers;
32
- }
33
- get = (key) => this?.state[key.toString()] ?? this.path[key.toString()] ?? this.query[key.toString()];
34
- };
35
-
36
- export {
37
- Req
38
- };
39
- //# sourceMappingURL=chunk-SJR3TRWF.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/Req.ts"],"sourcesContent":["import { asNumber, isDefined } from './Utils';\nimport { Id, Json, JsonValue, OneOrMore, Text } from './Types';\n\nexport class Req<B = unknown> {\n readonly skip: number | undefined;\n readonly take: number | undefined;\n\n constructor(readonly state: any = {}) {\n this.skip = isDefined(this.query?.skip) ? asNumber(this.query?.skip) : undefined;\n this.take = isDefined(this.query?.take) ? asNumber(this.query?.take) : undefined;\n }\n\n get id(): Id {\n return this.state.id ?? this.path.id;\n }\n\n get q(): JsonValue {\n return this.state.q ?? this.query.q;\n }\n\n get path(): Json {\n return this.state?.path ?? {};\n }\n\n get query(): Json {\n return this.state?.query ?? {};\n }\n\n get body(): B {\n return this.state.body;\n }\n\n get headers(): Record<string, OneOrMore<string>> {\n return this.state.headers;\n }\n\n get = (key: Text): any => this?.state[key.toString()] ?? this.path[key.toString()] ?? this.query[key.toString()];\n}\n"],"mappings":";;;;;;AAGO,IAAM,MAAN,MAAuB;AAAA,EAI5B,YAAqB,QAAa,CAAC,GAAG;AAAjB;AACnB,SAAK,OAAO,UAAU,KAAK,OAAO,IAAI,IAAI,SAAS,KAAK,OAAO,IAAI,IAAI;AACvE,SAAK,OAAO,UAAU,KAAK,OAAO,IAAI,IAAI,SAAS,KAAK,OAAO,IAAI,IAAI;AAAA,EACzE;AAAA,EANS;AAAA,EACA;AAAA,EAOT,IAAI,KAAS;AACX,WAAO,KAAK,MAAM,MAAM,KAAK,KAAK;AAAA,EACpC;AAAA,EAEA,IAAI,IAAe;AACjB,WAAO,KAAK,MAAM,KAAK,KAAK,MAAM;AAAA,EACpC;AAAA,EAEA,IAAI,OAAa;AACf,WAAO,KAAK,OAAO,QAAQ,CAAC;AAAA,EAC9B;AAAA,EAEA,IAAI,QAAc;AAChB,WAAO,KAAK,OAAO,SAAS,CAAC;AAAA,EAC/B;AAAA,EAEA,IAAI,OAAU;AACZ,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAEA,IAAI,UAA6C;AAC/C,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAEA,MAAM,CAAC,QAAmB,MAAM,MAAM,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,KAAK,KAAK,MAAM,IAAI,SAAS,CAAC;AACjH;","names":[]}
@@ -1,44 +0,0 @@
1
- import {
2
- isDefined
3
- } from "./chunk-O475TEG2.mjs";
4
-
5
- // src/matchers/Check.ts
6
- var Check = class _Check {
7
- constructor(ctx, received, expected, failed = false, message = "") {
8
- this.ctx = ctx;
9
- this.received = received;
10
- this.expected = expected;
11
- this.failed = failed;
12
- this.message = message;
13
- }
14
- print(message) {
15
- return (typeof message === "function" ? message([this.received, this.expected]) : message).replace("{r}", this.ctx.utils.printReceived(this.received)).replace("{e}", this.ctx.utils.printExpected(this.expected)).replace("{diff}", this.ctx.utils.diff(this.received, this.expected) ?? "");
16
- }
17
- not(p, message) {
18
- if (this.failed) {
19
- return this;
20
- }
21
- try {
22
- return new _Check(this.ctx, this.received, this.expected, !p([this.received, this.expected]), this.print(message));
23
- } catch (e) {
24
- return new _Check(this.ctx, this.received, this.expected, true, e.message);
25
- }
26
- }
27
- undefined(p, message) {
28
- return this.not(() => isDefined(p([this.received, this.expected])), this.print(message));
29
- }
30
- else(message = "Expected {r} not to match with {e}, but it did.") {
31
- return {
32
- pass: !this.failed,
33
- message: () => this.failed ? this.message : this.print(message)
34
- };
35
- }
36
- };
37
- var check = (ctx, received, expected) => new Check(ctx, received, expected);
38
- var checkDefined = (ctx, received, expected) => new Check(ctx, received, expected).undefined(([r]) => r, "Received array is undefined.").undefined(([, e]) => e, "Expected array is undefined.");
39
-
40
- export {
41
- check,
42
- checkDefined
43
- };
44
- //# sourceMappingURL=chunk-Z4XAP66Q.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/matchers/Check.ts"],"sourcesContent":["import { isDefined } from '../utils/Utils';\n\ntype ToMessage<S> = string | ((s: S[]) => string);\n\nclass Check<S> {\n constructor(\n private ctx: jest.MatcherContext,\n private readonly received: S,\n private readonly expected: S,\n private readonly failed = false,\n private readonly message = ''\n ) {}\n\n print(message: ToMessage<S>): string {\n return (typeof message === 'function' ? message([this.received, this.expected]) : message)\n .replace('{r}', this.ctx.utils.printReceived(this.received))\n .replace('{e}', this.ctx.utils.printExpected(this.expected))\n .replace('{diff}', this.ctx.utils.diff(this.received, this.expected) ?? '');\n }\n\n not(p: (s: S[]) => boolean, message: ToMessage<S>): Check<S> {\n if (this.failed) {\n return this;\n }\n try {\n return new Check<S>(this.ctx, this.received, this.expected, !p([this.received, this.expected]), this.print(message));\n } catch (e: any) {\n return new Check<S>(this.ctx, this.received, this.expected, true, e.message);\n }\n }\n\n undefined(p: (s: S[]) => any, message: ToMessage<S>): Check<S> {\n return this.not(() => isDefined(p([this.received, this.expected])), this.print(message));\n }\n\n else(message: ToMessage<S> = 'Expected {r} not to match with {e}, but it did.'): jest.CustomMatcherResult {\n return {\n pass: !this.failed,\n message: () => (this.failed ? this.message : this.print(message)),\n };\n }\n}\n\nexport const check = <S>(ctx: jest.MatcherContext, received: S, expected?: S): Check<S> => new Check<S>(ctx, received, expected as S);\n\nexport const checkDefined = <S>(ctx: jest.MatcherContext, received: S, expected?: S): Check<S> =>\n new Check<S>(ctx, received, expected as S).undefined(([r]) => r, 'Received array is undefined.').undefined(([, e]) => e, 'Expected array is undefined.');\n"],"mappings":";;;;;AAIA,IAAM,QAAN,MAAM,OAAS;AAAA,EACb,YACU,KACS,UACA,UACA,SAAS,OACT,UAAU,IAC3B;AALQ;AACS;AACA;AACA;AACA;AAAA,EAChB;AAAA,EAEH,MAAM,SAA+B;AACnC,YAAQ,OAAO,YAAY,aAAa,QAAQ,CAAC,KAAK,UAAU,KAAK,QAAQ,CAAC,IAAI,SAC/E,QAAQ,OAAO,KAAK,IAAI,MAAM,cAAc,KAAK,QAAQ,CAAC,EAC1D,QAAQ,OAAO,KAAK,IAAI,MAAM,cAAc,KAAK,QAAQ,CAAC,EAC1D,QAAQ,UAAU,KAAK,IAAI,MAAM,KAAK,KAAK,UAAU,KAAK,QAAQ,KAAK,EAAE;AAAA,EAC9E;AAAA,EAEA,IAAI,GAAwB,SAAiC;AAC3D,QAAI,KAAK,QAAQ;AACf,aAAO;AAAA,IACT;AACA,QAAI;AACF,aAAO,IAAI,OAAS,KAAK,KAAK,KAAK,UAAU,KAAK,UAAU,CAAC,EAAE,CAAC,KAAK,UAAU,KAAK,QAAQ,CAAC,GAAG,KAAK,MAAM,OAAO,CAAC;AAAA,IACrH,SAAS,GAAQ;AACf,aAAO,IAAI,OAAS,KAAK,KAAK,KAAK,UAAU,KAAK,UAAU,MAAM,EAAE,OAAO;AAAA,IAC7E;AAAA,EACF;AAAA,EAEA,UAAU,GAAoB,SAAiC;AAC7D,WAAO,KAAK,IAAI,MAAM,UAAU,EAAE,CAAC,KAAK,UAAU,KAAK,QAAQ,CAAC,CAAC,GAAG,KAAK,MAAM,OAAO,CAAC;AAAA,EACzF;AAAA,EAEA,KAAK,UAAwB,mDAA6E;AACxG,WAAO;AAAA,MACL,MAAM,CAAC,KAAK;AAAA,MACZ,SAAS,MAAO,KAAK,SAAS,KAAK,UAAU,KAAK,MAAM,OAAO;AAAA,IACjE;AAAA,EACF;AACF;AAEO,IAAM,QAAQ,CAAI,KAA0B,UAAa,aAA2B,IAAI,MAAS,KAAK,UAAU,QAAa;AAE7H,IAAM,eAAe,CAAI,KAA0B,UAAa,aACrE,IAAI,MAAS,KAAK,UAAU,QAAa,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,8BAA8B,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,8BAA8B;","names":[]}
@@ -1,10 +0,0 @@
1
- import {
2
- check,
3
- checkDefined
4
- } from "../chunk-Z4XAP66Q.mjs";
5
- import "../chunk-O475TEG2.mjs";
6
- export {
7
- check,
8
- checkDefined
9
- };
10
- //# sourceMappingURL=Check.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,60 +0,0 @@
1
- import {
2
- match
3
- } from "../chunk-LN24S2PC.mjs";
4
- import "../chunk-6EKWTLNQ.mjs";
5
- import "../chunk-O475TEG2.mjs";
6
-
7
- // src/matchers/HttpMatchers.ts
8
- var toHaveStatus = (res, code) => match(res).undefined((r) => r, "Response is unknown.").undefined(
9
- (r) => r?.status?.id,
10
- () => "Response does not have a status code"
11
- ).not(
12
- (r) => r.status.id === code,
13
- (r) => `Response does not have code '${code}', but has code '${r.status.id}' instead.`
14
- ).else(`Response does have status code '${code}'.`);
15
- var toBeOk = (res) => toHaveStatus(res, 200);
16
- var toBeCreated = (res) => toHaveStatus(res, 201);
17
- var toHaveNoContent = (res) => toHaveStatus(res, 204);
18
- var toBeBadRequest = (res) => toHaveStatus(res, 400);
19
- var toBeUnauthorized = (res) => toHaveStatus(res, 401);
20
- var toBeForbidden = (res) => toHaveStatus(res, 403);
21
- var toBeNotFound = (res) => toHaveStatus(res, 404);
22
- var toBeConflict = (res) => toHaveStatus(res, 409);
23
- var toBeInternalServerError = (res) => toHaveStatus(res, 500);
24
- var toBeBadGateway = (res) => toHaveStatus(res, 502);
25
- var toBeOkWithItems = (res, length) => match(res).undefined((r) => r.status?.id, "Response did not have a status").not(
26
- (r) => r.status.id === 200,
27
- (r) => `Response did not have status '200'. It had status '${r.status.id}' instead.`
28
- ).undefined((r) => r?.body?.data?.items, `Response did not have any items.`).not(
29
- (r) => (r?.body?.data?.itemCount ?? 0) >= length,
30
- (r) => `Response did not have at least ${length} items. It only had ${r?.body?.data?.itemCount ?? 0} items.`
31
- ).else(`Response had status 200 and at least ${length} items`);
32
- expect.extend({
33
- toBeOk,
34
- toBeOkWithItems,
35
- toBeCreated,
36
- toHaveNoContent,
37
- toBeNotFound,
38
- toBeBadRequest,
39
- toBeUnauthorized,
40
- toBeForbidden,
41
- toBeConflict,
42
- toBeInternalServerError,
43
- toHaveStatus,
44
- toBeBadGateway
45
- });
46
- export {
47
- toBeBadGateway,
48
- toBeBadRequest,
49
- toBeConflict,
50
- toBeCreated,
51
- toBeForbidden,
52
- toBeInternalServerError,
53
- toBeNotFound,
54
- toBeOk,
55
- toBeOkWithItems,
56
- toBeUnauthorized,
57
- toHaveNoContent,
58
- toHaveStatus
59
- };
60
- //# sourceMappingURL=HttpMatchers.mjs.map
@@ -1 +0,0 @@
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":";;;;;;;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":[]}
@@ -1,11 +0,0 @@
1
- import {
2
- Match,
3
- match
4
- } from "../chunk-LN24S2PC.mjs";
5
- import "../chunk-6EKWTLNQ.mjs";
6
- import "../chunk-O475TEG2.mjs";
7
- export {
8
- Match,
9
- match
10
- };
11
- //# sourceMappingURL=Match.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,31 +0,0 @@
1
- import {
2
- match
3
- } from "../chunk-LN24S2PC.mjs";
4
- import "../chunk-6EKWTLNQ.mjs";
5
- import "../chunk-O475TEG2.mjs";
6
-
7
- // src/matchers/ResultMatchers.ts
8
- var notDefined = "Results is not defined.";
9
- var doesNotFail = "Results does not fail.";
10
- var hasMessage = (res, message) => res.results.some((r) => r.message === message);
11
- var messages = (res) => "'" + res?.results.map((r) => r.message).join("', '") + "'";
12
- var toResultWith = (results, message) => match(results).undefined((r) => r, notDefined).not(
13
- (r) => hasMessage(r, message),
14
- (r) => `Results does not have message '${message}', but it has messages ${messages(r)} instead.`
15
- ).else(`Succeeds with message ${message}`);
16
- var toFail = (results) => match(results).undefined((r) => r, notDefined).not((r) => !r.isValid, doesNotFail).else("Results does not fail");
17
- var toFailWith = (results, message) => match(results).undefined((r) => r, notDefined).not((r) => !r.isValid, doesNotFail).not(
18
- (r) => hasMessage(r, message),
19
- (r) => `Fails, but results does not have message '${message}', but it has messages ${messages(r)} instead.`
20
- ).else(`Fails with message '${message}'`);
21
- expect.extend({
22
- toResultWith,
23
- toFail,
24
- toFailWith
25
- });
26
- export {
27
- toFail,
28
- toFailWith,
29
- toResultWith
30
- };
31
- //# sourceMappingURL=ResultMatchers.mjs.map
@@ -1 +0,0 @@
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":";;;;;;;AAKA,IAAM,aAAa;AACnB,IAAM,cAAc;AAEpB,IAAM,aAAa,CAAC,KAAc,YAAoB,IAAI,QAAQ,KAAK,CAAC,MAAW,EAAE,YAAY,OAAO;AAExG,IAAM,WAAW,CAAC,QAAyB,MAAM,KAAK,QAAQ,IAAI,OAAK,EAAE,OAAO,EAAE,KAAK,MAAM,IAAI;AAE1F,IAAM,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,IAAM,SAAS,CAAC,YACrB,MAAM,OAAO,EACV,UAAU,OAAK,GAAG,UAAU,EAC5B,IAAI,OAAK,CAAC,EAAE,SAAS,WAAW,EAChC,KAAK,uBAAuB;AAE1B,IAAM,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":[]}
@@ -1,20 +0,0 @@
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
@@ -1 +0,0 @@
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":[]}
@@ -1,15 +0,0 @@
1
- import {
2
- match
3
- } from "../chunk-LN24S2PC.mjs";
4
- import "../chunk-6EKWTLNQ.mjs";
5
- import "../chunk-O475TEG2.mjs";
6
-
7
- // src/matchers/toBeArrayOf.ts
8
- var 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}'`);
9
- expect.extend({
10
- toBeArrayOf
11
- });
12
- export {
13
- toBeArrayOf
14
- };
15
- //# sourceMappingURL=toBeArrayOf.mjs.map
@@ -1 +0,0 @@
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":";;;;;;;AAGO,IAAM,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":[]}
@@ -1,18 +0,0 @@
1
- import {
2
- match
3
- } from "../chunk-LN24S2PC.mjs";
4
- import "../chunk-6EKWTLNQ.mjs";
5
- import "../chunk-O475TEG2.mjs";
6
-
7
- // src/matchers/toBeArrayOfWithLength.ts
8
- var toBeArrayOfWithLength = (items, ctor, length) => match(items).undefined((it) => it, "Subject is undefined.").not((it) => it instanceof Array, "Subject is not an array.").not(
9
- (it) => it.length === length,
10
- (it) => `Subject does not have ${length} elements, but ${it.length}.`
11
- ).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}'`);
12
- expect.extend({
13
- toBeArrayOfWithLength
14
- });
15
- export {
16
- toBeArrayOfWithLength
17
- };
18
- //# sourceMappingURL=toBeArrayOfWithLength.mjs.map
@@ -1 +0,0 @@
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":";;;;;;;AAGO,IAAM,wBAAwB,CAAI,OAAgB,MAAe,WACtE,MAAe,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":[]}
@@ -1,26 +0,0 @@
1
- import {
2
- match
3
- } from "../chunk-LN24S2PC.mjs";
4
- import "../chunk-6EKWTLNQ.mjs";
5
- import "../chunk-O475TEG2.mjs";
6
-
7
- // src/matchers/toBeAt.ts
8
- var toBeAt = (tester, uc, id) => {
9
- return match(tester).undefined((t) => t, "Tester is undefined").undefined((t) => t.url, "Tester does not contain a URL").undefined(() => uc, "Use case is undefined").not(
10
- (t) => t.url.includes(`/${uc?.app.id}`),
11
- (t) => `We expected the tester to be at app '${uc?.app.id}', but it is at '${t?.url}' instead.`
12
- ).not(
13
- (t) => t.url.includes(`/${uc?.id}`),
14
- (t) => `We expected the tester to be at use case '${uc?.id}', but it is at '${t?.url}' instead.`
15
- ).not(
16
- (t) => t.url.includes(id ? `/${id}` : ""),
17
- (t) => `We expected the path to contain '/42', but it is '${t?.url}' instead.`
18
- ).else((t) => `The tester is at '${t?.url}'`);
19
- };
20
- expect.extend({
21
- toBeAt
22
- });
23
- export {
24
- toBeAt
25
- };
26
- //# sourceMappingURL=toBeAt.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/matchers/toBeAt.ts"],"sourcesContent":["import { Id, Tester, UseCase } from '../utils/Types';\nimport { match } from './Match';\n\nexport const toBeAt = (tester?: Tester, uc?: UseCase, id?: Id): jest.CustomMatcherResult => {\n return match<Tester>(tester as Tester)\n .undefined(t => t, 'Tester is undefined')\n .undefined(t => t.url, 'Tester does not contain a URL')\n .undefined(() => uc, 'Use case is undefined')\n .not(\n t => t.url.includes(`/${uc?.app.id}`),\n t => `We expected the tester to be at app '${uc?.app.id}', but it is at '${t?.url}' instead.`\n )\n .not(\n t => t.url.includes(`/${uc?.id}`),\n t => `We expected the tester to be at use case '${uc?.id}', but it is at '${t?.url}' instead.`\n )\n .not(\n t => t.url.includes(id ? `/${id}` : ''),\n t => `We expected the path to contain '/42', but it is '${t?.url}' instead.`\n )\n .else(t => `The tester is at '${t?.url}'`);\n};\n\nexpect.extend({\n toBeAt,\n});\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace jest {\n interface Matchers<R, T> {\n toBeAt(uc?: UseCase, id?: Id): R;\n }\n }\n}\n"],"mappings":";;;;;;;AAGO,IAAM,SAAS,CAAC,QAAiB,IAAc,OAAsC;AAC1F,SAAO,MAAc,MAAgB,EAClC,UAAU,OAAK,GAAG,qBAAqB,EACvC,UAAU,OAAK,EAAE,KAAK,+BAA+B,EACrD,UAAU,MAAM,IAAI,uBAAuB,EAC3C;AAAA,IACC,OAAK,EAAE,IAAI,SAAS,IAAI,IAAI,IAAI,EAAE,EAAE;AAAA,IACpC,OAAK,wCAAwC,IAAI,IAAI,EAAE,oBAAoB,GAAG,GAAG;AAAA,EACnF,EACC;AAAA,IACC,OAAK,EAAE,IAAI,SAAS,IAAI,IAAI,EAAE,EAAE;AAAA,IAChC,OAAK,6CAA6C,IAAI,EAAE,oBAAoB,GAAG,GAAG;AAAA,EACpF,EACC;AAAA,IACC,OAAK,EAAE,IAAI,SAAS,KAAK,IAAI,EAAE,KAAK,EAAE;AAAA,IACtC,OAAK,qDAAqD,GAAG,GAAG;AAAA,EAClE,EACC,KAAK,OAAK,qBAAqB,GAAG,GAAG,GAAG;AAC7C;AAEA,OAAO,OAAO;AAAA,EACZ;AACF,CAAC;","names":[]}
@@ -1,26 +0,0 @@
1
- import {
2
- match
3
- } from "../chunk-LN24S2PC.mjs";
4
- import "../chunk-6EKWTLNQ.mjs";
5
- import {
6
- isDefined
7
- } from "../chunk-O475TEG2.mjs";
8
-
9
- // src/matchers/toBeExactlyAt.ts
10
- var toUrl = (uc, id) => {
11
- const i = isDefined(id) ? `/${id}` : "";
12
- return `/${uc.app.id}/${uc.id}${i}`;
13
- };
14
- var toBeExactlyAt = (tester, uc, id) => {
15
- return match(tester).undefined((t) => t, "Tester is undefined").undefined((t) => t.url, "Tester does not contain a URL").undefined(() => uc, "Use case is undefined").not(
16
- (t) => t.url.includes(toUrl(uc, id)),
17
- (t) => `We expected the tester to be at: '${toUrl(uc, id)}', but it is at: '${t?.url}' instead.`
18
- ).else((t) => `The tester is at '${t?.url}'`);
19
- };
20
- expect.extend({
21
- toBeExactlyAt
22
- });
23
- export {
24
- toBeExactlyAt
25
- };
26
- //# sourceMappingURL=toBeExactlyAt.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/matchers/toBeExactlyAt.ts"],"sourcesContent":["import { Id, Tester, UseCase } from '../utils/Types';\nimport { isDefined } from '../utils/Utils';\nimport { match } from './Match';\n\nconst toUrl = (uc: UseCase, id?: Id): string => {\n const i = isDefined(id) ? `/${id}` : '';\n return `/${uc.app.id}/${uc.id}${i}`;\n};\n\nexport const toBeExactlyAt = (tester?: Tester, uc?: UseCase, id?: Id): jest.CustomMatcherResult => {\n return match<Tester>(tester as Tester)\n .undefined(t => t, 'Tester is undefined')\n .undefined(t => t.url, 'Tester does not contain a URL')\n .undefined(() => uc, 'Use case is undefined')\n .not(\n t => t.url.includes(toUrl(uc as UseCase, id)),\n t => `We expected the tester to be at: '${toUrl(uc as UseCase, id)}', but it is at: '${t?.url}' instead.`\n )\n .else(t => `The tester is at '${t?.url}'`);\n};\n\nexpect.extend({\n toBeExactlyAt,\n});\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace jest {\n interface Matchers<R, T> {\n toBeExactlyAt(uc?: UseCase, id?: Id): R;\n }\n }\n}\n"],"mappings":";;;;;;;;;AAIA,IAAM,QAAQ,CAAC,IAAa,OAAoB;AAC9C,QAAM,IAAI,UAAU,EAAE,IAAI,IAAI,EAAE,KAAK;AACrC,SAAO,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC;AACnC;AAEO,IAAM,gBAAgB,CAAC,QAAiB,IAAc,OAAsC;AACjG,SAAO,MAAc,MAAgB,EAClC,UAAU,OAAK,GAAG,qBAAqB,EACvC,UAAU,OAAK,EAAE,KAAK,+BAA+B,EACrD,UAAU,MAAM,IAAI,uBAAuB,EAC3C;AAAA,IACC,OAAK,EAAE,IAAI,SAAS,MAAM,IAAe,EAAE,CAAC;AAAA,IAC5C,OAAK,qCAAqC,MAAM,IAAe,EAAE,CAAC,qBAAqB,GAAG,GAAG;AAAA,EAC/F,EACC,KAAK,OAAK,qBAAqB,GAAG,GAAG,GAAG;AAC7C;AAEA,OAAO,OAAO;AAAA,EACZ;AACF,CAAC;","names":[]}
@@ -1,18 +0,0 @@
1
- import {
2
- match
3
- } from "../chunk-LN24S2PC.mjs";
4
- import "../chunk-6EKWTLNQ.mjs";
5
- import "../chunk-O475TEG2.mjs";
6
-
7
- // src/matchers/toBeQueriedWith.ts
8
- var toBeQueriedWith = (query, expected) => match(query?.mock?.calls).undefined((c) => c, "Query is unknown.").not((c) => c.length === 1, "Query did not execute.").not(
9
- (c) => c[0][0].toString() === expected?.toString(),
10
- (c) => `We expected query '${expected}', but we received query '${c[0][0]}' instead.`
11
- ).else(`Received query does match '${expected}'`);
12
- expect.extend({
13
- toBeQueriedWith
14
- });
15
- export {
16
- toBeQueriedWith
17
- };
18
- //# sourceMappingURL=toBeQueriedWith.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/matchers/toBeQueriedWith.ts"],"sourcesContent":["import { match } from './Match';\nimport { Query } from '../utils/Types';\n\nexport const toBeQueriedWith = (query: jest.Mock, expected: Query): jest.CustomMatcherResult =>\n match<any[]>(query?.mock?.calls)\n .undefined(c => c, 'Query is unknown.')\n .not(c => c.length === 1, 'Query did not execute.')\n .not(\n c => c[0][0].toString() === expected?.toString(),\n c => `We expected query '${expected}', but we received query '${c[0][0]}' instead.`\n )\n .else(`Received query does match '${expected}'`);\n\nexpect.extend({\n toBeQueriedWith: toBeQueriedWith,\n});\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace jest {\n interface Matchers<R, T> {\n toBeQueriedWith(expected: Query): R;\n }\n }\n}\n"],"mappings":";;;;;;;AAGO,IAAM,kBAAkB,CAAC,OAAkB,aAChD,MAAa,OAAO,MAAM,KAAK,EAC5B,UAAU,OAAK,GAAG,mBAAmB,EACrC,IAAI,OAAK,EAAE,WAAW,GAAG,wBAAwB,EACjD;AAAA,EACC,OAAK,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,MAAM,UAAU,SAAS;AAAA,EAC/C,OAAK,sBAAsB,QAAQ,6BAA6B,EAAE,CAAC,EAAE,CAAC,CAAC;AACzE,EACC,KAAK,8BAA8B,QAAQ,GAAG;AAEnD,OAAO,OAAO;AAAA,EACZ;AACF,CAAC;","names":[]}
@@ -1,32 +0,0 @@
1
- import {
2
- checkDefined
3
- } from "../chunk-Z4XAP66Q.mjs";
4
- import {
5
- match
6
- } from "../chunk-LN24S2PC.mjs";
7
- import "../chunk-6EKWTLNQ.mjs";
8
- import {
9
- asString
10
- } from "../chunk-O475TEG2.mjs";
11
-
12
- // src/matchers/toBeRoutedTo.ts
13
- var weExpectedButReceivedInstead = ([r, e]) => `We expected ${asString(e)}, but we received '${asString(r)}' instead.`;
14
- function toMatchAsString(received, expected) {
15
- return checkDefined(this, received, expected).not(
16
- ([r, e]) => this.equals(asString(r), asString(e)),
17
- ([r, e]) => weExpectedButReceivedInstead([r, e])
18
- ).else();
19
- }
20
- var toBeRoutedTo = (query, expected) => match(query?.mock?.calls).undefined((c) => c, "Uri is unknown.").not((c) => c.length === 1, "Method was not called.").not(
21
- (c) => asString(c[0][0]) === asString(expected),
22
- (c) => `We expected uri '${asString(expected)}', but we received uri '${asString(c[0][0])}' instead.`
23
- ).else(`Called uri does match '${asString(expected)}'`);
24
- expect.extend({
25
- toBeRoutedTo
26
- });
27
- export {
28
- toBeRoutedTo,
29
- toMatchAsString,
30
- weExpectedButReceivedInstead
31
- };
32
- //# sourceMappingURL=toBeRoutedTo.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/matchers/toBeRoutedTo.ts"],"sourcesContent":["import { checkDefined } from './Check';\nimport { Uri } from '../utils/Types';\nimport { asString } from '../utils/Utils';\nimport { match } from './Match';\n\nexport const weExpectedButReceivedInstead = ([r, e]: [any, any]) => `We expected ${asString(e)}, but we received '${asString(r)}' instead.`;\n\nexport function toMatchAsString(this: jest.MatcherContext, received: unknown, expected: unknown): jest.CustomMatcherResult {\n return checkDefined(this, received, expected)\n .not(\n ([r, e]) => this.equals(asString(r), asString(e)),\n ([r, e]) => weExpectedButReceivedInstead([r, e])\n )\n .else();\n}\n\n// export function toBeRoutedTo(this: jest.MatcherContext, query: jest.Mock, expected: Uri): jest.CustomMatcherResult {\n// return check<any[]>(this, query?.mock?.calls)\n// .undefined(r => r, \"Uri is unknown.\")\n// .not(r => r.length === 1, \"Method was not called.\")\n// .not(r => this.equals(asString(r[0][0]), asString(expected)), ([r,e]) => weExpectedButReceivedInstead([r[0][0], e]))\n// .else();\n// }\n\nexport const toBeRoutedTo = (query: jest.Mock, expected: Uri): jest.CustomMatcherResult =>\n match<any[]>(query?.mock?.calls)\n .undefined(c => c, 'Uri is unknown.')\n .not(c => c.length === 1, 'Method was not called.')\n .not(\n c => asString(c[0][0]) === asString(expected),\n c => `We expected uri '${asString(expected)}', but we received uri '${asString(c[0][0])}' instead.`\n )\n .else(`Called uri does match '${asString(expected)}'`);\n\nexpect.extend({\n toBeRoutedTo: toBeRoutedTo,\n});\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace jest {\n interface Matchers<R, T> {\n toBeRoutedTo(uri: Uri): R;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;AAKO,IAAM,+BAA+B,CAAC,CAAC,GAAG,CAAC,MAAkB,eAAe,SAAS,CAAC,CAAC,sBAAsB,SAAS,CAAC,CAAC;AAExH,SAAS,gBAA2C,UAAmB,UAA6C;AACzH,SAAO,aAAa,MAAM,UAAU,QAAQ,EACzC;AAAA,IACC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,OAAO,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AAAA,IAChD,CAAC,CAAC,GAAG,CAAC,MAAM,6BAA6B,CAAC,GAAG,CAAC,CAAC;AAAA,EACjD,EACC,KAAK;AACV;AAUO,IAAM,eAAe,CAAC,OAAkB,aAC7C,MAAa,OAAO,MAAM,KAAK,EAC5B,UAAU,OAAK,GAAG,iBAAiB,EACnC,IAAI,OAAK,EAAE,WAAW,GAAG,wBAAwB,EACjD;AAAA,EACC,OAAK,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,SAAS,QAAQ;AAAA,EAC5C,OAAK,oBAAoB,SAAS,QAAQ,CAAC,2BAA2B,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzF,EACC,KAAK,0BAA0B,SAAS,QAAQ,CAAC,GAAG;AAEzD,OAAO,OAAO;AAAA,EACZ;AACF,CAAC;","names":[]}
@@ -1,17 +0,0 @@
1
- import {
2
- match
3
- } from "../chunk-LN24S2PC.mjs";
4
- import "../chunk-6EKWTLNQ.mjs";
5
- import {
6
- isA
7
- } from "../chunk-O475TEG2.mjs";
8
-
9
- // src/matchers/toBeValid.ts
10
- var toBeValid = (v) => match(v).undefined((s) => s, "Subject is undefined.").not((s) => isA(s, "isValid"), "Subject is not validatable.").not((s) => s.isValid, `Subject is not valid.`).else(`Subject is valid`);
11
- expect.extend({
12
- toBeValid
13
- });
14
- export {
15
- toBeValid
16
- };
17
- //# sourceMappingURL=toBeValid.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/matchers/toBeValid.ts"],"sourcesContent":["import { Validatable } from '../utils/Types';\nimport { isA } from '../utils/Utils';\nimport { match } from './Match';\n\nexport const toBeValid = (v?: unknown): jest.CustomMatcherResult =>\n match<Validatable>(v as Validatable)\n .undefined(s => s, 'Subject is undefined.')\n .not(s => isA<Validatable>(s, 'isValid'), 'Subject is not validatable.')\n .not(s => s.isValid, `Subject is not valid.`)\n .else(`Subject is valid`);\n\nexpect.extend({\n toBeValid,\n});\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace jest {\n interface Matchers<R, T> {\n toBeValid(): R;\n }\n }\n}\n"],"mappings":";;;;;;;;;AAIO,IAAM,YAAY,CAAC,MACxB,MAAmB,CAAgB,EAChC,UAAU,OAAK,GAAG,uBAAuB,EACzC,IAAI,OAAK,IAAiB,GAAG,SAAS,GAAG,6BAA6B,EACtE,IAAI,OAAK,EAAE,SAAS,uBAAuB,EAC3C,KAAK,kBAAkB;AAE5B,OAAO,OAAO;AAAA,EACZ;AACF,CAAC;","names":[]}