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