@nestia/e2e 0.4.1 → 0.4.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.
- package/lib/DynamicExecutor.d.ts +4 -3
- package/lib/DynamicExecutor.js +1 -1
- package/lib/DynamicExecutor.js.map +1 -1
- package/lib/RandomGenerator.js +2 -2
- package/lib/RandomGenerator.js.map +1 -1
- package/lib/TestValidator.d.ts +2 -2
- package/lib/TestValidator.js +39 -6
- package/lib/TestValidator.js.map +1 -1
- package/package.json +4 -4
- package/src/ArrayUtil.ts +98 -98
- package/src/DynamicExecutor.ts +277 -272
- package/src/GaffComparator.ts +69 -69
- package/src/RandomGenerator.ts +2 -2
- package/src/StopWatch.ts +38 -38
- package/src/TestValidator.ts +7 -3
- package/src/index.ts +4 -4
- package/src/internal/json_equal_to.ts +34 -34
- package/src/module.ts +6 -6
package/lib/DynamicExecutor.d.ts
CHANGED
|
@@ -56,9 +56,10 @@ export declare namespace DynamicExecutor {
|
|
|
56
56
|
*
|
|
57
57
|
* @param name Function name
|
|
58
58
|
* @param closure Function to be executed
|
|
59
|
+
* @param parameters Parameters, result of options.parameters function.
|
|
59
60
|
* @returns Wrapper function
|
|
60
61
|
*/
|
|
61
|
-
wrapper?: (name: string, closure: Closure<Parameters, Ret
|
|
62
|
+
wrapper?: (name: string, closure: Closure<Parameters, Ret>, paramters: Parameters) => Promise<any>;
|
|
62
63
|
/**
|
|
63
64
|
* Whether to show elapsed time on `console` or not.
|
|
64
65
|
*
|
|
@@ -122,7 +123,7 @@ export declare namespace DynamicExecutor {
|
|
|
122
123
|
* @param options Options of dynamic executor
|
|
123
124
|
* @returns Runner of dynamic functions with specific location
|
|
124
125
|
*/
|
|
125
|
-
const assert: <Arguments extends any[]>(options: IOptions<Arguments
|
|
126
|
+
const assert: <Arguments extends any[]>(options: IOptions<Arguments>) => (path: string) => Promise<IReport>;
|
|
126
127
|
/**
|
|
127
128
|
* Prepare dynamic executor in loose mode.
|
|
128
129
|
*
|
|
@@ -133,5 +134,5 @@ export declare namespace DynamicExecutor {
|
|
|
133
134
|
* @param options Options of dynamic executor
|
|
134
135
|
* @returns Runner of dynamic functions with specific location
|
|
135
136
|
*/
|
|
136
|
-
const validate: <Arguments extends any[]>(options: IOptions<Arguments
|
|
137
|
+
const validate: <Arguments extends any[]>(options: IOptions<Arguments>) => (path: string) => Promise<IReport>;
|
|
137
138
|
}
|
package/lib/DynamicExecutor.js
CHANGED
|
@@ -268,7 +268,7 @@ var DynamicExecutor;
|
|
|
268
268
|
switch (_a.label) {
|
|
269
269
|
case 0:
|
|
270
270
|
if (!(options.wrapper !== undefined)) return [3 /*break*/, 2];
|
|
271
|
-
return [4 /*yield*/, options.wrapper(key, closure)];
|
|
271
|
+
return [4 /*yield*/, options.wrapper(key, closure, options.parameters(key))];
|
|
272
272
|
case 1:
|
|
273
273
|
_a.sent();
|
|
274
274
|
return [3 /*break*/, 4];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicExecutor.js","sourceRoot":"","sources":["../src/DynamicExecutor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAA0B;AAC1B,0CAAoB;AACpB,8CAA4B;AAE5B,yCAAwC;AAExC;;;;;;;;;;;;GAYG;AACH,IAAiB,eAAe,
|
|
1
|
+
{"version":3,"file":"DynamicExecutor.js","sourceRoot":"","sources":["../src/DynamicExecutor.ts"],"names":[],"mappings":"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"}
|
package/lib/RandomGenerator.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RandomGenerator = void 0;
|
|
4
4
|
var tstl_1 = require("tstl");
|
|
5
|
-
var
|
|
5
|
+
var tstl_2 = require("tstl");
|
|
6
6
|
/**
|
|
7
7
|
* Random data generator.
|
|
8
8
|
*
|
|
@@ -157,7 +157,7 @@ var RandomGenerator;
|
|
|
157
157
|
RandomGenerator.sample = function (array) {
|
|
158
158
|
return function (count) {
|
|
159
159
|
var ret = [];
|
|
160
|
-
|
|
160
|
+
tstl_2.ranges.sample(array, (0, tstl_1.back_inserter)(ret), count);
|
|
161
161
|
return ret;
|
|
162
162
|
};
|
|
163
163
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RandomGenerator.js","sourceRoot":"","sources":["../src/RandomGenerator.ts"],"names":[],"mappings":";;;AAAA,6BAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"RandomGenerator.js","sourceRoot":"","sources":["../src/RandomGenerator.ts"],"names":[],"mappings":"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"}
|
package/lib/TestValidator.d.ts
CHANGED
|
@@ -62,7 +62,7 @@ export declare namespace TestValidator {
|
|
|
62
62
|
*
|
|
63
63
|
* @example https://github.com/samchon/nestia-template/blob/master/src/test/features/api/bbs/test_api_bbs_article_index_search.ts
|
|
64
64
|
*/
|
|
65
|
-
const search: (title: string) => <Entity extends IEntity<any>,
|
|
65
|
+
const search: (title: string) => <Entity extends IEntity<any>, Request>(getter: (input: Request) => Promise<Entity[]>) => (total: Entity[], sampleCount?: number) => <Values extends any[]>(props: ISearchProps<Entity, Values, Request>) => Promise<void>;
|
|
66
66
|
interface ISearchProps<Entity extends IEntity<any>, Values extends any[], Request> {
|
|
67
67
|
fields: string[];
|
|
68
68
|
values(entity: Entity): Values;
|
|
@@ -81,7 +81,7 @@ export declare namespace TestValidator {
|
|
|
81
81
|
* @param title Title of error message when sorting is invalid
|
|
82
82
|
* @example https://github.com/samchon/nestia-template/blob/master/src/test/features/api/bbs/test_api_bbs_article_index_sort.ts
|
|
83
83
|
*/
|
|
84
|
-
const sort: (title: string) => <T extends object, Fields extends string,
|
|
84
|
+
const sort: (title: string) => <T extends object, Fields extends string, Sortable extends (`-${Fields}` | `+${Fields}`)[] = (`-${Fields}` | `+${Fields}`)[]>(getter: (sortable: Sortable) => Promise<T[]>) => (...fields: Fields[]) => (comp: (x: T, y: T) => number, filter?: ((elem: T) => boolean) | undefined) => (direction: "+" | "-", trace?: boolean) => Promise<void>;
|
|
85
85
|
type Sortable<Literal extends string> = Array<`-${Literal}` | `+${Literal}`>;
|
|
86
86
|
}
|
|
87
87
|
interface IEntity<Type extends string | number | bigint> {
|
package/lib/TestValidator.js
CHANGED
|
@@ -46,9 +46,34 @@ var __values = (this && this.__values) || function(o) {
|
|
|
46
46
|
};
|
|
47
47
|
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
48
48
|
};
|
|
49
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
50
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
51
|
+
if (!m) return o;
|
|
52
|
+
var i = m.call(o), r, ar = [], e;
|
|
53
|
+
try {
|
|
54
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
55
|
+
}
|
|
56
|
+
catch (error) { e = { error: error }; }
|
|
57
|
+
finally {
|
|
58
|
+
try {
|
|
59
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
60
|
+
}
|
|
61
|
+
finally { if (e) throw e.error; }
|
|
62
|
+
}
|
|
63
|
+
return ar;
|
|
64
|
+
};
|
|
65
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
66
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
67
|
+
if (ar || !(i in from)) {
|
|
68
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
69
|
+
ar[i] = from[i];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
73
|
+
};
|
|
49
74
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
75
|
exports.TestValidator = void 0;
|
|
51
|
-
var
|
|
76
|
+
var tstl_1 = require("tstl");
|
|
52
77
|
var RandomGenerator_1 = require("./RandomGenerator");
|
|
53
78
|
var json_equal_to_1 = require("./internal/json_equal_to");
|
|
54
79
|
/**
|
|
@@ -116,7 +141,11 @@ var TestValidator;
|
|
|
116
141
|
return function (y) {
|
|
117
142
|
var diff = (0, json_equal_to_1.json_equal_to)(exception)(x)(y);
|
|
118
143
|
if (diff.length)
|
|
119
|
-
throw new Error(
|
|
144
|
+
throw new Error([
|
|
145
|
+
"Bug on ".concat(title, ": found different values - [").concat(diff.join(", "), "]:"),
|
|
146
|
+
"\n",
|
|
147
|
+
JSON.stringify({ x: x, y: y }, null, 2),
|
|
148
|
+
].join("\n"));
|
|
120
149
|
};
|
|
121
150
|
};
|
|
122
151
|
};
|
|
@@ -358,10 +387,14 @@ var TestValidator;
|
|
|
358
387
|
/**
|
|
359
388
|
* @param direction "+" means ascending order, and "-" means descending order
|
|
360
389
|
*/
|
|
361
|
-
return function (
|
|
362
|
-
|
|
363
|
-
|
|
390
|
+
return function (direction_1) {
|
|
391
|
+
var args_1 = [];
|
|
392
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
393
|
+
args_1[_i - 1] = arguments[_i];
|
|
394
|
+
}
|
|
395
|
+
return __awaiter(_this, __spreadArray([direction_1], __read(args_1), false), void 0, function (direction, trace) {
|
|
364
396
|
var data, reversed;
|
|
397
|
+
if (trace === void 0) { trace = true; }
|
|
365
398
|
return __generator(this, function (_a) {
|
|
366
399
|
switch (_a.label) {
|
|
367
400
|
case 0: return [4 /*yield*/, getter(fields.map(function (field) { return "".concat(direction).concat(field); }))];
|
|
@@ -370,7 +403,7 @@ var TestValidator;
|
|
|
370
403
|
if (filter)
|
|
371
404
|
data = data.filter(filter);
|
|
372
405
|
reversed = direction === "+" ? comp : function (x, y) { return comp(y, x); };
|
|
373
|
-
if (
|
|
406
|
+
if (tstl_1.ranges.is_sorted(data, function (x, y) { return reversed(x, y) < 0; }) === false) {
|
|
374
407
|
if (fields.length === 1 &&
|
|
375
408
|
data.length &&
|
|
376
409
|
data[0][fields[0]] !== undefined &&
|
package/lib/TestValidator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestValidator.js","sourceRoot":"","sources":["../src/TestValidator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TestValidator.js","sourceRoot":"","sources":["../src/TestValidator.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.4.
|
|
3
|
+
"version": "0.4.3",
|
|
4
4
|
"description": "E2E test utilify functions",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -37,13 +37,13 @@
|
|
|
37
37
|
"rimraf": "^4.1.2",
|
|
38
38
|
"ts-node": "^10.9.1",
|
|
39
39
|
"ts-patch": "^3.1.0",
|
|
40
|
-
"typescript": "^5.
|
|
41
|
-
"typia": "^5.
|
|
40
|
+
"typescript": "^5.4.2",
|
|
41
|
+
"typia": "^5.5.7"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"chalk": "^4.1.2",
|
|
45
45
|
"cli": "^1.0.1",
|
|
46
|
-
"tstl": "^
|
|
46
|
+
"tstl": "^3.0.0"
|
|
47
47
|
},
|
|
48
48
|
"files": [
|
|
49
49
|
"lib",
|
package/src/ArrayUtil.ts
CHANGED
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Utility functions for arrays.
|
|
3
|
-
*
|
|
4
|
-
* @author Jeongho Nam - https://github.com/samchon
|
|
5
|
-
*/
|
|
6
|
-
export namespace ArrayUtil {
|
|
7
|
-
export const asyncFilter =
|
|
8
|
-
<Input>(elements: readonly Input[]) =>
|
|
9
|
-
async (
|
|
10
|
-
pred: (
|
|
11
|
-
elem: Input,
|
|
12
|
-
index: number,
|
|
13
|
-
array: readonly Input[],
|
|
14
|
-
) => Promise<boolean>,
|
|
15
|
-
): Promise<Input[]> => {
|
|
16
|
-
const ret: Input[] = [];
|
|
17
|
-
await asyncForEach(elements)(async (elem, index, array) => {
|
|
18
|
-
const flag: boolean = await pred(elem, index, array);
|
|
19
|
-
if (flag === true) ret.push(elem);
|
|
20
|
-
});
|
|
21
|
-
return ret;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export const asyncForEach =
|
|
25
|
-
<Input>(elements: readonly Input[]) =>
|
|
26
|
-
async (
|
|
27
|
-
closure: (
|
|
28
|
-
elem: Input,
|
|
29
|
-
index: number,
|
|
30
|
-
array: readonly Input[],
|
|
31
|
-
) => Promise<any>,
|
|
32
|
-
): Promise<void> => {
|
|
33
|
-
await asyncRepeat(elements.length)((index) =>
|
|
34
|
-
closure(elements[index], index, elements),
|
|
35
|
-
);
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
export const asyncMap =
|
|
39
|
-
<Input>(elements: readonly Input[]) =>
|
|
40
|
-
async <Output>(
|
|
41
|
-
closure: (
|
|
42
|
-
elem: Input,
|
|
43
|
-
index: number,
|
|
44
|
-
array: readonly Input[],
|
|
45
|
-
) => Promise<Output>,
|
|
46
|
-
): Promise<Output[]> => {
|
|
47
|
-
const ret: Output[] = [];
|
|
48
|
-
await asyncForEach(elements)(async (elem, index, array) => {
|
|
49
|
-
const output: Output = await closure(elem, index, array);
|
|
50
|
-
ret.push(output);
|
|
51
|
-
});
|
|
52
|
-
return ret;
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
export const asyncRepeat =
|
|
56
|
-
(count: number) =>
|
|
57
|
-
async <T>(closure: (index: number) => Promise<T>): Promise<T[]> => {
|
|
58
|
-
const indexes: number[] = new Array(count)
|
|
59
|
-
.fill(1)
|
|
60
|
-
.map((_, index) => index);
|
|
61
|
-
|
|
62
|
-
const output: T[] = [];
|
|
63
|
-
for (const index of indexes) output.push(await closure(index));
|
|
64
|
-
|
|
65
|
-
return output;
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
export const has =
|
|
69
|
-
<T>(elements: readonly T[]) =>
|
|
70
|
-
(pred: (elem: T) => boolean): boolean =>
|
|
71
|
-
elements.find(pred) !== undefined;
|
|
72
|
-
|
|
73
|
-
export const repeat =
|
|
74
|
-
(count: number) =>
|
|
75
|
-
<T>(closure: (index: number) => T): T[] =>
|
|
76
|
-
new Array(count).fill("").map((_, index) => closure(index));
|
|
77
|
-
|
|
78
|
-
export const flat = <T>(matrix: T[][]): T[] => ([] as T[]).concat(...matrix);
|
|
79
|
-
|
|
80
|
-
export const subsets = <T>(array: T[]): T[][] => {
|
|
81
|
-
const check: boolean[] = new Array(array.length).fill(false);
|
|
82
|
-
const output: T[][] = [];
|
|
83
|
-
|
|
84
|
-
const dfs = (depth: number): void => {
|
|
85
|
-
if (depth === check.length)
|
|
86
|
-
output.push(array.filter((_v, idx) => check[idx]));
|
|
87
|
-
else {
|
|
88
|
-
check[depth] = true;
|
|
89
|
-
dfs(depth + 1);
|
|
90
|
-
|
|
91
|
-
check[depth] = false;
|
|
92
|
-
dfs(depth + 1);
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
dfs(0);
|
|
96
|
-
return output;
|
|
97
|
-
};
|
|
98
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for arrays.
|
|
3
|
+
*
|
|
4
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
5
|
+
*/
|
|
6
|
+
export namespace ArrayUtil {
|
|
7
|
+
export const asyncFilter =
|
|
8
|
+
<Input>(elements: readonly Input[]) =>
|
|
9
|
+
async (
|
|
10
|
+
pred: (
|
|
11
|
+
elem: Input,
|
|
12
|
+
index: number,
|
|
13
|
+
array: readonly Input[],
|
|
14
|
+
) => Promise<boolean>,
|
|
15
|
+
): Promise<Input[]> => {
|
|
16
|
+
const ret: Input[] = [];
|
|
17
|
+
await asyncForEach(elements)(async (elem, index, array) => {
|
|
18
|
+
const flag: boolean = await pred(elem, index, array);
|
|
19
|
+
if (flag === true) ret.push(elem);
|
|
20
|
+
});
|
|
21
|
+
return ret;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const asyncForEach =
|
|
25
|
+
<Input>(elements: readonly Input[]) =>
|
|
26
|
+
async (
|
|
27
|
+
closure: (
|
|
28
|
+
elem: Input,
|
|
29
|
+
index: number,
|
|
30
|
+
array: readonly Input[],
|
|
31
|
+
) => Promise<any>,
|
|
32
|
+
): Promise<void> => {
|
|
33
|
+
await asyncRepeat(elements.length)((index) =>
|
|
34
|
+
closure(elements[index], index, elements),
|
|
35
|
+
);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export const asyncMap =
|
|
39
|
+
<Input>(elements: readonly Input[]) =>
|
|
40
|
+
async <Output>(
|
|
41
|
+
closure: (
|
|
42
|
+
elem: Input,
|
|
43
|
+
index: number,
|
|
44
|
+
array: readonly Input[],
|
|
45
|
+
) => Promise<Output>,
|
|
46
|
+
): Promise<Output[]> => {
|
|
47
|
+
const ret: Output[] = [];
|
|
48
|
+
await asyncForEach(elements)(async (elem, index, array) => {
|
|
49
|
+
const output: Output = await closure(elem, index, array);
|
|
50
|
+
ret.push(output);
|
|
51
|
+
});
|
|
52
|
+
return ret;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export const asyncRepeat =
|
|
56
|
+
(count: number) =>
|
|
57
|
+
async <T>(closure: (index: number) => Promise<T>): Promise<T[]> => {
|
|
58
|
+
const indexes: number[] = new Array(count)
|
|
59
|
+
.fill(1)
|
|
60
|
+
.map((_, index) => index);
|
|
61
|
+
|
|
62
|
+
const output: T[] = [];
|
|
63
|
+
for (const index of indexes) output.push(await closure(index));
|
|
64
|
+
|
|
65
|
+
return output;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export const has =
|
|
69
|
+
<T>(elements: readonly T[]) =>
|
|
70
|
+
(pred: (elem: T) => boolean): boolean =>
|
|
71
|
+
elements.find(pred) !== undefined;
|
|
72
|
+
|
|
73
|
+
export const repeat =
|
|
74
|
+
(count: number) =>
|
|
75
|
+
<T>(closure: (index: number) => T): T[] =>
|
|
76
|
+
new Array(count).fill("").map((_, index) => closure(index));
|
|
77
|
+
|
|
78
|
+
export const flat = <T>(matrix: T[][]): T[] => ([] as T[]).concat(...matrix);
|
|
79
|
+
|
|
80
|
+
export const subsets = <T>(array: T[]): T[][] => {
|
|
81
|
+
const check: boolean[] = new Array(array.length).fill(false);
|
|
82
|
+
const output: T[][] = [];
|
|
83
|
+
|
|
84
|
+
const dfs = (depth: number): void => {
|
|
85
|
+
if (depth === check.length)
|
|
86
|
+
output.push(array.filter((_v, idx) => check[idx]));
|
|
87
|
+
else {
|
|
88
|
+
check[depth] = true;
|
|
89
|
+
dfs(depth + 1);
|
|
90
|
+
|
|
91
|
+
check[depth] = false;
|
|
92
|
+
dfs(depth + 1);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
dfs(0);
|
|
96
|
+
return output;
|
|
97
|
+
};
|
|
98
|
+
}
|