@nestia/e2e 0.1.5 → 0.1.7

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.
@@ -6,6 +6,25 @@
6
6
  * @author Jeongho Nam - https://github.com/samchon
7
7
  */
8
8
  export declare namespace TestValidator {
9
+ /**
10
+ * Test whether condition is satisfied.
11
+ *
12
+ * @param title Title of error message when condition is not satisfied
13
+ * @return Currying function
14
+ */
15
+ const predicate: (title: string) => (condition: () => boolean) => void;
16
+ /**
17
+ * Test whether two values are equal.
18
+ *
19
+ * If you want to validate `covers` relationship,
20
+ * call smaller first and then larger.
21
+ *
22
+ * Otherwise you wanna non equals validator, combine with {@link error}.
23
+ *
24
+ * @param title Title of error message when different
25
+ * @returns Currying function
26
+ */
27
+ const equals: (title: string) => <T>(x: T) => (y: T) => void;
9
28
  /**
10
29
  * Test whether error occurs.
11
30
  *
@@ -50,6 +50,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
50
50
  exports.TestValidator = void 0;
51
51
  var ranges_1 = require("tstl/ranges");
52
52
  var RandomGenerator_1 = require("./RandomGenerator");
53
+ var json_equal_to_1 = require("./internal/json_equal_to");
53
54
  /**
54
55
  * Test validator.
55
56
  *
@@ -60,6 +61,36 @@ var RandomGenerator_1 = require("./RandomGenerator");
60
61
  var TestValidator;
61
62
  (function (TestValidator) {
62
63
  var _this = this;
64
+ /**
65
+ * Test whether condition is satisfied.
66
+ *
67
+ * @param title Title of error message when condition is not satisfied
68
+ * @return Currying function
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
+ }; };
74
+ /**
75
+ * Test whether two values are equal.
76
+ *
77
+ * If you want to validate `covers` relationship,
78
+ * call smaller first and then larger.
79
+ *
80
+ * Otherwise you wanna non equals validator, combine with {@link error}.
81
+ *
82
+ * @param title Title of error message when different
83
+ * @returns Currying function
84
+ */
85
+ TestValidator.equals = function (title) {
86
+ return function (x) {
87
+ return function (y) {
88
+ var diff = (0, json_equal_to_1.json_equal_to)(x, y);
89
+ if (diff.length)
90
+ throw new Error("Bug on ".concat(title, ": found different values - [").concat(diff.join(", "), "]"));
91
+ };
92
+ };
93
+ };
63
94
  /**
64
95
  * Test whether error occurs.
65
96
  *
@@ -1 +1 @@
1
- {"version":3,"file":"TestValidator.js","sourceRoot":"","sources":["../src/TestValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TestValidator.js","sourceRoot":"","sources":["../src/TestValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function json_equal_to<T>(x: T, y: T): string[];
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.json_equal_to = void 0;
4
+ function array_equal_to(items, name, x, y) {
5
+ if (x.length !== y.length)
6
+ items.push("".concat(name, ".length"));
7
+ x.forEach(function (xItem, i) { return any_equal_to(items, "".concat(name, "[").concat(i, "]"), xItem, y[i]); });
8
+ }
9
+ function object_equal_to(items, name, x, y) {
10
+ for (var key in x) {
11
+ if (key.substr(-2) === "id" || key.substr(-3) === "_at")
12
+ continue;
13
+ any_equal_to(items, "".concat(name, ".").concat(key), x[key], y[key]);
14
+ }
15
+ return true;
16
+ }
17
+ function any_equal_to(items, name, x, y) {
18
+ if (typeof x !== typeof y)
19
+ items.push(name);
20
+ else if (x instanceof Array)
21
+ if (!(y instanceof Array))
22
+ items.push(name);
23
+ else
24
+ array_equal_to(items, name, x, y);
25
+ else if (x instanceof Object)
26
+ object_equal_to(items, name, x, y);
27
+ else if (x !== y)
28
+ items.push(name);
29
+ }
30
+ function json_equal_to(x, y) {
31
+ var ret = [];
32
+ any_equal_to(ret, "", x, y);
33
+ return ret;
34
+ }
35
+ exports.json_equal_to = json_equal_to;
36
+ //# sourceMappingURL=json_equal_to.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json_equal_to.js","sourceRoot":"","sources":["../../src/internal/json_equal_to.ts"],"names":[],"mappings":";;;AAAA,SAAS,cAAc,CACnB,KAAe,EACf,IAAY,EACZ,CAAQ,EACR,CAAQ;IAER,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,UAAG,IAAI,YAAS,CAAC,CAAC;IACxD,CAAC,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,CAAC,IAAK,OAAA,YAAY,CAAC,KAAK,EAAE,UAAG,IAAI,cAAI,CAAC,MAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAjD,CAAiD,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,eAAe,CACpB,KAAe,EACf,IAAY,EACZ,CAAM,EACN,CAAM;IAEN,KAAK,IAAM,GAAG,IAAI,CAAC,EAAE;QACjB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK;YAAE,SAAS;QAClE,YAAY,CAAC,KAAK,EAAE,UAAG,IAAI,cAAI,GAAG,CAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;KACzD;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,KAAe,EAAE,IAAY,EAAE,CAAM,EAAE,CAAM;IAC/D,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACvC,IAAI,CAAC,YAAY,KAAK;QACvB,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YACvC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACtC,IAAI,CAAC,YAAY,MAAM;QAAE,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAC5D,IAAI,CAAC,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,SAAgB,aAAa,CAAI,CAAI,EAAE,CAAI;IACvC,IAAM,GAAG,GAAa,EAAE,CAAC;IACzB,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC;AACf,CAAC;AAJD,sCAIC"}
package/package.json CHANGED
@@ -1,52 +1,56 @@
1
- {
2
- "name": "@nestia/e2e",
3
- "version": "0.1.5",
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
- },
12
- "repository": {
13
- "type": "git",
14
- "url": "https://github.com/samchon/nestia"
15
- },
16
- "keywords": [
17
- "e2e",
18
- "nestia",
19
- "nestjs",
20
- "test",
21
- "tdd",
22
- "utility"
23
- ],
24
- "author": "Jeongho Nam",
25
- "license": "MIT",
26
- "bugs": {
27
- "url": "https://github.com/samchon/nestia/issues"
28
- },
29
- "homepage": "https://github.com/samchon/nestia#readme",
30
- "devDependencies": {
31
- "@trivago/prettier-plugin-sort-imports": "^4.0.0",
32
- "@types/cli": "^0.11.21",
33
- "@types/node": "^18.11.18",
34
- "prettier": "^2.8.3",
35
- "rimraf": "^4.1.2",
36
- "typescript": "^4.9.5"
37
- },
38
- "dependencies": {
39
- "chalk": "^4.1.2",
40
- "cli": "^1.0.1",
41
- "tstl": "^2.5.13"
42
- },
43
- "files": [
44
- "lib",
45
- "src",
46
- "!lib/test",
47
- "!src/test",
48
- "README.md",
49
- "LICENSE",
50
- "package.json"
51
- ]
52
- }
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,6 +1,7 @@
1
1
  import { is_sorted } from "tstl/ranges";
2
2
 
3
3
  import { RandomGenerator } from "./RandomGenerator";
4
+ import { json_equal_to } from "./internal/json_equal_to";
4
5
 
5
6
  /**
6
7
  * Test validator.
@@ -10,6 +11,43 @@ import { RandomGenerator } from "./RandomGenerator";
10
11
  * @author Jeongho Nam - https://github.com/samchon
11
12
  */
12
13
  export namespace TestValidator {
14
+ /**
15
+ * Test whether condition is satisfied.
16
+ *
17
+ * @param title Title of error message when condition is not satisfied
18
+ * @return Currying function
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
+ };
26
+
27
+ /**
28
+ * Test whether two values are equal.
29
+ *
30
+ * If you want to validate `covers` relationship,
31
+ * call smaller first and then larger.
32
+ *
33
+ * Otherwise you wanna non equals validator, combine with {@link error}.
34
+ *
35
+ * @param title Title of error message when different
36
+ * @returns Currying function
37
+ */
38
+ export const equals =
39
+ (title: string) =>
40
+ <T>(x: T) =>
41
+ (y: T) => {
42
+ const diff: string[] = json_equal_to(x, y);
43
+ if (diff.length)
44
+ throw new Error(
45
+ `Bug on ${title}: found different values - [${diff.join(
46
+ ", ",
47
+ )}]`,
48
+ );
49
+ };
50
+
13
51
  /**
14
52
  * Test whether error occurs.
15
53
  *
@@ -0,0 +1,37 @@
1
+ function array_equal_to(
2
+ items: string[],
3
+ name: string,
4
+ x: any[],
5
+ y: any[],
6
+ ): void {
7
+ if (x.length !== y.length) items.push(`${name}.length`);
8
+ x.forEach((xItem, i) => any_equal_to(items, `${name}[${i}]`, xItem, y[i]));
9
+ }
10
+
11
+ function object_equal_to(
12
+ items: string[],
13
+ name: string,
14
+ x: any,
15
+ y: any,
16
+ ): boolean {
17
+ for (const key in x) {
18
+ if (key.substr(-2) === "id" || key.substr(-3) === "_at") continue;
19
+ any_equal_to(items, `${name}.${key}`, x[key], y[key]);
20
+ }
21
+ return true;
22
+ }
23
+
24
+ function any_equal_to(items: string[], name: string, x: any, y: any): void {
25
+ if (typeof x !== typeof y) items.push(name);
26
+ else if (x instanceof Array)
27
+ if (!(y instanceof Array)) items.push(name);
28
+ else array_equal_to(items, name, x, y);
29
+ else if (x instanceof Object) object_equal_to(items, name, x, y);
30
+ else if (x !== y) items.push(name);
31
+ }
32
+
33
+ export function json_equal_to<T>(x: T, y: T): string[] {
34
+ const ret: string[] = [];
35
+ any_equal_to(ret, "", x, y);
36
+ return ret;
37
+ }