@nestia/e2e 0.1.7 → 0.1.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.
@@ -12,7 +12,7 @@ export declare namespace TestValidator {
12
12
  * @param title Title of error message when condition is not satisfied
13
13
  * @return Currying function
14
14
  */
15
- const predicate: (title: string) => (condition: () => boolean) => void;
15
+ const predicate: (title: string) => <T extends boolean | (() => boolean) | (() => Promise<boolean>)>(condition: T) => T extends () => Promise<boolean> ? Promise<void> : void;
16
16
  /**
17
17
  * Test whether two values are equal.
18
18
  *
@@ -34,7 +34,7 @@ export declare namespace TestValidator {
34
34
  *
35
35
  * @param title Title of exception because of no error exists
36
36
  */
37
- const error: (title: string) => (task: () => any | Promise<any>) => Promise<void>;
37
+ const error: (title: string) => <T>(task: () => T) => T extends Promise<any> ? Promise<void> : void;
38
38
  /**
39
39
  * Validate index API.
40
40
  *
@@ -67,10 +67,37 @@ var TestValidator;
67
67
  * @param title Title of error message when condition is not satisfied
68
68
  * @return Currying function
69
69
  */
70
- TestValidator.predicate = function (title) { return function (condition) {
71
- if (condition() !== true)
72
- throw new Error("Bug on ".concat(title, ": expected condition is not satisfied."));
73
- }; };
70
+ TestValidator.predicate = function (title) {
71
+ return function (condition) {
72
+ var message = function () {
73
+ return "Bug on ".concat(title, ": expected condition is not satisfied.");
74
+ };
75
+ // SCALAR
76
+ if (typeof condition === "boolean") {
77
+ if (condition !== true)
78
+ throw new Error(message());
79
+ return undefined;
80
+ }
81
+ // CLOSURE
82
+ var output = condition();
83
+ if (typeof output === "boolean") {
84
+ if (output !== true)
85
+ throw new Error(message());
86
+ return undefined;
87
+ }
88
+ // ASYNCHRONOUS
89
+ return new Promise(function (resolve, reject) {
90
+ output
91
+ .then(function (flag) {
92
+ if (flag === true)
93
+ resolve();
94
+ else
95
+ reject(message());
96
+ })
97
+ .catch(reject);
98
+ });
99
+ };
100
+ };
74
101
  /**
75
102
  * Test whether two values are equal.
76
103
  *
@@ -101,23 +128,23 @@ var TestValidator;
101
128
  * @param title Title of exception because of no error exists
102
129
  */
103
130
  TestValidator.error = function (title) {
104
- return function (task) { return __awaiter(_this, void 0, void 0, function () {
105
- var _a;
106
- return __generator(this, function (_b) {
107
- switch (_b.label) {
108
- case 0:
109
- _b.trys.push([0, 2, , 3]);
110
- return [4 /*yield*/, task()];
111
- case 1:
112
- _b.sent();
113
- return [3 /*break*/, 3];
114
- case 2:
115
- _a = _b.sent();
116
- return [2 /*return*/];
117
- case 3: throw new Error("Bug on ".concat(title, ": exception must be thrown."));
118
- }
119
- });
120
- }); };
131
+ return function (task) {
132
+ var message = function () { return "Bug on ".concat(title, ": exception must be thrown."); };
133
+ try {
134
+ var output_1 = task();
135
+ if (is_promise(output_1))
136
+ return new Promise(function (resolve, reject) {
137
+ return output_1
138
+ .catch(function () { return resolve(); })
139
+ .then(function () { return reject(message()); });
140
+ });
141
+ else
142
+ throw new Error(message());
143
+ }
144
+ catch (_a) {
145
+ return undefined;
146
+ }
147
+ };
121
148
  };
122
149
  /**
123
150
  * Validate index API.
@@ -301,4 +328,10 @@ var TestValidator;
301
328
  function get_ids(entities) {
302
329
  return entities.map(function (entity) { return entity.id; }).sort(function (x, y) { return (x < y ? -1 : 1); });
303
330
  }
331
+ function is_promise(input) {
332
+ return (typeof input === "object" &&
333
+ input !== null &&
334
+ typeof input.then === "function" &&
335
+ typeof input.catch === "function");
336
+ }
304
337
  //# sourceMappingURL=TestValidator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TestValidator.js","sourceRoot":"","sources":["../src/TestValidator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAAwC;AAExC,qDAAoD;AACpD,0DAAyD;AAEzD;;;;;;GAMG;AACH,IAAiB,aAAa,CA4N7B;AA5ND,WAAiB,aAAa;;IAC1B;;;;;OAKG;IACU,uBAAS,GAAG,UAAC,KAAa,IAAK,OAAA,UAAC,SAAwB;QACjE,IAAI,SAAS,EAAE,KAAK,IAAI;YACpB,MAAM,IAAI,KAAK,CACX,iBAAU,KAAK,2CAAwC,CAC1D,CAAC;IACV,CAAC,EAL2C,CAK3C,CAAC;IAEF;;;;;;;;;;OAUG;IACU,oBAAM,GACf,UAAC,KAAa;QACd,OAAA,UAAI,CAAI;YACR,OAAA,UAAC,CAAI;gBACD,IAAM,IAAI,GAAa,IAAA,6BAAa,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3C,IAAI,IAAI,CAAC,MAAM;oBACX,MAAM,IAAI,KAAK,CACX,iBAAU,KAAK,yCAA+B,IAAI,CAAC,IAAI,CACnD,IAAI,CACP,MAAG,CACP,CAAC;YACV,CAAC;QARD,CAQC;IATD,CASC,CAAC;IAEN;;;;;;;;OAQG;IACU,mBAAK,GACd,UAAC,KAAa;QACd,OAAA,UAAO,IAA8B;;;;;;wBAE7B,qBAAM,IAAI,EAAE,EAAA;;wBAAZ,SAAY,CAAC;;;;wBAEb,sBAAO;4BAEX,MAAM,IAAI,KAAK,CAAC,iBAAU,KAAK,gCAA6B,CAAC,CAAC;;;aACjE;IAPD,CAOC,CAAC;IAEN;;;;;;;;;;;OAWG;IACU,mBAAK,GACd,UAAC,KAAa;QACd,OAAA,UAAgC,QAAoB;YACpD,OAAA,UACI,MAAiB,EACjB,KAAqB;gBAArB,sBAAA,EAAA,YAAqB;gBAErB,IAAM,MAAM,GAAW,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChE,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACrC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAEjC,IAAM,IAAI,GAAa,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC1D,IAAM,IAAI,GAAa,OAAO,CAAC,MAAM,CAAC;qBACjC,MAAM,CAAC,UAAC,EAAE,IAAK,OAAA,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAb,CAAa,CAAC;qBAC7B,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAEtB,IAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAb,CAAa,CAAC,CAAC;gBAC5D,IAAI,MAAM,KAAK,IAAI;oBAAE,OAAO;qBACvB,IAAI,KAAK,KAAK,IAAI;oBACnB,OAAO,CAAC,GAAG,CAAC;wBACR,QAAQ,EAAE,IAAI;wBACd,MAAM,EAAE,IAAI;qBACf,CAAC,CAAC;gBACP,MAAM,IAAI,KAAK,CACX,iBAAU,KAAK,gEAA6D,CAC/E,CAAC;YACN,CAAC;QAvBD,CAuBC;IAxBD,CAwBC,CAAC;IAEN;;;;;;;;;OASG;IACU,oBAAM,GACf,UAAC,KAAa;QACd;;WAEG;QACH,OAAA,UACI,MAA6C;YAEjD;;;eAGG;YACH,OAAA,UAAC,KAAe,EAAE,WAAuB;gBAAvB,4BAAA,EAAA,eAAuB;gBACzC;;mBAEG;gBACH,OAAA,UACI,KAA4C;;;;;;gCAEtC,OAAO,GAAa,iCAAe,CAAC,MAAM,CAC5C,KAAK,EACL,WAAW,CACd,CAAC;oDACS,CAAC;;;;;gDACF,MAAM,GAAW,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gDACjC,QAAQ,GAAa,KAAK,CAAC,MAAM,CAAC,UAAC,MAAM;oDAC3C,OAAA,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;gDAA5B,CAA4B,CAC/B,CAAC;gDACuB,qBAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAA;;gDAAtD,MAAM,GAAa,SAAmC;gDAE5D,aAAa,CAAC,KAAK,CAAC,UAAG,KAAK,eAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAG,CAAC,CACxD,QAAQ,CACX,CAAC,MAAM,CAAC,CAAC;;;;;;;;gCATE,YAAA,SAAA,OAAO,CAAA;;;;gCAAZ,CAAC;8DAAD,CAAC;;;;;;;;;;;;;;;;;;;;;qBAWf;YAlBD,CAkBC;QAtBD,CAsBC;IA7BD,CA6BC,CAAC;IAaN;;;;;;;;;;;OAWG;IACU,kBAAI,GACb,UAAC,KAAa;QACd;;WAEG;QACH,OAAA,UAKI,MAA4C;YAEhD;;eAEG;YACH,OAAA;gBAAC,gBAAmB;qBAAnB,UAAmB,EAAnB,qBAAmB,EAAnB,IAAmB;oBAAnB,2BAAmB;;gBACpB;;;mBAGG;gBACH,OAAA,UAAC,IAA4B,EAAE,MAA6B;oBAC5D;;uBAEG;oBACH,OAAA,UAAO,SAAoB,EAAE,KAAqB;wBAArB,sBAAA,EAAA,YAAqB;;;;;4CAC9B,qBAAM,MAAM,CACxB,MAAM,CAAC,GAAG,CACN,UAAC,KAAK,IAAK,OAAA,UAAG,SAAS,SAAG,KAAK,CAAW,EAA/B,CAA+B,CACjC,CAChB,EAAA;;wCAJG,IAAI,GAAQ,SAIf;wCACD,IAAI,MAAM;4CAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wCAEjC,QAAQ,GACV,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAV,CAAU,CAAC;wCACpD,IAAI,IAAA,kBAAS,EAAC,IAAI,EAAE,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,KAAK,KAAK,EAAE;4CACzD,IACI,MAAM,CAAC,MAAM,KAAK,CAAC;gDACnB,IAAI,CAAC,MAAM;gDACV,IAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;gDACzC,KAAK;gDAEL,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAC,IAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAxB,CAAwB,CAAC,CAAC,CAAC;4CAC9D,MAAM,IAAI,KAAK,CACX,iBAAU,KAAK,gCAAsB,SAAS,cAAI,MAAM,CAAC,IAAI,CACzD,IAAI,CACP,OAAI,CACR,CAAC;yCACL;;;;;qBACJ;gBAxBD,CAwBC;YA5BD,CA4BC;QAjCD,CAiCC;IA3CD,CA2CC,CAAC;AAKV,CAAC,EA5NgB,aAAa,GAAb,qBAAa,KAAb,qBAAa,QA4N7B;AAMD,SAAS,OAAO,CAA8B,QAAkB;IAC5D,OAAO,QAAQ,CAAC,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,EAAE,EAAT,CAAS,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAhB,CAAgB,CAAC,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"TestValidator.js","sourceRoot":"","sources":["../src/TestValidator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,56 +1,59 @@
1
- {
2
- "name": "@nestia/e2e",
3
- "version": "0.1.7",
4
- "description": "E2E test utilify functions",
5
- "main": "lib/index.js",
6
- "scripts": {
7
- "build": "rimraf lib && tsc",
8
- "dev": "npm run build -- --watch",
9
- "prettier": "prettier --write ./src/**/*.ts",
10
- "test": "node lib/test",
11
- "prepare": "ts-patch install"
12
- },
13
- "repository": {
14
- "type": "git",
15
- "url": "https://github.com/samchon/nestia"
16
- },
17
- "keywords": [
18
- "e2e",
19
- "nestia",
20
- "nestjs",
21
- "test",
22
- "tdd",
23
- "utility"
24
- ],
25
- "author": "Jeongho Nam",
26
- "license": "MIT",
27
- "bugs": {
28
- "url": "https://github.com/samchon/nestia/issues"
29
- },
30
- "homepage": "https://github.com/samchon/nestia#readme",
31
- "devDependencies": {
32
- "@trivago/prettier-plugin-sort-imports": "^4.0.0",
33
- "@types/cli": "^0.11.21",
34
- "@types/node": "^18.11.18",
35
- "prettier": "^2.8.3",
36
- "rimraf": "^4.1.2",
37
- "ts-node": "^10.9.1",
38
- "ts-patch": "^2.1.0",
39
- "typescript": "^4.9.5",
40
- "typia": "^3.6.9"
41
- },
42
- "dependencies": {
43
- "chalk": "^4.1.2",
44
- "cli": "^1.0.1",
45
- "tstl": "^2.5.13"
46
- },
47
- "files": [
48
- "lib",
49
- "src",
50
- "!lib/test",
51
- "!src/test",
52
- "README.md",
53
- "LICENSE",
54
- "package.json"
55
- ]
56
- }
1
+ {
2
+ "name": "@nestia/e2e",
3
+ "version": "0.1.8",
4
+ "description": "E2E test utilify functions",
5
+ "main": "lib/index.js",
6
+ "scripts": {
7
+ "build": "rimraf lib && tsc",
8
+ "dev": "npm run build -- --watch",
9
+ "eslint": "eslint src",
10
+ "prettier": "prettier --write ./src/**/*.ts",
11
+ "prepare": "ts-patch install",
12
+ "test": "node lib/test"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/samchon/nestia"
17
+ },
18
+ "keywords": [
19
+ "e2e",
20
+ "nestia",
21
+ "nestjs",
22
+ "test",
23
+ "tdd",
24
+ "utility"
25
+ ],
26
+ "author": "Jeongho Nam",
27
+ "license": "MIT",
28
+ "bugs": {
29
+ "url": "https://github.com/samchon/nestia/issues"
30
+ },
31
+ "homepage": "https://github.com/samchon/nestia#readme",
32
+ "devDependencies": {
33
+ "@trivago/prettier-plugin-sort-imports": "^4.0.0",
34
+ "@types/cli": "^0.11.21",
35
+ "@types/node": "^18.11.18",
36
+ "@typescript-eslint/eslint-plugin": "^5.57.0",
37
+ "@typescript-eslint/parser": "^5.57.0",
38
+ "prettier": "^2.8.3",
39
+ "rimraf": "^4.1.2",
40
+ "ts-node": "^10.9.1",
41
+ "ts-patch": "^2.1.0",
42
+ "typescript": "^4.9.5",
43
+ "typia": "^3.6.9"
44
+ },
45
+ "dependencies": {
46
+ "chalk": "^4.1.2",
47
+ "cli": "^1.0.1",
48
+ "tstl": "^2.5.13"
49
+ },
50
+ "files": [
51
+ "lib",
52
+ "src",
53
+ "!lib/test",
54
+ "!src/test",
55
+ "README.md",
56
+ "LICENSE",
57
+ "package.json"
58
+ ]
59
+ }
@@ -17,12 +17,37 @@ export namespace TestValidator {
17
17
  * @param title Title of error message when condition is not satisfied
18
18
  * @return Currying function
19
19
  */
20
- export const predicate = (title: string) => (condition: () => boolean) => {
21
- if (condition() !== true)
22
- throw new Error(
23
- `Bug on ${title}: expected condition is not satisfied.`,
24
- );
25
- };
20
+ export const predicate =
21
+ (title: string) =>
22
+ <T extends boolean | (() => boolean) | (() => Promise<boolean>)>(
23
+ condition: T,
24
+ ): T extends () => Promise<boolean> ? Promise<void> : void => {
25
+ const message = () =>
26
+ `Bug on ${title}: expected condition is not satisfied.`;
27
+
28
+ // SCALAR
29
+ if (typeof condition === "boolean") {
30
+ if (condition !== true) throw new Error(message());
31
+ return undefined as any;
32
+ }
33
+
34
+ // CLOSURE
35
+ const output: boolean | Promise<boolean> = condition();
36
+ if (typeof output === "boolean") {
37
+ if (output !== true) throw new Error(message());
38
+ return undefined as any;
39
+ }
40
+
41
+ // ASYNCHRONOUS
42
+ return new Promise<void>((resolve, reject) => {
43
+ output
44
+ .then((flag) => {
45
+ if (flag === true) resolve();
46
+ else reject(message());
47
+ })
48
+ .catch(reject);
49
+ }) as any;
50
+ };
26
51
 
27
52
  /**
28
53
  * Test whether two values are equal.
@@ -59,13 +84,20 @@ export namespace TestValidator {
59
84
  */
60
85
  export const error =
61
86
  (title: string) =>
62
- async (task: () => any | Promise<any>): Promise<void> => {
87
+ <T>(task: () => T): T extends Promise<any> ? Promise<void> : void => {
88
+ const message = () => `Bug on ${title}: exception must be thrown.`;
63
89
  try {
64
- await task();
90
+ const output: T = task();
91
+ if (is_promise(output))
92
+ return new Promise<void>((resolve, reject) =>
93
+ output
94
+ .catch(() => resolve())
95
+ .then(() => reject(message())),
96
+ ) as any;
97
+ else throw new Error(message());
65
98
  } catch {
66
- return;
99
+ return undefined as any;
67
100
  }
68
- throw new Error(`Bug on ${title}: exception must be thrown.`);
69
101
  };
70
102
 
71
103
  /**
@@ -239,3 +271,12 @@ interface IEntity<Type extends string | number | bigint> {
239
271
  function get_ids<Entity extends IEntity<any>>(entities: Entity[]): string[] {
240
272
  return entities.map((entity) => entity.id).sort((x, y) => (x < y ? -1 : 1));
241
273
  }
274
+
275
+ function is_promise(input: any): input is Promise<any> {
276
+ return (
277
+ typeof input === "object" &&
278
+ input !== null &&
279
+ typeof (input as any).then === "function" &&
280
+ typeof (input as any).catch === "function"
281
+ );
282
+ }