@apso/cli 0.4.2 → 0.6.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 +796 -6
- package/dist/commands/server/new.js +1 -1
- package/dist/commands/server/scaffold.js +20 -9
- package/dist/lib/apsorc-parser.d.ts +3 -0
- package/dist/lib/apsorc-parser.js +11 -6
- package/dist/lib/controller.js +3 -1
- package/dist/lib/dto.js +9 -9
- package/dist/lib/entity.js +6 -5
- package/dist/lib/guards.d.ts +47 -0
- package/dist/lib/guards.js +176 -0
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +5 -1
- package/dist/lib/module.js +3 -1
- package/dist/lib/templates/guards/auth.guard.eta +228 -0
- package/dist/lib/templates/guards/guards.module.eta +114 -0
- package/dist/lib/templates/guards/index.eta +22 -0
- package/dist/lib/templates/guards/scope.guard.eta +327 -0
- package/dist/lib/types/auth.d.ts +203 -0
- package/dist/lib/types/auth.js +60 -0
- package/dist/lib/types/entity.d.ts +36 -1
- package/dist/lib/types/index.d.ts +2 -1
- package/dist/lib/types/index.js +8 -0
- package/dist/lib/types/relationship.d.ts +1 -1
- package/dist/lib/utils/casing.js +5 -5
- package/dist/lib/utils/field.js +2 -1
- package/dist/lib/utils/file-system.js +1 -1
- package/dist/lib/utils/relationships/parse-v1.js +2 -1
- package/dist/lib/utils/relationships/parse.js +117 -32
- package/dist/lib/utils/relationships/parse.spec.js +168 -141
- package/dist/test-nested-relationships.js +10 -10
- package/dist/tests/templates/entities/types/array-template.spec.js +45 -45
- package/dist/tests/templates/entities/types/bigint-template.spec.js +43 -43
- package/dist/tests/templates/entities/types/boolean-template.spec.js +44 -44
- package/dist/tests/templates/entities/types/bytea-template.spec.js +35 -35
- package/dist/tests/templates/entities/types/char-template.spec.js +35 -35
- package/dist/tests/templates/entities/types/date-template.spec.js +29 -29
- package/dist/tests/templates/entities/types/decimal-field-validation.spec.js +46 -46
- package/dist/tests/templates/entities/types/decimal-template.spec.js +46 -46
- package/dist/tests/templates/entities/types/double-template.spec.js +37 -34
- package/dist/tests/templates/entities/types/enum-template.spec.js +42 -42
- package/dist/tests/templates/entities/types/float-template.spec.js +37 -34
- package/dist/tests/templates/entities/types/geometry-template.spec.js +31 -31
- package/dist/tests/templates/entities/types/inet-template.spec.js +36 -36
- package/dist/tests/templates/entities/types/int4range-template.spec.js +45 -33
- package/dist/tests/templates/entities/types/integer-template.spec.js +40 -40
- package/dist/tests/templates/entities/types/interval-template.spec.js +35 -35
- package/dist/tests/templates/entities/types/json-plain-template.spec.js +27 -27
- package/dist/tests/templates/entities/types/json-template.spec.js +19 -19
- package/dist/tests/templates/entities/types/jsonb-template.spec.js +19 -19
- package/dist/tests/templates/entities/types/money-template.spec.js +35 -35
- package/dist/tests/templates/entities/types/numeric-template.spec.js +44 -44
- package/dist/tests/templates/entities/types/point-template.spec.js +37 -31
- package/dist/tests/templates/entities/types/polygon-template.spec.js +43 -31
- package/dist/tests/templates/entities/types/real-template.spec.js +34 -34
- package/dist/tests/templates/entities/types/serial-template.spec.js +62 -62
- package/dist/tests/templates/entities/types/smallint-template.spec.js +43 -43
- package/dist/tests/templates/entities/types/string-template.spec.js +59 -59
- package/dist/tests/templates/entities/types/text-template.spec.js +37 -37
- package/dist/tests/templates/entities/types/time-template.spec.js +35 -35
- package/dist/tests/templates/entities/types/timestamp-template.spec.js +39 -39
- package/dist/tests/templates/entities/types/timetz-template.spec.js +35 -35
- package/dist/tests/templates/entities/types/tsvector-template.spec.js +28 -28
- package/dist/tests/templates/entities/types/uuid-template.spec.js +43 -43
- package/dist/tests/templates/entities/types/varchar-template.spec.js +59 -56
- package/dist/tests/templates/entities/types/xml-template.spec.js +28 -28
- package/dist/tests/templates/entities/utils/template-test-utils.d.ts +1 -1
- package/dist/tests/templates/entities/utils/template-test-utils.js +3 -3
- package/dist/tests/templates/entities/uuid-entity-template.spec.js +138 -138
- package/dist/tests/utils/relationship-deduplication.spec.js +11 -11
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
|
@@ -2,81 +2,81 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const template_test_utils_1 = require("../utils/template-test-utils");
|
|
4
4
|
const globals_1 = require("@jest/globals");
|
|
5
|
-
(0, globals_1.describe)(
|
|
5
|
+
(0, globals_1.describe)("Array Entity Template Tests", () => {
|
|
6
6
|
// Setup Eta configuration once before all tests
|
|
7
7
|
(0, globals_1.beforeAll)(() => {
|
|
8
8
|
(0, template_test_utils_1.configureEta)();
|
|
9
9
|
});
|
|
10
|
-
const templatePath =
|
|
10
|
+
const templatePath = "./entities/entity-col-array";
|
|
11
11
|
const testCases = [
|
|
12
12
|
{
|
|
13
|
-
name:
|
|
13
|
+
name: "should render basic text array field correctly",
|
|
14
14
|
field: {
|
|
15
|
-
name:
|
|
16
|
-
dataType:
|
|
17
|
-
nullable: false
|
|
15
|
+
name: "tags",
|
|
16
|
+
dataType: "string[]",
|
|
17
|
+
nullable: false,
|
|
18
18
|
},
|
|
19
19
|
assertions: [
|
|
20
|
-
{ type:
|
|
21
|
-
{ type:
|
|
22
|
-
{ type:
|
|
23
|
-
{ type:
|
|
24
|
-
{ type:
|
|
25
|
-
]
|
|
20
|
+
{ type: "contains", text: "@Column({" },
|
|
21
|
+
{ type: "contains", text: 'type: "text"' },
|
|
22
|
+
{ type: "contains", text: "array: true" },
|
|
23
|
+
{ type: "contains", text: "tags: string[];" },
|
|
24
|
+
{ type: "notContains", text: "nullable: true" },
|
|
25
|
+
],
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
|
-
name:
|
|
28
|
+
name: "should render nullable array field correctly",
|
|
29
29
|
field: {
|
|
30
|
-
name:
|
|
31
|
-
dataType:
|
|
32
|
-
nullable: true
|
|
30
|
+
name: "optionalTags",
|
|
31
|
+
dataType: "string[]",
|
|
32
|
+
nullable: true,
|
|
33
33
|
},
|
|
34
34
|
assertions: [
|
|
35
|
-
{ type:
|
|
36
|
-
{ type:
|
|
37
|
-
]
|
|
35
|
+
{ type: "contains", text: "nullable: true" },
|
|
36
|
+
{ type: "contains", text: "optionalTags: string[];" },
|
|
37
|
+
],
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
|
-
name:
|
|
40
|
+
name: "should render indexed array field correctly",
|
|
41
41
|
field: {
|
|
42
|
-
name:
|
|
43
|
-
dataType:
|
|
42
|
+
name: "categories",
|
|
43
|
+
dataType: "string[]",
|
|
44
44
|
nullable: false,
|
|
45
|
-
index: true
|
|
45
|
+
index: true,
|
|
46
46
|
},
|
|
47
47
|
assertions: [
|
|
48
|
-
{ type:
|
|
49
|
-
{ type:
|
|
50
|
-
]
|
|
48
|
+
{ type: "contains", text: "@Index()" },
|
|
49
|
+
{ type: "contains", text: "categories: string[];" },
|
|
50
|
+
],
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
|
-
name:
|
|
53
|
+
name: "should render integer array field correctly",
|
|
54
54
|
field: {
|
|
55
|
-
name:
|
|
56
|
-
dataType:
|
|
57
|
-
elementType:
|
|
58
|
-
nullable: false
|
|
55
|
+
name: "scores",
|
|
56
|
+
dataType: "number[]",
|
|
57
|
+
elementType: "int",
|
|
58
|
+
nullable: false,
|
|
59
59
|
},
|
|
60
60
|
assertions: [
|
|
61
|
-
{ type:
|
|
62
|
-
{ type:
|
|
63
|
-
{ type:
|
|
64
|
-
]
|
|
61
|
+
{ type: "contains", text: 'type: "int"' },
|
|
62
|
+
{ type: "contains", text: "array: true" },
|
|
63
|
+
{ type: "contains", text: "scores: number[];" },
|
|
64
|
+
],
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
|
-
name:
|
|
67
|
+
name: "should render decimal array field correctly",
|
|
68
68
|
field: {
|
|
69
|
-
name:
|
|
70
|
-
dataType:
|
|
71
|
-
elementType:
|
|
72
|
-
nullable: false
|
|
69
|
+
name: "amounts",
|
|
70
|
+
dataType: "number[]",
|
|
71
|
+
elementType: "decimal",
|
|
72
|
+
nullable: false,
|
|
73
73
|
},
|
|
74
74
|
assertions: [
|
|
75
|
-
{ type:
|
|
76
|
-
{ type:
|
|
77
|
-
{ type:
|
|
78
|
-
]
|
|
79
|
-
}
|
|
75
|
+
{ type: "contains", text: 'type: "decimal"' },
|
|
76
|
+
{ type: "contains", text: "array: true" },
|
|
77
|
+
{ type: "contains", text: "amounts: number[];" },
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
80
|
];
|
|
81
81
|
(0, template_test_utils_1.runTemplateTests)(templatePath, testCases);
|
|
82
82
|
});
|
|
@@ -2,81 +2,81 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const template_test_utils_1 = require("../utils/template-test-utils");
|
|
4
4
|
const globals_1 = require("@jest/globals");
|
|
5
|
-
(0, globals_1.describe)(
|
|
5
|
+
(0, globals_1.describe)("BigInt Entity Template Tests", () => {
|
|
6
6
|
// Setup Eta configuration once before all tests
|
|
7
7
|
(0, globals_1.beforeAll)(() => {
|
|
8
8
|
(0, template_test_utils_1.configureEta)();
|
|
9
9
|
});
|
|
10
|
-
const templatePath =
|
|
10
|
+
const templatePath = "./entities/entity-col-bigint";
|
|
11
11
|
const testCases = [
|
|
12
12
|
{
|
|
13
|
-
name:
|
|
13
|
+
name: "should render basic bigint field correctly",
|
|
14
14
|
field: {
|
|
15
|
-
name:
|
|
16
|
-
dataType:
|
|
17
|
-
nullable: false
|
|
15
|
+
name: "largeCounter",
|
|
16
|
+
dataType: "number",
|
|
17
|
+
nullable: false,
|
|
18
18
|
},
|
|
19
19
|
assertions: [
|
|
20
|
-
{ type:
|
|
21
|
-
{ type:
|
|
22
|
-
{ type:
|
|
23
|
-
{ type:
|
|
24
|
-
]
|
|
20
|
+
{ type: "contains", text: '@Column({ "type": "bigint"' },
|
|
21
|
+
{ type: "contains", text: "largeCounter: string;" },
|
|
22
|
+
{ type: "notContains", text: "@Index()" },
|
|
23
|
+
{ type: "notContains", text: "@PrimaryColumn()" },
|
|
24
|
+
],
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
|
-
name:
|
|
27
|
+
name: "should render nullable bigint field correctly",
|
|
28
28
|
field: {
|
|
29
|
-
name:
|
|
30
|
-
dataType:
|
|
31
|
-
nullable: true
|
|
29
|
+
name: "optionalCounter",
|
|
30
|
+
dataType: "number",
|
|
31
|
+
nullable: true,
|
|
32
32
|
},
|
|
33
33
|
assertions: [
|
|
34
|
-
{ type:
|
|
35
|
-
{ type:
|
|
36
|
-
]
|
|
34
|
+
{ type: "contains", text: '@Column({ "type": "bigint"' },
|
|
35
|
+
{ type: "contains", text: "optionalCounter: string;" },
|
|
36
|
+
],
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
|
-
name:
|
|
39
|
+
name: "should render bigint field with default value correctly",
|
|
40
40
|
field: {
|
|
41
|
-
name:
|
|
42
|
-
dataType:
|
|
41
|
+
name: "defaultCounter",
|
|
42
|
+
dataType: "number",
|
|
43
43
|
nullable: false,
|
|
44
|
-
default: 0
|
|
44
|
+
default: 0,
|
|
45
45
|
},
|
|
46
46
|
assertions: [
|
|
47
|
-
{ type:
|
|
48
|
-
{ type:
|
|
49
|
-
{ type:
|
|
50
|
-
]
|
|
47
|
+
{ type: "contains", text: '@Column({ "type": "bigint"' },
|
|
48
|
+
{ type: "contains", text: "default: 0" },
|
|
49
|
+
{ type: "contains", text: "defaultCounter: string;" },
|
|
50
|
+
],
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
|
-
name:
|
|
53
|
+
name: "should render indexed bigint field correctly",
|
|
54
54
|
field: {
|
|
55
|
-
name:
|
|
56
|
-
dataType:
|
|
55
|
+
name: "indexedCounter",
|
|
56
|
+
dataType: "number",
|
|
57
57
|
nullable: false,
|
|
58
|
-
index: true
|
|
58
|
+
index: true,
|
|
59
59
|
},
|
|
60
60
|
assertions: [
|
|
61
|
-
{ type:
|
|
62
|
-
{ type:
|
|
63
|
-
{ type:
|
|
64
|
-
]
|
|
61
|
+
{ type: "contains", text: '@Column({ "type": "bigint"' },
|
|
62
|
+
{ type: "contains", text: "@Index()" },
|
|
63
|
+
{ type: "contains", text: "indexedCounter: string;" },
|
|
64
|
+
],
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
|
-
name:
|
|
67
|
+
name: "should render primary key bigint field correctly",
|
|
68
68
|
field: {
|
|
69
|
-
name:
|
|
70
|
-
dataType:
|
|
69
|
+
name: "id",
|
|
70
|
+
dataType: "number",
|
|
71
71
|
nullable: false,
|
|
72
|
-
primary: true
|
|
72
|
+
primary: true,
|
|
73
73
|
},
|
|
74
74
|
assertions: [
|
|
75
|
-
{ type:
|
|
76
|
-
{ type:
|
|
77
|
-
{ type:
|
|
78
|
-
]
|
|
79
|
-
}
|
|
75
|
+
{ type: "contains", text: '@Column({ "type": "bigint"' },
|
|
76
|
+
{ type: "contains", text: "@PrimaryColumn()" },
|
|
77
|
+
{ type: "contains", text: "id: string;" },
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
80
|
];
|
|
81
81
|
(0, template_test_utils_1.runTemplateTests)(templatePath, testCases);
|
|
82
82
|
});
|
|
@@ -2,76 +2,76 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const template_test_utils_1 = require("../utils/template-test-utils");
|
|
4
4
|
const globals_1 = require("@jest/globals");
|
|
5
|
-
(0, globals_1.describe)(
|
|
5
|
+
(0, globals_1.describe)("Boolean Entity Template Tests", () => {
|
|
6
6
|
// Setup Eta configuration once before all tests
|
|
7
7
|
(0, globals_1.beforeAll)(() => {
|
|
8
8
|
(0, template_test_utils_1.configureEta)();
|
|
9
9
|
});
|
|
10
|
-
const templatePath =
|
|
10
|
+
const templatePath = "./entities/entity-col-boolean";
|
|
11
11
|
const testCases = [
|
|
12
12
|
{
|
|
13
|
-
name:
|
|
13
|
+
name: "should render basic boolean field correctly",
|
|
14
14
|
field: {
|
|
15
|
-
name:
|
|
16
|
-
dataType:
|
|
17
|
-
nullable: false
|
|
15
|
+
name: "isActive",
|
|
16
|
+
dataType: "boolean",
|
|
17
|
+
nullable: false,
|
|
18
18
|
},
|
|
19
19
|
assertions: [
|
|
20
|
-
{ type:
|
|
21
|
-
{ type:
|
|
22
|
-
{ type:
|
|
23
|
-
{ type:
|
|
24
|
-
{ type:
|
|
25
|
-
{ type:
|
|
26
|
-
{ type:
|
|
27
|
-
]
|
|
20
|
+
{ type: "contains", text: "@IsOptional({ groups: [CREATE, UPDATE] })" },
|
|
21
|
+
{ type: "contains", text: "@IsBoolean({ always: true })" },
|
|
22
|
+
{ type: "contains", text: "@Column({ type: 'boolean'" },
|
|
23
|
+
{ type: "contains", text: "default: false" },
|
|
24
|
+
{ type: "contains", text: "isActive!: boolean;" },
|
|
25
|
+
{ type: "notContains", text: "@Index()" },
|
|
26
|
+
{ type: "notContains", text: "@PrimaryColumn()" },
|
|
27
|
+
],
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
name:
|
|
30
|
+
name: "should render nullable boolean field correctly",
|
|
31
31
|
field: {
|
|
32
|
-
name:
|
|
33
|
-
dataType:
|
|
34
|
-
nullable: true
|
|
32
|
+
name: "optionalFlag",
|
|
33
|
+
dataType: "boolean",
|
|
34
|
+
nullable: true,
|
|
35
35
|
},
|
|
36
36
|
assertions: [
|
|
37
|
-
{ type:
|
|
38
|
-
{ type:
|
|
39
|
-
{ type:
|
|
40
|
-
{ type:
|
|
41
|
-
]
|
|
37
|
+
{ type: "contains", text: "@IsOptional({ groups: [CREATE, UPDATE] })" },
|
|
38
|
+
{ type: "contains", text: "@IsBoolean({ always: true })" },
|
|
39
|
+
{ type: "contains", text: "@Column({ type: 'boolean'" },
|
|
40
|
+
{ type: "contains", text: "optionalFlag!: boolean;" },
|
|
41
|
+
],
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
|
-
name:
|
|
44
|
+
name: "should render boolean field with default value correctly",
|
|
45
45
|
field: {
|
|
46
|
-
name:
|
|
47
|
-
dataType:
|
|
46
|
+
name: "defaultFlag",
|
|
47
|
+
dataType: "boolean",
|
|
48
48
|
nullable: false,
|
|
49
|
-
default:
|
|
49
|
+
default: "true",
|
|
50
50
|
},
|
|
51
51
|
assertions: [
|
|
52
|
-
{ type:
|
|
53
|
-
{ type:
|
|
54
|
-
{ type:
|
|
55
|
-
{ type:
|
|
56
|
-
{ type:
|
|
57
|
-
]
|
|
52
|
+
{ type: "contains", text: "@IsOptional({ groups: [CREATE, UPDATE] })" },
|
|
53
|
+
{ type: "contains", text: "@IsBoolean({ always: true })" },
|
|
54
|
+
{ type: "contains", text: "@Column({ type: 'boolean'" },
|
|
55
|
+
{ type: "contains", text: "default: true" },
|
|
56
|
+
{ type: "contains", text: "defaultFlag!: boolean;" },
|
|
57
|
+
],
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
|
-
name:
|
|
60
|
+
name: "should render indexed boolean field correctly",
|
|
61
61
|
field: {
|
|
62
|
-
name:
|
|
63
|
-
dataType:
|
|
62
|
+
name: "indexedFlag",
|
|
63
|
+
dataType: "boolean",
|
|
64
64
|
nullable: false,
|
|
65
|
-
index: true
|
|
65
|
+
index: true,
|
|
66
66
|
},
|
|
67
67
|
assertions: [
|
|
68
|
-
{ type:
|
|
69
|
-
{ type:
|
|
70
|
-
{ type:
|
|
71
|
-
{ type:
|
|
72
|
-
{ type:
|
|
73
|
-
]
|
|
74
|
-
}
|
|
68
|
+
{ type: "contains", text: "@IsOptional({ groups: [CREATE, UPDATE] })" },
|
|
69
|
+
{ type: "contains", text: "@IsBoolean({ always: true })" },
|
|
70
|
+
{ type: "contains", text: "@Column({ type: 'boolean'" },
|
|
71
|
+
{ type: "contains", text: "@Index()" },
|
|
72
|
+
{ type: "contains", text: "indexedFlag!: boolean;" },
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
75
|
];
|
|
76
76
|
(0, template_test_utils_1.runTemplateTests)(templatePath, testCases);
|
|
77
77
|
});
|
|
@@ -2,67 +2,67 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const template_test_utils_1 = require("../utils/template-test-utils");
|
|
4
4
|
const globals_1 = require("@jest/globals");
|
|
5
|
-
(0, globals_1.describe)(
|
|
5
|
+
(0, globals_1.describe)("Bytea Entity Template Tests", () => {
|
|
6
6
|
// Setup Eta configuration once before all tests
|
|
7
7
|
(0, globals_1.beforeAll)(() => {
|
|
8
8
|
(0, template_test_utils_1.configureEta)();
|
|
9
9
|
});
|
|
10
|
-
const templatePath =
|
|
10
|
+
const templatePath = "./entities/entity-col-bytea";
|
|
11
11
|
const testCases = [
|
|
12
12
|
{
|
|
13
|
-
name:
|
|
13
|
+
name: "should render basic bytea field correctly",
|
|
14
14
|
field: {
|
|
15
|
-
name:
|
|
16
|
-
dataType:
|
|
17
|
-
nullable: false
|
|
15
|
+
name: "binaryData",
|
|
16
|
+
dataType: "Buffer",
|
|
17
|
+
nullable: false,
|
|
18
18
|
},
|
|
19
19
|
assertions: [
|
|
20
|
-
{ type:
|
|
21
|
-
{ type:
|
|
22
|
-
{ type:
|
|
23
|
-
{ type:
|
|
24
|
-
]
|
|
20
|
+
{ type: "contains", text: '@Column({ "type": "bytea"' },
|
|
21
|
+
{ type: "contains", text: "binaryData: Buffer;" },
|
|
22
|
+
{ type: "notContains", text: "@Index()" },
|
|
23
|
+
{ type: "notContains", text: "@PrimaryColumn()" },
|
|
24
|
+
],
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
|
-
name:
|
|
27
|
+
name: "should render nullable bytea field correctly",
|
|
28
28
|
field: {
|
|
29
|
-
name:
|
|
30
|
-
dataType:
|
|
31
|
-
nullable: true
|
|
29
|
+
name: "optionalData",
|
|
30
|
+
dataType: "Buffer",
|
|
31
|
+
nullable: true,
|
|
32
32
|
},
|
|
33
33
|
assertions: [
|
|
34
|
-
{ type:
|
|
35
|
-
{ type:
|
|
36
|
-
]
|
|
34
|
+
{ type: "contains", text: '@Column({ "type": "bytea"' },
|
|
35
|
+
{ type: "contains", text: "optionalData: Buffer;" },
|
|
36
|
+
],
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
|
-
name:
|
|
39
|
+
name: "should render indexed bytea field correctly",
|
|
40
40
|
field: {
|
|
41
|
-
name:
|
|
42
|
-
dataType:
|
|
41
|
+
name: "indexedData",
|
|
42
|
+
dataType: "Buffer",
|
|
43
43
|
nullable: false,
|
|
44
|
-
index: true
|
|
44
|
+
index: true,
|
|
45
45
|
},
|
|
46
46
|
assertions: [
|
|
47
|
-
{ type:
|
|
48
|
-
{ type:
|
|
49
|
-
{ type:
|
|
50
|
-
]
|
|
47
|
+
{ type: "contains", text: '@Column({ "type": "bytea"' },
|
|
48
|
+
{ type: "contains", text: "@Index()" },
|
|
49
|
+
{ type: "contains", text: "indexedData: Buffer;" },
|
|
50
|
+
],
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
|
-
name:
|
|
53
|
+
name: "should render primary key bytea field correctly",
|
|
54
54
|
field: {
|
|
55
|
-
name:
|
|
56
|
-
dataType:
|
|
55
|
+
name: "id",
|
|
56
|
+
dataType: "Buffer",
|
|
57
57
|
nullable: false,
|
|
58
|
-
primary: true
|
|
58
|
+
primary: true,
|
|
59
59
|
},
|
|
60
60
|
assertions: [
|
|
61
|
-
{ type:
|
|
62
|
-
{ type:
|
|
63
|
-
{ type:
|
|
64
|
-
]
|
|
65
|
-
}
|
|
61
|
+
{ type: "contains", text: '@Column({ "type": "bytea"' },
|
|
62
|
+
{ type: "contains", text: "@PrimaryColumn()" },
|
|
63
|
+
{ type: "contains", text: "id: Buffer;" },
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
66
|
];
|
|
67
67
|
(0, template_test_utils_1.runTemplateTests)(templatePath, testCases);
|
|
68
68
|
});
|
|
@@ -2,67 +2,67 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const template_test_utils_1 = require("../utils/template-test-utils");
|
|
4
4
|
const globals_1 = require("@jest/globals");
|
|
5
|
-
(0, globals_1.describe)(
|
|
5
|
+
(0, globals_1.describe)("Char Entity Template Tests", () => {
|
|
6
6
|
// Setup Eta configuration once before all tests
|
|
7
7
|
(0, globals_1.beforeAll)(() => {
|
|
8
8
|
(0, template_test_utils_1.configureEta)();
|
|
9
9
|
});
|
|
10
|
-
const templatePath =
|
|
10
|
+
const templatePath = "./entities/entity-col-char";
|
|
11
11
|
const testCases = [
|
|
12
12
|
{
|
|
13
|
-
name:
|
|
13
|
+
name: "should render basic char field correctly",
|
|
14
14
|
field: {
|
|
15
|
-
name:
|
|
16
|
-
dataType:
|
|
17
|
-
nullable: false
|
|
15
|
+
name: "charCode",
|
|
16
|
+
dataType: "string",
|
|
17
|
+
nullable: false,
|
|
18
18
|
},
|
|
19
19
|
assertions: [
|
|
20
|
-
{ type:
|
|
21
|
-
{ type:
|
|
22
|
-
{ type:
|
|
23
|
-
{ type:
|
|
24
|
-
]
|
|
20
|
+
{ type: "contains", text: '@Column({ type: "char", length: 1' },
|
|
21
|
+
{ type: "contains", text: "charCode: string;" },
|
|
22
|
+
{ type: "notContains", text: "@Index()" },
|
|
23
|
+
{ type: "notContains", text: "@PrimaryColumn()" },
|
|
24
|
+
],
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
|
-
name:
|
|
27
|
+
name: "should render nullable char field correctly",
|
|
28
28
|
field: {
|
|
29
|
-
name:
|
|
30
|
-
dataType:
|
|
31
|
-
nullable: true
|
|
29
|
+
name: "optionalChar",
|
|
30
|
+
dataType: "string",
|
|
31
|
+
nullable: true,
|
|
32
32
|
},
|
|
33
33
|
assertions: [
|
|
34
|
-
{ type:
|
|
35
|
-
{ type:
|
|
36
|
-
{ type:
|
|
37
|
-
]
|
|
34
|
+
{ type: "contains", text: '@Column({ type: "char"' },
|
|
35
|
+
{ type: "contains", text: "nullable: true" },
|
|
36
|
+
{ type: "contains", text: "optionalChar: string;" },
|
|
37
|
+
],
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
|
-
name:
|
|
40
|
+
name: "should render char field with custom length correctly",
|
|
41
41
|
field: {
|
|
42
|
-
name:
|
|
43
|
-
dataType:
|
|
42
|
+
name: "fixedCode",
|
|
43
|
+
dataType: "string",
|
|
44
44
|
nullable: false,
|
|
45
|
-
length: 5
|
|
45
|
+
length: 5,
|
|
46
46
|
},
|
|
47
47
|
assertions: [
|
|
48
|
-
{ type:
|
|
49
|
-
{ type:
|
|
50
|
-
]
|
|
48
|
+
{ type: "contains", text: '@Column({ type: "char", length: 5' },
|
|
49
|
+
{ type: "contains", text: "fixedCode: string;" },
|
|
50
|
+
],
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
|
-
name:
|
|
53
|
+
name: "should render indexed char field correctly",
|
|
54
54
|
field: {
|
|
55
|
-
name:
|
|
56
|
-
dataType:
|
|
55
|
+
name: "indexedChar",
|
|
56
|
+
dataType: "string",
|
|
57
57
|
nullable: false,
|
|
58
|
-
index: true
|
|
58
|
+
index: true,
|
|
59
59
|
},
|
|
60
60
|
assertions: [
|
|
61
|
-
{ type:
|
|
62
|
-
{ type:
|
|
63
|
-
{ type:
|
|
64
|
-
]
|
|
65
|
-
}
|
|
61
|
+
{ type: "contains", text: '@Column({ type: "char"' },
|
|
62
|
+
{ type: "contains", text: "@Index()" },
|
|
63
|
+
{ type: "contains", text: "indexedChar: string;" },
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
66
|
];
|
|
67
67
|
(0, template_test_utils_1.runTemplateTests)(templatePath, testCases);
|
|
68
68
|
});
|