@nestia/e2e 0.2.2 → 0.3.0

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.
package/README.md CHANGED
@@ -1,96 +1,60 @@
1
- # Nestia E2E Helper
1
+ # Nestia
2
+ ![Nestia Logo](https://nestia.io/logo.png)
3
+
2
4
  [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/samchon/nestia/blob/master/LICENSE)
3
- [![npm version](https://img.shields.io/npm/v/@nestia/e2e.svg)](https://www.npmjs.com/package/@nestia/e2e)
4
- [![Downloads](https://img.shields.io/npm/dm/@nestia/e2e.svg)](https://www.npmjs.com/package/@nestia/e2e)
5
- [![Build Status](https://github.com/samchon/typia/workflows/build/badge.svg)](https://github.com/samchon/nestia/actions?query=workflow%3Abuild)
6
- [![Guide Documents](https://img.shields.io/badge/wiki-documentation-forestgreen)](https://typia.io/docs/)
7
-
8
- Helper library for E2E testing in NestJS.
9
-
10
- With `@nestia/e2e`, you can easily validate your NestJS server through E2E testing.
11
-
12
- ```typescript
13
- import {
14
- ArrayUtil,
15
- GaffComparator,
16
- RandomGenerator,
17
- TestValidator,
18
- } from "@nestia/e2e";
19
- import typia from "typia";
20
-
21
- import api from "@samchon/bbs-api/lib/index";
22
- import { IBbsArticle } from "@samchon/bbs-api/lib/structures/bbs/IBbsArticle";
23
- import { IPage } from "@samchon/bbs-api/lib/structures/common/IPage";
24
-
25
- export async function test_api_bbs_article_index_sort(
26
- connection: api.IConnection,
27
- ): Promise<void> {
28
- // GENERATE 100 ARTICLES
29
- const section: string = "general";
30
- const articles: IBbsArticle[] = await ArrayUtil.asyncRepeat(100, () =>
31
- api.functional.bbs.articles.store(connection, section, {
32
- writer: RandomGenerator.name(),
33
- title: RandomGenerator.paragraph(5)(),
34
- body: RandomGenerator.content(8)()(),
35
- format: "txt",
36
- files: [],
37
- password: RandomGenerator.alphabets(8),
38
- }),
39
- );
40
- typia.assertEquals(articles);
41
-
42
- // PREPARE VALIDATOR
43
- const validator = TestValidator.sort("BbsArticleProvider.index()")(
44
- async (
45
- sort: IPage.IRequest.Sort<IBbsArticle.IRequest.SortableColumns>,
46
- ) => {
47
- const page: IPage<IBbsArticle.ISummary> =
48
- await api.functional.bbs.articles.index(connection, section, {
49
- limit: 100,
50
- sort,
51
- });
52
- return typia.assertEquals(page).data;
53
- },
54
- );
55
-
56
- // DO VALIDATE
57
- const components = [
58
- validator("created_at")(GaffComparator.dates((x) => x.created_at)),
59
- validator("updated_at")(GaffComparator.dates((x) => x.updated_at)),
60
- validator("title")(GaffComparator.strings((x) => x.title)),
61
- validator("writer")(GaffComparator.strings((x) => x.writer)),
62
- validator(
63
- "writer",
64
- "title",
65
- )(GaffComparator.strings((x) => [x.writer, x.title])),
66
- ];
67
- for (const comp of components) {
68
- await comp("+", false);
69
- await comp("-", false);
70
- }
71
- }
72
- ```
73
-
74
-
75
-
76
-
77
- ## Setup
78
- ```bash
79
- npm install --save-dev @nestia/e2e
80
- ```
81
-
82
- Just setup with npm command, that's all.
83
-
84
- For referece, due to test program would not be published, I rcommend to install as `dev` mode.
85
-
86
-
87
-
88
-
89
- ## Features
90
- About supported features, read descriptive comments of below:
91
-
92
- - [`ArrayUtil`](https://github.com/samchon/nestia/tree/master/packages/e2e/src/ArrayUtil.ts)
93
- - [`GaffComparator`](https://github.com/samchon/nestia/tree/master/packages/e2e/src/GaffComparator.ts)
94
- - [`RandomGenerator`](https://github.com/samchon/nestia/tree/master/packages/e2e/src/RandomGenerator.ts)
95
- - [`StopWatch`](https://github.com/samchon/nestia/tree/master/packages/e2e/src/StopWatch.ts)
96
- - [`TestValidator`](https://github.com/samchon/nestia/tree/master/packages/e2e/src/TestValidator.ts)
5
+ [![npm version](https://img.shields.io/npm/v/@nestia/core.svg)](https://www.npmjs.com/package/@nestia/core)
6
+ [![Downloads](https://img.shields.io/npm/dm/nestia.svg)](https://www.npmjs.com/package/nestia)
7
+ [![Build Status](https://github.com/samchon/nestia/workflows/build/badge.svg)](https://github.com/samchon/nestia/actions?query=workflow%3Abuild)
8
+ [![Guide Documents](https://img.shields.io/badge/guide-documents-forestgreen)](https://nestia.io/docs/)
9
+
10
+ Nestia is a set of helper libraries for NestJS, supporting below features:
11
+
12
+ - `@nestia/core`: super-fast decorators
13
+ - `@nestia/sdk`:
14
+ - SDK generator for clients
15
+ - Swagger generator evolved than ever
16
+ - Automatic E2E test functions generator
17
+ - `nestia`: just CLI (command line interface) tool
18
+
19
+ > **Note**
20
+ >
21
+ > - **Only one line** required, with pure TypeScript type
22
+ > - Runtime validator is **20,000x faster** than `class-validator`
23
+ > - JSON serialization is **200x faster** than `class-transformer`
24
+ > - SDK is similar with [tRPC](https://trpc.io), but much advanced
25
+
26
+ ![nestia-sdk-demo](https://user-images.githubusercontent.com/13158709/215004990-368c589d-7101-404e-b81b-fbc936382f05.gif)
27
+
28
+ > Left is server code, and right is client code utilizing SDK
29
+
30
+
31
+
32
+
33
+ ## Sponsors and Backers
34
+ Thanks for your support.
35
+
36
+ Your donation would encourage `nestia` development.
37
+
38
+ [![Backers](https://opencollective.com/nestia/backers.svg?avatarHeight=75&width=600)](https://opencollective.com/nestia)
39
+
40
+
41
+
42
+
43
+ ## Guide Documents
44
+ Check out the document in the [website](https://nestia.io/docs/):
45
+
46
+ ### 🏠 Home
47
+ - [Introduction](https://nestia.io/docs/)
48
+ - [Setup](https://nestia.io/docs/setup/)
49
+
50
+ ### 📖 Features
51
+ - [Pure TypeScript](https://nestia.io/docs/pure)
52
+ - Core Library
53
+ - [TypedRoute](https://nestia.io/docs/core/TypedRoute/)
54
+ - [TypedBody](https://nestia.io/docs/core/TypedBody/)
55
+ - [TypedParam](https://nestia.io/docs/core/TypedParam/)
56
+ - [TypedQuery](https://nestia.io/docs/core/TypedRoute/)
57
+ - Generators
58
+ - [Swagger Documents](https://nestia.io/docs/sdk/swagger/)
59
+ - [SDK Library](https://nestia.io/docs/sdk/sdk/)
60
+ - [E2E Functions](https://nestia.io/docs/sdk/e2e/)
@@ -65,6 +65,12 @@ export declare namespace DynamicExecutor {
65
65
  * @default true
66
66
  */
67
67
  showElapsedTime?: boolean;
68
+ /**
69
+ * Extension of dynamic functions.
70
+ *
71
+ * @default js
72
+ */
73
+ extension?: string;
68
74
  }
69
75
  /**
70
76
  * Report, result of dynamic execution.
@@ -164,8 +164,9 @@ var DynamicExecutor;
164
164
  return function (assert) {
165
165
  return function (path) { return __awaiter(_this, void 0, void 0, function () {
166
166
  var report, executor, iterator;
167
- return __generator(this, function (_a) {
168
- switch (_a.label) {
167
+ var _a;
168
+ return __generator(this, function (_b) {
169
+ switch (_b.label) {
169
170
  case 0:
170
171
  report = {
171
172
  location: path,
@@ -173,10 +174,10 @@ var DynamicExecutor;
173
174
  executions: [],
174
175
  };
175
176
  executor = execute(options)(report)(assert);
176
- iterator = iterate(executor);
177
+ iterator = iterate((_a = options.extension) !== null && _a !== void 0 ? _a : "js")(executor);
177
178
  return [4 /*yield*/, iterator(path)];
178
179
  case 1:
179
- _a.sent();
180
+ _b.sent();
180
181
  report.time = Date.now() - report.time;
181
182
  return [2 /*return*/, report];
182
183
  }
@@ -184,63 +185,65 @@ var DynamicExecutor;
184
185
  }); };
185
186
  };
186
187
  };
187
- var iterate = function (executor) {
188
- var visitor = function (path) { return __awaiter(_this, void 0, void 0, function () {
189
- var directory, directory_1, directory_1_1, file, location_1, stats, modulo, e_1_1;
190
- var e_1, _a;
191
- return __generator(this, function (_b) {
192
- var _c;
193
- switch (_b.label) {
194
- case 0: return [4 /*yield*/, fs_1.default.promises.readdir(path)];
195
- case 1:
196
- directory = _b.sent();
197
- _b.label = 2;
198
- case 2:
199
- _b.trys.push([2, 12, 13, 14]);
200
- directory_1 = __values(directory), directory_1_1 = directory_1.next();
201
- _b.label = 3;
202
- case 3:
203
- if (!!directory_1_1.done) return [3 /*break*/, 11];
204
- file = directory_1_1.value;
205
- location_1 = path_1.default.resolve("".concat(path, "/").concat(file));
206
- return [4 /*yield*/, fs_1.default.promises.lstat(location_1)];
207
- case 4:
208
- stats = _b.sent();
209
- if (!(stats.isDirectory() === true)) return [3 /*break*/, 6];
210
- return [4 /*yield*/, visitor(location_1)];
211
- case 5:
212
- _b.sent();
213
- return [3 /*break*/, 10];
214
- case 6:
215
- if (file.substr(-3) !== ".".concat(EXTENSION))
188
+ var iterate = function (extension) {
189
+ return function (executor) {
190
+ var visitor = function (path) { return __awaiter(_this, void 0, void 0, function () {
191
+ var directory, directory_1, directory_1_1, file, location_1, stats, modulo, e_1_1;
192
+ var e_1, _a;
193
+ return __generator(this, function (_b) {
194
+ var _c;
195
+ switch (_b.label) {
196
+ case 0: return [4 /*yield*/, fs_1.default.promises.readdir(path)];
197
+ case 1:
198
+ directory = _b.sent();
199
+ _b.label = 2;
200
+ case 2:
201
+ _b.trys.push([2, 12, 13, 14]);
202
+ directory_1 = __values(directory), directory_1_1 = directory_1.next();
203
+ _b.label = 3;
204
+ case 3:
205
+ if (!!directory_1_1.done) return [3 /*break*/, 11];
206
+ file = directory_1_1.value;
207
+ location_1 = path_1.default.resolve("".concat(path, "/").concat(file));
208
+ return [4 /*yield*/, fs_1.default.promises.lstat(location_1)];
209
+ case 4:
210
+ stats = _b.sent();
211
+ if (!(stats.isDirectory() === true)) return [3 /*break*/, 6];
212
+ return [4 /*yield*/, visitor(location_1)];
213
+ case 5:
214
+ _b.sent();
216
215
  return [3 /*break*/, 10];
217
- _b.label = 7;
218
- case 7: return [4 /*yield*/, (_c = location_1, Promise.resolve().then(function () { return __importStar(require(_c)); }))];
219
- case 8:
220
- modulo = _b.sent();
221
- return [4 /*yield*/, executor(location_1, modulo)];
222
- case 9:
223
- _b.sent();
224
- _b.label = 10;
225
- case 10:
226
- directory_1_1 = directory_1.next();
227
- return [3 /*break*/, 3];
228
- case 11: return [3 /*break*/, 14];
229
- case 12:
230
- e_1_1 = _b.sent();
231
- e_1 = { error: e_1_1 };
232
- return [3 /*break*/, 14];
233
- case 13:
234
- try {
235
- if (directory_1_1 && !directory_1_1.done && (_a = directory_1.return)) _a.call(directory_1);
236
- }
237
- finally { if (e_1) throw e_1.error; }
238
- return [7 /*endfinally*/];
239
- case 14: return [2 /*return*/];
240
- }
241
- });
242
- }); };
243
- return visitor;
216
+ case 6:
217
+ if (file.substr(-3) !== ".".concat(extension))
218
+ return [3 /*break*/, 10];
219
+ _b.label = 7;
220
+ case 7: return [4 /*yield*/, (_c = location_1, Promise.resolve().then(function () { return __importStar(require(_c)); }))];
221
+ case 8:
222
+ modulo = _b.sent();
223
+ return [4 /*yield*/, executor(location_1, modulo)];
224
+ case 9:
225
+ _b.sent();
226
+ _b.label = 10;
227
+ case 10:
228
+ directory_1_1 = directory_1.next();
229
+ return [3 /*break*/, 3];
230
+ case 11: return [3 /*break*/, 14];
231
+ case 12:
232
+ e_1_1 = _b.sent();
233
+ e_1 = { error: e_1_1 };
234
+ return [3 /*break*/, 14];
235
+ case 13:
236
+ try {
237
+ if (directory_1_1 && !directory_1_1.done && (_a = directory_1.return)) _a.call(directory_1);
238
+ }
239
+ finally { if (e_1) throw e_1.error; }
240
+ return [7 /*endfinally*/];
241
+ case 14: return [2 /*return*/];
242
+ }
243
+ });
244
+ }); };
245
+ return visitor;
246
+ };
244
247
  };
245
248
  var execute = function (options) {
246
249
  return function (report) {
@@ -347,6 +350,5 @@ var DynamicExecutor;
347
350
  };
348
351
  };
349
352
  };
350
- var EXTENSION = __filename.substring(__filename.length - 2);
351
353
  })(DynamicExecutor = exports.DynamicExecutor || (exports.DynamicExecutor = {}));
352
354
  //# sourceMappingURL=DynamicExecutor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicExecutor.js","sourceRoot":"","sources":["../src/DynamicExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DynamicExecutor.js","sourceRoot":"","sources":["../src/DynamicExecutor.ts"],"names":[],"mappings":"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"}
@@ -53,7 +53,7 @@ export declare namespace RandomGenerator {
53
53
  *
54
54
  * @param prefix Prefix string, default is "010"
55
55
  * @returns Random mobile number
56
- * @example 010-334-0067
56
+ * @example 0103340067
57
57
  */
58
58
  const mobile: (prefix?: string) => string;
59
59
  /**
@@ -122,7 +122,7 @@ var RandomGenerator;
122
122
  *
123
123
  * @param prefix Prefix string, default is "010"
124
124
  * @returns Random mobile number
125
- * @example 010-334-0067
125
+ * @example 0103340067
126
126
  */
127
127
  RandomGenerator.mobile = function (prefix) {
128
128
  if (prefix === void 0) { prefix = "010"; }
@@ -133,7 +133,7 @@ var RandomGenerator;
133
133
  return value.toString().padStart(value < 1000 ? 3 : 4, "0");
134
134
  })(),
135
135
  (0, tstl_1.randint)(0, 9999).toString().padStart(4, "0"),
136
- ].join("-");
136
+ ].join("");
137
137
  };
138
138
  /**
139
139
  * Generate random date.
@@ -1 +1 @@
1
- {"version":3,"file":"RandomGenerator.js","sourceRoot":"","sources":["../src/RandomGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RandomGenerator.js","sourceRoot":"","sources":["../src/RandomGenerator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestia/e2e",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "description": "E2E test utilify functions",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -28,7 +28,7 @@
28
28
  "bugs": {
29
29
  "url": "https://github.com/samchon/nestia/issues"
30
30
  },
31
- "homepage": "https://github.com/samchon/nestia#readme",
31
+ "homepage": "https://nestia.io",
32
32
  "devDependencies": {
33
33
  "@trivago/prettier-plugin-sort-imports": "^4.0.0",
34
34
  "@types/cli": "^0.11.21",
@@ -79,6 +79,13 @@ export namespace DynamicExecutor {
79
79
  * @default true
80
80
  */
81
81
  showElapsedTime?: boolean;
82
+
83
+ /**
84
+ * Extension of dynamic functions.
85
+ *
86
+ * @default js
87
+ */
88
+ extension?: string;
82
89
  }
83
90
 
84
91
  /**
@@ -179,33 +186,40 @@ export namespace DynamicExecutor {
179
186
  };
180
187
 
181
188
  const executor = execute(options)(report)(assert);
182
- const iterator = iterate(executor);
189
+ const iterator = iterate(options.extension ?? "js")(executor);
183
190
  await iterator(path);
184
191
 
185
192
  report.time = Date.now() - report.time;
186
193
  return report;
187
194
  };
188
195
 
189
- const iterate = <Arguments extends any[]>(
190
- executor: (path: string, modulo: Module<Arguments>) => Promise<void>,
191
- ) => {
192
- const visitor = async (path: string): Promise<void> => {
193
- const directory: string[] = await fs.promises.readdir(path);
194
- for (const file of directory) {
195
- const location: string = NodePath.resolve(`${path}/${file}`);
196
- const stats: fs.Stats = await fs.promises.lstat(location);
196
+ const iterate =
197
+ (extension: string) =>
198
+ <Arguments extends any[]>(
199
+ executor: (
200
+ path: string,
201
+ modulo: Module<Arguments>,
202
+ ) => Promise<void>,
203
+ ) => {
204
+ const visitor = async (path: string): Promise<void> => {
205
+ const directory: string[] = await fs.promises.readdir(path);
206
+ for (const file of directory) {
207
+ const location: string = NodePath.resolve(
208
+ `${path}/${file}`,
209
+ );
210
+ const stats: fs.Stats = await fs.promises.lstat(location);
197
211
 
198
- if (stats.isDirectory() === true) {
199
- await visitor(location);
200
- continue;
201
- } else if (file.substr(-3) !== `.${EXTENSION}`) continue;
212
+ if (stats.isDirectory() === true) {
213
+ await visitor(location);
214
+ continue;
215
+ } else if (file.substr(-3) !== `.${extension}`) continue;
202
216
 
203
- const modulo: Module<Arguments> = await import(location);
204
- await executor(location, modulo);
205
- }
217
+ const modulo: Module<Arguments> = await import(location);
218
+ await executor(location, modulo);
219
+ }
220
+ };
221
+ return visitor;
206
222
  };
207
- return visitor;
208
- };
209
223
 
210
224
  const execute =
211
225
  <Arguments extends any[]>(options: IOptions<Arguments>) =>
@@ -263,5 +277,4 @@ export namespace DynamicExecutor {
263
277
  interface Module<Arguments extends any[]> {
264
278
  [key: string]: Closure<Arguments>;
265
279
  }
266
- const EXTENSION: string = __filename.substring(__filename.length - 2);
267
280
  }
@@ -115,7 +115,7 @@ export namespace RandomGenerator {
115
115
  *
116
116
  * @param prefix Prefix string, default is "010"
117
117
  * @returns Random mobile number
118
- * @example 010-334-0067
118
+ * @example 0103340067
119
119
  */
120
120
  export const mobile = (prefix: string = "010"): string =>
121
121
  [
@@ -125,7 +125,7 @@ export namespace RandomGenerator {
125
125
  return value.toString().padStart(value < 1_000 ? 3 : 4, "0");
126
126
  })(),
127
127
  randint(0, 9999).toString().padStart(4, "0"),
128
- ].join("-");
128
+ ].join("");
129
129
 
130
130
  /**
131
131
  * Generate random date.