@apso/cli 0.5.0 → 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 (69) hide show
  1. package/README.md +510 -1
  2. package/dist/commands/server/new.js +1 -1
  3. package/dist/commands/server/scaffold.js +19 -10
  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 +4 -3
  10. package/dist/lib/guards.js +64 -25
  11. package/dist/lib/module.js +3 -1
  12. package/dist/lib/templates/guards/auth.guard.eta +228 -0
  13. package/dist/lib/templates/guards/guards.module.eta +72 -12
  14. package/dist/lib/templates/guards/index.eta +18 -0
  15. package/dist/lib/templates/guards/scope.guard.eta +10 -2
  16. package/dist/lib/types/auth.d.ts +203 -0
  17. package/dist/lib/types/auth.js +60 -0
  18. package/dist/lib/types/entity.d.ts +2 -2
  19. package/dist/lib/types/index.d.ts +1 -0
  20. package/dist/lib/types/index.js +8 -0
  21. package/dist/lib/types/relationship.d.ts +1 -1
  22. package/dist/lib/utils/casing.js +5 -5
  23. package/dist/lib/utils/field.js +2 -1
  24. package/dist/lib/utils/file-system.js +1 -1
  25. package/dist/lib/utils/relationships/parse-v1.js +2 -1
  26. package/dist/lib/utils/relationships/parse.js +117 -32
  27. package/dist/lib/utils/relationships/parse.spec.js +168 -141
  28. package/dist/test-nested-relationships.js +10 -10
  29. package/dist/tests/templates/entities/types/array-template.spec.js +45 -45
  30. package/dist/tests/templates/entities/types/bigint-template.spec.js +43 -43
  31. package/dist/tests/templates/entities/types/boolean-template.spec.js +44 -44
  32. package/dist/tests/templates/entities/types/bytea-template.spec.js +35 -35
  33. package/dist/tests/templates/entities/types/char-template.spec.js +35 -35
  34. package/dist/tests/templates/entities/types/date-template.spec.js +29 -29
  35. package/dist/tests/templates/entities/types/decimal-field-validation.spec.js +46 -46
  36. package/dist/tests/templates/entities/types/decimal-template.spec.js +46 -46
  37. package/dist/tests/templates/entities/types/double-template.spec.js +37 -34
  38. package/dist/tests/templates/entities/types/enum-template.spec.js +42 -42
  39. package/dist/tests/templates/entities/types/float-template.spec.js +37 -34
  40. package/dist/tests/templates/entities/types/geometry-template.spec.js +31 -31
  41. package/dist/tests/templates/entities/types/inet-template.spec.js +36 -36
  42. package/dist/tests/templates/entities/types/int4range-template.spec.js +45 -33
  43. package/dist/tests/templates/entities/types/integer-template.spec.js +40 -40
  44. package/dist/tests/templates/entities/types/interval-template.spec.js +35 -35
  45. package/dist/tests/templates/entities/types/json-plain-template.spec.js +27 -27
  46. package/dist/tests/templates/entities/types/json-template.spec.js +19 -19
  47. package/dist/tests/templates/entities/types/jsonb-template.spec.js +19 -19
  48. package/dist/tests/templates/entities/types/money-template.spec.js +35 -35
  49. package/dist/tests/templates/entities/types/numeric-template.spec.js +44 -44
  50. package/dist/tests/templates/entities/types/point-template.spec.js +37 -31
  51. package/dist/tests/templates/entities/types/polygon-template.spec.js +43 -31
  52. package/dist/tests/templates/entities/types/real-template.spec.js +34 -34
  53. package/dist/tests/templates/entities/types/serial-template.spec.js +62 -62
  54. package/dist/tests/templates/entities/types/smallint-template.spec.js +43 -43
  55. package/dist/tests/templates/entities/types/string-template.spec.js +59 -59
  56. package/dist/tests/templates/entities/types/text-template.spec.js +37 -37
  57. package/dist/tests/templates/entities/types/time-template.spec.js +35 -35
  58. package/dist/tests/templates/entities/types/timestamp-template.spec.js +39 -39
  59. package/dist/tests/templates/entities/types/timetz-template.spec.js +35 -35
  60. package/dist/tests/templates/entities/types/tsvector-template.spec.js +28 -28
  61. package/dist/tests/templates/entities/types/uuid-template.spec.js +43 -43
  62. package/dist/tests/templates/entities/types/varchar-template.spec.js +59 -56
  63. package/dist/tests/templates/entities/types/xml-template.spec.js +28 -28
  64. package/dist/tests/templates/entities/utils/template-test-utils.d.ts +1 -1
  65. package/dist/tests/templates/entities/utils/template-test-utils.js +3 -3
  66. package/dist/tests/templates/entities/uuid-entity-template.spec.js +138 -138
  67. package/dist/tests/utils/relationship-deduplication.spec.js +11 -11
  68. package/oclif.manifest.json +1 -1
  69. package/package.json +1 -1
@@ -2,55 +2,55 @@
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)('Date Entity Template Tests', () => {
5
+ (0, globals_1.describe)("Date 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-date';
10
+ const templatePath = "./entities/entity-col-date";
11
11
  const testCases = [
12
12
  {
13
- name: 'should render basic date field correctly',
13
+ name: "should render basic date field correctly",
14
14
  field: {
15
- name: 'birthDate',
16
- dataType: 'Date',
17
- nullable: false
15
+ name: "birthDate",
16
+ dataType: "Date",
17
+ nullable: false,
18
18
  },
19
19
  assertions: [
20
- { type: 'contains', text: "@Column({ type: 'date'" },
21
- { type: 'contains', text: 'nullable: false' },
22
- { type: 'contains', text: 'birthDate: string;' },
23
- { type: 'notContains', text: '@Index()' }
24
- ]
20
+ { type: "contains", text: "@Column({ type: 'date'" },
21
+ { type: "contains", text: "nullable: false" },
22
+ { type: "contains", text: "birthDate: string;" },
23
+ { type: "notContains", text: "@Index()" },
24
+ ],
25
25
  },
26
26
  {
27
- name: 'should render nullable date field correctly',
27
+ name: "should render nullable date field correctly",
28
28
  field: {
29
- name: 'optionalDate',
30
- dataType: 'Date',
31
- nullable: true
29
+ name: "optionalDate",
30
+ dataType: "Date",
31
+ nullable: true,
32
32
  },
33
33
  assertions: [
34
- { type: 'contains', text: "@Column({ type: 'date'" },
35
- { type: 'contains', text: 'nullable: true' },
36
- { type: 'contains', text: 'optionalDate: string;' }
37
- ]
34
+ { type: "contains", text: "@Column({ type: 'date'" },
35
+ { type: "contains", text: "nullable: true" },
36
+ { type: "contains", text: "optionalDate: string;" },
37
+ ],
38
38
  },
39
39
  {
40
- name: 'should render indexed date field correctly',
40
+ name: "should render indexed date field correctly",
41
41
  field: {
42
- name: 'indexedDate',
43
- dataType: 'Date',
42
+ name: "indexedDate",
43
+ dataType: "Date",
44
44
  nullable: false,
45
- index: true
45
+ index: true,
46
46
  },
47
47
  assertions: [
48
- { type: 'contains', text: "@Column({ type: 'date'" },
49
- { type: 'contains', text: 'nullable: false' },
50
- { type: 'contains', text: '@Index()' },
51
- { type: 'contains', text: 'indexedDate: string;' }
52
- ]
53
- }
48
+ { type: "contains", text: "@Column({ type: 'date'" },
49
+ { type: "contains", text: "nullable: false" },
50
+ { type: "contains", text: "@Index()" },
51
+ { type: "contains", text: "indexedDate: string;" },
52
+ ],
53
+ },
54
54
  ];
55
55
  (0, template_test_utils_1.runTemplateTests)(templatePath, testCases);
56
56
  });
@@ -2,98 +2,98 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const field_1 = require("../../../../lib/utils/field");
4
4
  const globals_1 = require("@jest/globals");
5
- (0, globals_1.describe)('Decimal Field Validation Tests', () => {
6
- (0, globals_1.it)('should accept valid decimal field with precision and scale', () => {
5
+ (0, globals_1.describe)("Decimal Field Validation Tests", () => {
6
+ (0, globals_1.it)("should accept valid decimal field with precision and scale", () => {
7
7
  const field = {
8
- name: 'price',
9
- type: 'decimal',
8
+ name: "price",
9
+ type: "decimal",
10
10
  precision: 10,
11
11
  scale: 2,
12
- nullable: false
12
+ nullable: false,
13
13
  };
14
14
  (0, globals_1.expect)(() => (0, field_1.validateDecimalField)(field)).not.toThrow();
15
15
  });
16
- (0, globals_1.it)('should accept valid numeric field with precision and scale', () => {
16
+ (0, globals_1.it)("should accept valid numeric field with precision and scale", () => {
17
17
  const field = {
18
- name: 'amount',
19
- type: 'numeric',
18
+ name: "amount",
19
+ type: "numeric",
20
20
  precision: 16,
21
21
  scale: 6,
22
- nullable: false
22
+ nullable: false,
23
23
  };
24
24
  (0, globals_1.expect)(() => (0, field_1.validateDecimalField)(field)).not.toThrow();
25
25
  });
26
- (0, globals_1.it)('should accept decimal field without precision and scale (uses defaults)', () => {
26
+ (0, globals_1.it)("should accept decimal field without precision and scale (uses defaults)", () => {
27
27
  const field = {
28
- name: 'value',
29
- type: 'decimal',
30
- nullable: false
28
+ name: "value",
29
+ type: "decimal",
30
+ nullable: false,
31
31
  };
32
32
  (0, globals_1.expect)(() => (0, field_1.validateDecimalField)(field)).not.toThrow();
33
33
  });
34
- (0, globals_1.it)('should throw error for invalid precision (too low)', () => {
34
+ (0, globals_1.it)("should throw error for invalid precision (too low)", () => {
35
35
  const field = {
36
- name: 'price',
37
- type: 'decimal',
36
+ name: "price",
37
+ type: "decimal",
38
38
  precision: 0,
39
39
  scale: 2,
40
- nullable: false
40
+ nullable: false,
41
41
  };
42
- (0, globals_1.expect)(() => (0, field_1.validateDecimalField)(field)).toThrow('price: Invalid precision value 0. Must be between 1 and 131072.');
42
+ (0, globals_1.expect)(() => (0, field_1.validateDecimalField)(field)).toThrow("price: Invalid precision value 0. Must be between 1 and 131072.");
43
43
  });
44
- (0, globals_1.it)('should throw error for invalid precision (too high)', () => {
44
+ (0, globals_1.it)("should throw error for invalid precision (too high)", () => {
45
45
  const field = {
46
- name: 'price',
47
- type: 'decimal',
46
+ name: "price",
47
+ type: "decimal",
48
48
  precision: 200000,
49
49
  scale: 2,
50
- nullable: false
50
+ nullable: false,
51
51
  };
52
- (0, globals_1.expect)(() => (0, field_1.validateDecimalField)(field)).toThrow('price: Invalid precision value 200000. Must be between 1 and 131072.');
52
+ (0, globals_1.expect)(() => (0, field_1.validateDecimalField)(field)).toThrow("price: Invalid precision value 200000. Must be between 1 and 131072.");
53
53
  });
54
- (0, globals_1.it)('should throw error for invalid scale (too low)', () => {
54
+ (0, globals_1.it)("should throw error for invalid scale (too low)", () => {
55
55
  const field = {
56
- name: 'price',
57
- type: 'decimal',
56
+ name: "price",
57
+ type: "decimal",
58
58
  precision: 10,
59
59
  scale: -1,
60
- nullable: false
60
+ nullable: false,
61
61
  };
62
- (0, globals_1.expect)(() => (0, field_1.validateDecimalField)(field)).toThrow('price: Invalid scale value -1. Must be between 0 and 16383.');
62
+ (0, globals_1.expect)(() => (0, field_1.validateDecimalField)(field)).toThrow("price: Invalid scale value -1. Must be between 0 and 16383.");
63
63
  });
64
- (0, globals_1.it)('should throw error for invalid scale (too high)', () => {
64
+ (0, globals_1.it)("should throw error for invalid scale (too high)", () => {
65
65
  const field = {
66
- name: 'price',
67
- type: 'decimal',
66
+ name: "price",
67
+ type: "decimal",
68
68
  precision: 10,
69
69
  scale: 20000,
70
- nullable: false
70
+ nullable: false,
71
71
  };
72
- (0, globals_1.expect)(() => (0, field_1.validateDecimalField)(field)).toThrow('price: Invalid scale value 20000. Must be between 0 and 16383.');
72
+ (0, globals_1.expect)(() => (0, field_1.validateDecimalField)(field)).toThrow("price: Invalid scale value 20000. Must be between 0 and 16383.");
73
73
  });
74
- (0, globals_1.it)('should throw error when scale exceeds precision', () => {
74
+ (0, globals_1.it)("should throw error when scale exceeds precision", () => {
75
75
  const field = {
76
- name: 'price',
77
- type: 'decimal',
76
+ name: "price",
77
+ type: "decimal",
78
78
  precision: 5,
79
79
  scale: 10,
80
- nullable: false
80
+ nullable: false,
81
81
  };
82
- (0, globals_1.expect)(() => (0, field_1.validateDecimalField)(field)).toThrow('price: Scale (10) cannot be greater than precision (5).');
82
+ (0, globals_1.expect)(() => (0, field_1.validateDecimalField)(field)).toThrow("price: Scale (10) cannot be greater than precision (5).");
83
83
  });
84
- (0, globals_1.it)('should not validate non-decimal fields', () => {
84
+ (0, globals_1.it)("should not validate non-decimal fields", () => {
85
85
  const field = {
86
- name: 'name',
87
- type: 'text',
88
- nullable: false
86
+ name: "name",
87
+ type: "text",
88
+ nullable: false,
89
89
  };
90
90
  (0, globals_1.expect)(() => (0, field_1.validateDecimalField)(field)).not.toThrow();
91
91
  });
92
- (0, globals_1.it)('should not validate non-numeric fields', () => {
92
+ (0, globals_1.it)("should not validate non-numeric fields", () => {
93
93
  const field = {
94
- name: 'active',
95
- type: 'boolean',
96
- nullable: false
94
+ name: "active",
95
+ type: "boolean",
96
+ nullable: false,
97
97
  };
98
98
  (0, globals_1.expect)(() => (0, field_1.validateDecimalField)(field)).not.toThrow();
99
99
  });
@@ -2,85 +2,85 @@
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)('Decimal Entity Template Tests', () => {
5
+ (0, globals_1.describe)("Decimal 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-decimal';
10
+ const templatePath = "./entities/entity-col-decimal";
11
11
  const testCases = [
12
12
  {
13
- name: 'should render basic decimal field correctly',
13
+ name: "should render basic decimal field correctly",
14
14
  field: {
15
- name: 'price',
16
- dataType: 'number',
17
- nullable: false
15
+ name: "price",
16
+ dataType: "number",
17
+ nullable: false,
18
18
  },
19
19
  assertions: [
20
- { type: 'contains', text: '@Column({ "type": "decimal"' },
21
- { type: 'contains', text: 'precision: 10' },
22
- { type: 'contains', text: 'scale: 2' },
23
- { type: 'contains', text: 'price: number;' },
24
- { type: 'notContains', text: '@Index()' },
25
- { type: 'notContains', text: '@PrimaryColumn()' }
26
- ]
20
+ { type: "contains", text: '@Column({ "type": "decimal"' },
21
+ { type: "contains", text: "precision: 10" },
22
+ { type: "contains", text: "scale: 2" },
23
+ { type: "contains", text: "price: number;" },
24
+ { type: "notContains", text: "@Index()" },
25
+ { type: "notContains", text: "@PrimaryColumn()" },
26
+ ],
27
27
  },
28
28
  {
29
- name: 'should render nullable decimal field correctly',
29
+ name: "should render nullable decimal field correctly",
30
30
  field: {
31
- name: 'optionalPrice',
32
- dataType: 'number',
33
- nullable: true
31
+ name: "optionalPrice",
32
+ dataType: "number",
33
+ nullable: true,
34
34
  },
35
35
  assertions: [
36
- { type: 'contains', text: '@Column({ "type": "decimal"' },
37
- { type: 'contains', text: 'optionalPrice: number;' }
38
- ]
36
+ { type: "contains", text: '@Column({ "type": "decimal"' },
37
+ { type: "contains", text: "optionalPrice: number;" },
38
+ ],
39
39
  },
40
40
  {
41
- name: 'should render decimal field with custom precision and scale',
41
+ name: "should render decimal field with custom precision and scale",
42
42
  field: {
43
- name: 'amount',
44
- dataType: 'number',
43
+ name: "amount",
44
+ dataType: "number",
45
45
  nullable: false,
46
46
  precision: 16,
47
- scale: 6
47
+ scale: 6,
48
48
  },
49
49
  assertions: [
50
- { type: 'contains', text: '@Column({ "type": "decimal"' },
51
- { type: 'contains', text: 'precision: 16' },
52
- { type: 'contains', text: 'scale: 6' },
53
- { type: 'contains', text: 'amount: number;' }
54
- ]
50
+ { type: "contains", text: '@Column({ "type": "decimal"' },
51
+ { type: "contains", text: "precision: 16" },
52
+ { type: "contains", text: "scale: 6" },
53
+ { type: "contains", text: "amount: number;" },
54
+ ],
55
55
  },
56
56
  {
57
- name: 'should render decimal field with default value correctly',
57
+ name: "should render decimal field with default value correctly",
58
58
  field: {
59
- name: 'defaultPrice',
60
- dataType: 'number',
59
+ name: "defaultPrice",
60
+ dataType: "number",
61
61
  nullable: false,
62
- default: '0.00'
62
+ default: "0.00",
63
63
  },
64
64
  assertions: [
65
- { type: 'contains', text: '@Column({ "type": "decimal"' },
66
- { type: 'contains', text: 'default: 0.00' },
67
- { type: 'contains', text: 'defaultPrice: number;' }
68
- ]
65
+ { type: "contains", text: '@Column({ "type": "decimal"' },
66
+ { type: "contains", text: "default: 0.00" },
67
+ { type: "contains", text: "defaultPrice: number;" },
68
+ ],
69
69
  },
70
70
  {
71
- name: 'should render indexed decimal field correctly',
71
+ name: "should render indexed decimal field correctly",
72
72
  field: {
73
- name: 'indexedPrice',
74
- dataType: 'number',
73
+ name: "indexedPrice",
74
+ dataType: "number",
75
75
  nullable: false,
76
- index: true
76
+ index: true,
77
77
  },
78
78
  assertions: [
79
- { type: 'contains', text: '@Column({ "type": "decimal"' },
80
- { type: 'contains', text: '@Index()' },
81
- { type: 'contains', text: 'indexedPrice: number;' }
82
- ]
83
- }
79
+ { type: "contains", text: '@Column({ "type": "decimal"' },
80
+ { type: "contains", text: "@Index()" },
81
+ { type: "contains", text: "indexedPrice: number;" },
82
+ ],
83
+ },
84
84
  ];
85
85
  (0, template_test_utils_1.runTemplateTests)(templatePath, testCases);
86
86
  });
@@ -2,66 +2,69 @@
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)('Double Entity Template Tests', () => {
5
+ (0, globals_1.describe)("Double 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-double';
10
+ const templatePath = "./entities/entity-col-double";
11
11
  const testCases = [
12
12
  {
13
- name: 'should render basic double field correctly',
13
+ name: "should render basic double field correctly",
14
14
  field: {
15
- name: 'doubleValue',
16
- dataType: 'number',
17
- nullable: false
15
+ name: "doubleValue",
16
+ dataType: "number",
17
+ nullable: false,
18
18
  },
19
19
  assertions: [
20
- { type: 'contains', text: '@Column({ "type": "float8"' },
21
- { type: 'contains', text: 'doubleValue: number;' },
22
- { type: 'notContains', text: '@Index()' },
23
- { type: 'notContains', text: '@PrimaryColumn()' }
24
- ]
20
+ { type: "contains", text: '@Column({ "type": "float8"' },
21
+ { type: "contains", text: "doubleValue: number;" },
22
+ { type: "notContains", text: "@Index()" },
23
+ { type: "notContains", text: "@PrimaryColumn()" },
24
+ ],
25
25
  },
26
26
  {
27
- name: 'should render nullable double field correctly',
27
+ name: "should render nullable double field correctly",
28
28
  field: {
29
- name: 'optionalDouble',
30
- dataType: 'number',
31
- nullable: true
29
+ name: "optionalDouble",
30
+ dataType: "number",
31
+ nullable: true,
32
32
  },
33
33
  assertions: [
34
- { type: 'contains', text: '@Column({ "type": "float8"' },
35
- { type: 'contains', text: 'optionalDouble: number;' }
36
- ]
34
+ { type: "contains", text: '@Column({ "type": "float8"' },
35
+ { type: "contains", text: "optionalDouble: number;" },
36
+ ],
37
37
  },
38
38
  {
39
- name: 'should render double field with default value correctly',
39
+ name: "should render double field with default value correctly",
40
40
  field: {
41
- name: 'defaultDouble',
42
- dataType: 'number',
41
+ name: "defaultDouble",
42
+ dataType: "number",
43
43
  nullable: false,
44
- default: 0
44
+ default: 0,
45
45
  },
46
46
  assertions: [
47
- { type: 'contains', text: '@Column({ "type": "float8", default: 0 })' },
48
- { type: 'contains', text: 'defaultDouble: number;' }
49
- ]
47
+ {
48
+ type: "contains",
49
+ text: '@Column({ "type": "float8", default: 0 })',
50
+ },
51
+ { type: "contains", text: "defaultDouble: number;" },
52
+ ],
50
53
  },
51
54
  {
52
- name: 'should render indexed double field correctly',
55
+ name: "should render indexed double field correctly",
53
56
  field: {
54
- name: 'indexedDouble',
55
- dataType: 'number',
57
+ name: "indexedDouble",
58
+ dataType: "number",
56
59
  nullable: false,
57
- index: true
60
+ index: true,
58
61
  },
59
62
  assertions: [
60
- { type: 'contains', text: '@Column({ "type": "float8"' },
61
- { type: 'contains', text: '@Index()' },
62
- { type: 'contains', text: 'indexedDouble: number;' }
63
- ]
64
- }
63
+ { type: "contains", text: '@Column({ "type": "float8"' },
64
+ { type: "contains", text: "@Index()" },
65
+ { type: "contains", text: "indexedDouble: number;" },
66
+ ],
67
+ },
65
68
  ];
66
69
  (0, template_test_utils_1.runTemplateTests)(templatePath, testCases);
67
70
  });
@@ -2,84 +2,84 @@
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)('Enum Entity Template Tests', () => {
5
+ (0, globals_1.describe)("Enum 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-enum';
10
+ const templatePath = "./entities/entity-col-enum";
11
11
  const testCases = [
12
12
  {
13
- name: 'should render basic enum field correctly',
13
+ name: "should render basic enum field correctly",
14
14
  field: {
15
- name: 'status',
16
- dataType: 'enum',
15
+ name: "status",
16
+ dataType: "enum",
17
17
  nullable: false,
18
18
  // eslint-disable-next-line camelcase
19
- enum_name: 'UserStatus',
19
+ enum_name: "UserStatus",
20
20
  // eslint-disable-next-line camelcase
21
- enum_values: ['ACTIVE', 'INACTIVE', 'PENDING']
21
+ enum_values: ["ACTIVE", "INACTIVE", "PENDING"],
22
22
  },
23
23
  assertions: [
24
- { type: 'contains', text: "type: 'enum'" },
25
- { type: 'contains', text: 'enum: enums.enum' },
26
- { type: 'contains', text: 'status!: enums.enum;' },
27
- { type: 'notContains', text: '@Index()' },
28
- { type: 'notContains', text: '@PrimaryColumn()' }
29
- ]
24
+ { type: "contains", text: "type: 'enum'" },
25
+ { type: "contains", text: "enum: enums.enum" },
26
+ { type: "contains", text: "status!: enums.enum;" },
27
+ { type: "notContains", text: "@Index()" },
28
+ { type: "notContains", text: "@PrimaryColumn()" },
29
+ ],
30
30
  },
31
31
  {
32
- name: 'should render nullable enum field correctly',
32
+ name: "should render nullable enum field correctly",
33
33
  field: {
34
- name: 'optionalStatus',
35
- dataType: 'enum',
34
+ name: "optionalStatus",
35
+ dataType: "enum",
36
36
  nullable: true,
37
37
  // eslint-disable-next-line camelcase
38
- enum_name: 'UserStatus',
38
+ enum_name: "UserStatus",
39
39
  // eslint-disable-next-line camelcase
40
- enum_values: ['ACTIVE', 'INACTIVE', 'PENDING']
40
+ enum_values: ["ACTIVE", "INACTIVE", "PENDING"],
41
41
  },
42
42
  assertions: [
43
- { type: 'contains', text: "type: 'enum'" },
44
- { type: 'contains', text: 'optionalStatus!: enums.enum;' }
45
- ]
43
+ { type: "contains", text: "type: 'enum'" },
44
+ { type: "contains", text: "optionalStatus!: enums.enum;" },
45
+ ],
46
46
  },
47
47
  {
48
- name: 'should render enum field with default value correctly',
48
+ name: "should render enum field with default value correctly",
49
49
  field: {
50
- name: 'defaultStatus',
51
- dataType: 'enum',
50
+ name: "defaultStatus",
51
+ dataType: "enum",
52
52
  nullable: false,
53
53
  // eslint-disable-next-line camelcase
54
- enum_name: 'UserStatus',
54
+ enum_name: "UserStatus",
55
55
  // eslint-disable-next-line camelcase
56
- enum_values: ['ACTIVE', 'INACTIVE', 'PENDING'],
57
- default: 'UserStatus.INACTIVE'
56
+ enum_values: ["ACTIVE", "INACTIVE", "PENDING"],
57
+ default: "UserStatus.INACTIVE",
58
58
  },
59
59
  assertions: [
60
- { type: 'contains', text: "type: 'enum'" },
61
- { type: 'contains', text: 'default: enums.enum.UserStatus.INACTIVE' },
62
- { type: 'contains', text: 'defaultStatus!: enums.enum;' }
63
- ]
60
+ { type: "contains", text: "type: 'enum'" },
61
+ { type: "contains", text: "default: enums.enum.UserStatus.INACTIVE" },
62
+ { type: "contains", text: "defaultStatus!: enums.enum;" },
63
+ ],
64
64
  },
65
65
  {
66
- name: 'should render indexed enum field correctly',
66
+ name: "should render indexed enum field correctly",
67
67
  field: {
68
- name: 'indexedStatus',
69
- dataType: 'enum',
68
+ name: "indexedStatus",
69
+ dataType: "enum",
70
70
  nullable: false,
71
71
  // eslint-disable-next-line camelcase
72
- enum_name: 'UserStatus',
72
+ enum_name: "UserStatus",
73
73
  // eslint-disable-next-line camelcase
74
- enum_values: ['ACTIVE', 'INACTIVE', 'PENDING'],
75
- index: true
74
+ enum_values: ["ACTIVE", "INACTIVE", "PENDING"],
75
+ index: true,
76
76
  },
77
77
  assertions: [
78
- { type: 'contains', text: "type: 'enum'" },
79
- { type: 'contains', text: '@Index()' },
80
- { type: 'contains', text: 'indexedStatus!: enums.enum;' }
81
- ]
82
- }
78
+ { type: "contains", text: "type: 'enum'" },
79
+ { type: "contains", text: "@Index()" },
80
+ { type: "contains", text: "indexedStatus!: enums.enum;" },
81
+ ],
82
+ },
83
83
  ];
84
84
  (0, template_test_utils_1.runTemplateTests)(templatePath, testCases);
85
85
  });