@formspec/cli 0.1.0-alpha.7 → 0.1.0-alpha.8
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/dist/__tests__/analyzer.test.js +28 -0
- package/dist/__tests__/analyzer.test.js.map +1 -1
- package/dist/__tests__/codegen.test.js +9 -3
- package/dist/__tests__/codegen.test.js.map +1 -1
- package/dist/__tests__/edge-cases.test.js +104 -0
- package/dist/__tests__/edge-cases.test.js.map +1 -1
- package/dist/__tests__/fixtures/edge-cases.d.ts +2 -2
- package/dist/__tests__/fixtures/edge-cases.d.ts.map +1 -1
- package/dist/__tests__/fixtures/edge-cases.js +4 -2
- package/dist/__tests__/fixtures/edge-cases.js.map +1 -1
- package/dist/__tests__/integration.test.js +16 -0
- package/dist/__tests__/integration.test.js.map +1 -1
- package/dist/analyzer/decorator-extractor.js.map +1 -1
- package/dist/analyzer/program.d.ts.map +1 -1
- package/dist/analyzer/program.js +3 -3
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/type-converter.d.ts +2 -2
- package/dist/analyzer/type-converter.d.ts.map +1 -1
- package/dist/analyzer/type-converter.js +8 -1
- package/dist/analyzer/type-converter.js.map +1 -1
- package/dist/codegen/index.d.ts.map +1 -1
- package/dist/codegen/index.js +15 -7
- package/dist/codegen/index.js.map +1 -1
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -43,6 +43,8 @@ describe("analyzeClass", () => {
|
|
|
43
43
|
it("analyzes InstallmentPlan fields", () => {
|
|
44
44
|
const ctx = createProgramContext(sampleFormsPath);
|
|
45
45
|
const classDecl = findClassByName(ctx.sourceFile, "InstallmentPlan");
|
|
46
|
+
if (!classDecl)
|
|
47
|
+
throw new Error("InstallmentPlan class not found");
|
|
46
48
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
47
49
|
expect(analysis.name).toBe("InstallmentPlan");
|
|
48
50
|
expect(analysis.fields).toHaveLength(4);
|
|
@@ -55,6 +57,8 @@ describe("analyzeClass", () => {
|
|
|
55
57
|
it("detects optional fields", () => {
|
|
56
58
|
const ctx = createProgramContext(sampleFormsPath);
|
|
57
59
|
const classDecl = findClassByName(ctx.sourceFile, "InstallmentPlan");
|
|
60
|
+
if (!classDecl)
|
|
61
|
+
throw new Error("InstallmentPlan class not found");
|
|
58
62
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
59
63
|
const emailField = analysis.fields.find((f) => f.name === "customerEmail");
|
|
60
64
|
const amountField = analysis.fields.find((f) => f.name === "amount");
|
|
@@ -64,6 +68,8 @@ describe("analyzeClass", () => {
|
|
|
64
68
|
it("analyzes instance methods", () => {
|
|
65
69
|
const ctx = createProgramContext(sampleFormsPath);
|
|
66
70
|
const classDecl = findClassByName(ctx.sourceFile, "InstallmentPlan");
|
|
71
|
+
if (!classDecl)
|
|
72
|
+
throw new Error("InstallmentPlan class not found");
|
|
67
73
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
68
74
|
expect(analysis.instanceMethods).toHaveLength(2);
|
|
69
75
|
const methodNames = analysis.instanceMethods.map((m) => m.name);
|
|
@@ -73,6 +79,8 @@ describe("analyzeClass", () => {
|
|
|
73
79
|
it("analyzes static methods", () => {
|
|
74
80
|
const ctx = createProgramContext(sampleFormsPath);
|
|
75
81
|
const classDecl = findClassByName(ctx.sourceFile, "InstallmentPlan");
|
|
82
|
+
if (!classDecl)
|
|
83
|
+
throw new Error("InstallmentPlan class not found");
|
|
76
84
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
77
85
|
expect(analysis.staticMethods).toHaveLength(1);
|
|
78
86
|
expect(analysis.staticMethods[0]?.name).toBe("createStandard");
|
|
@@ -80,6 +88,8 @@ describe("analyzeClass", () => {
|
|
|
80
88
|
it("detects InferSchema references in method parameters", () => {
|
|
81
89
|
const ctx = createProgramContext(sampleFormsPath);
|
|
82
90
|
const classDecl = findClassByName(ctx.sourceFile, "InstallmentPlan");
|
|
91
|
+
if (!classDecl)
|
|
92
|
+
throw new Error("InstallmentPlan class not found");
|
|
83
93
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
84
94
|
const activateMethod = analysis.instanceMethods.find((m) => m.name === "activate");
|
|
85
95
|
expect(activateMethod?.parameters).toHaveLength(1);
|
|
@@ -90,6 +100,8 @@ describe("analyzeClass", () => {
|
|
|
90
100
|
it("analyzes SimpleProduct without FormSpec references", () => {
|
|
91
101
|
const ctx = createProgramContext(sampleFormsPath);
|
|
92
102
|
const classDecl = findClassByName(ctx.sourceFile, "SimpleProduct");
|
|
103
|
+
if (!classDecl)
|
|
104
|
+
throw new Error("SimpleProduct class not found");
|
|
93
105
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
94
106
|
expect(analysis.name).toBe("SimpleProduct");
|
|
95
107
|
expect(analysis.fields).toHaveLength(4);
|
|
@@ -104,8 +116,12 @@ describe("convertType", () => {
|
|
|
104
116
|
it("converts string type", () => {
|
|
105
117
|
const ctx = createProgramContext(sampleFormsPath);
|
|
106
118
|
const classDecl = findClassByName(ctx.sourceFile, "SimpleProduct");
|
|
119
|
+
if (!classDecl)
|
|
120
|
+
throw new Error("SimpleProduct class not found");
|
|
107
121
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
108
122
|
const nameField = analysis.fields.find((f) => f.name === "name");
|
|
123
|
+
if (!nameField)
|
|
124
|
+
throw new Error("name field not found");
|
|
109
125
|
const result = convertType(nameField.type, ctx.checker);
|
|
110
126
|
expect(result.jsonSchema.type).toBe("string");
|
|
111
127
|
expect(result.formSpecFieldType).toBe("text");
|
|
@@ -113,8 +129,12 @@ describe("convertType", () => {
|
|
|
113
129
|
it("converts number type", () => {
|
|
114
130
|
const ctx = createProgramContext(sampleFormsPath);
|
|
115
131
|
const classDecl = findClassByName(ctx.sourceFile, "SimpleProduct");
|
|
132
|
+
if (!classDecl)
|
|
133
|
+
throw new Error("SimpleProduct class not found");
|
|
116
134
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
117
135
|
const priceField = analysis.fields.find((f) => f.name === "price");
|
|
136
|
+
if (!priceField)
|
|
137
|
+
throw new Error("price field not found");
|
|
118
138
|
const result = convertType(priceField.type, ctx.checker);
|
|
119
139
|
// price is optional so it's number | undefined
|
|
120
140
|
expect(result.formSpecFieldType).toBe("number");
|
|
@@ -122,8 +142,12 @@ describe("convertType", () => {
|
|
|
122
142
|
it("converts boolean type", () => {
|
|
123
143
|
const ctx = createProgramContext(sampleFormsPath);
|
|
124
144
|
const classDecl = findClassByName(ctx.sourceFile, "SimpleProduct");
|
|
145
|
+
if (!classDecl)
|
|
146
|
+
throw new Error("SimpleProduct class not found");
|
|
125
147
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
126
148
|
const activeField = analysis.fields.find((f) => f.name === "active");
|
|
149
|
+
if (!activeField)
|
|
150
|
+
throw new Error("active field not found");
|
|
127
151
|
const result = convertType(activeField.type, ctx.checker);
|
|
128
152
|
expect(result.jsonSchema.type).toBe("boolean");
|
|
129
153
|
expect(result.formSpecFieldType).toBe("boolean");
|
|
@@ -131,8 +155,12 @@ describe("convertType", () => {
|
|
|
131
155
|
it("converts string literal union to enum", () => {
|
|
132
156
|
const ctx = createProgramContext(sampleFormsPath);
|
|
133
157
|
const classDecl = findClassByName(ctx.sourceFile, "InstallmentPlan");
|
|
158
|
+
if (!classDecl)
|
|
159
|
+
throw new Error("InstallmentPlan class not found");
|
|
134
160
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
135
161
|
const statusField = analysis.fields.find((f) => f.name === "status");
|
|
162
|
+
if (!statusField)
|
|
163
|
+
throw new Error("status field not found");
|
|
136
164
|
const result = convertType(statusField.type, ctx.checker);
|
|
137
165
|
expect(result.jsonSchema.enum).toEqual(["active", "paused", "canceled"]);
|
|
138
166
|
expect(result.formSpecFieldType).toBe("enum");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.test.js","sourceRoot":"","sources":["../../src/__tests__/analyzer.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACrD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAElE,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,GAAG,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;QAElD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,GAAG,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QAErE,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,GAAG,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAEnE,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,GAAG,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;QAEtE,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,GAAG,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"analyzer.test.js","sourceRoot":"","sources":["../../src/__tests__/analyzer.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Tests for the codegen type generation functions.
|
|
3
3
|
*/
|
|
4
4
|
import { describe, it, expect } from "vitest";
|
|
5
|
-
import { generateCodegenOutput, findDecoratedClasses, } from "../codegen/index.js";
|
|
5
|
+
import { generateCodegenOutput, findDecoratedClasses as _findDecoratedClasses, } from "../codegen/index.js";
|
|
6
6
|
// =============================================================================
|
|
7
7
|
// Test Helpers
|
|
8
8
|
// =============================================================================
|
|
@@ -172,8 +172,11 @@ describe("generateCodegenOutput", () => {
|
|
|
172
172
|
});
|
|
173
173
|
const output = generateCodegenOutput([cls], "/tmp/out.ts", "/tmp");
|
|
174
174
|
// Extract just the schema type section
|
|
175
|
-
const
|
|
175
|
+
const schemaRegex = /export type TestFormSchema = \{[\s\S]*?\};/;
|
|
176
|
+
const schemaMatch = schemaRegex.exec(output);
|
|
176
177
|
expect(schemaMatch).not.toBeNull();
|
|
178
|
+
if (!schemaMatch)
|
|
179
|
+
throw new Error("Schema section not found");
|
|
177
180
|
const schemaSection = schemaMatch[0];
|
|
178
181
|
// Should have unquoted identifiers in schema type
|
|
179
182
|
expect(schemaSection).toContain("firstName: string;");
|
|
@@ -351,8 +354,11 @@ describe("generateCodegenOutput", () => {
|
|
|
351
354
|
});
|
|
352
355
|
const output = generateCodegenOutput([cls], "/tmp/out.ts", "/tmp");
|
|
353
356
|
// Extract just the schema type section
|
|
354
|
-
const
|
|
357
|
+
const schemaRegex = /export type TestFormSchema = \{[\s\S]*?\};/;
|
|
358
|
+
const schemaMatch = schemaRegex.exec(output);
|
|
355
359
|
expect(schemaMatch).not.toBeNull();
|
|
360
|
+
if (!schemaMatch)
|
|
361
|
+
throw new Error("Schema section not found");
|
|
356
362
|
const schemaSection = schemaMatch[0];
|
|
357
363
|
expect(schemaSection).toContain('"async": string;');
|
|
358
364
|
expect(schemaSection).toContain('"await": string;');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.test.js","sourceRoot":"","sources":["../../src/__tests__/codegen.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codegen.test.js","sourceRoot":"","sources":["../../src/__tests__/codegen.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,8 +29,12 @@ describe("convertType - complex unions", () => {
|
|
|
29
29
|
it("handles string | number union as oneOf", () => {
|
|
30
30
|
const ctx = createProgramContext(edgeCasesPath);
|
|
31
31
|
const classDecl = findClassByName(ctx.sourceFile, "MixedUnionTypes");
|
|
32
|
+
if (!classDecl)
|
|
33
|
+
throw new Error("MixedUnionTypes class not found");
|
|
32
34
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
33
35
|
const field = analysis.fields.find((f) => f.name === "mixedPrimitive");
|
|
36
|
+
if (!field)
|
|
37
|
+
throw new Error("mixedPrimitive field not found");
|
|
34
38
|
const result = convertType(field.type, ctx.checker);
|
|
35
39
|
expect(result.formSpecFieldType).toBe("union");
|
|
36
40
|
expect(result.jsonSchema.oneOf).toBeDefined();
|
|
@@ -39,8 +43,12 @@ describe("convertType - complex unions", () => {
|
|
|
39
43
|
it("handles complex union with object and primitive", () => {
|
|
40
44
|
const ctx = createProgramContext(edgeCasesPath);
|
|
41
45
|
const classDecl = findClassByName(ctx.sourceFile, "MixedUnionTypes");
|
|
46
|
+
if (!classDecl)
|
|
47
|
+
throw new Error("MixedUnionTypes class not found");
|
|
42
48
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
43
49
|
const field = analysis.fields.find((f) => f.name === "complexUnion");
|
|
50
|
+
if (!field)
|
|
51
|
+
throw new Error("complexUnion field not found");
|
|
44
52
|
const result = convertType(field.type, ctx.checker);
|
|
45
53
|
expect(result.formSpecFieldType).toBe("union");
|
|
46
54
|
expect(result.jsonSchema.oneOf).toBeDefined();
|
|
@@ -48,8 +56,12 @@ describe("convertType - complex unions", () => {
|
|
|
48
56
|
it("handles discriminated union (object union)", () => {
|
|
49
57
|
const ctx = createProgramContext(edgeCasesPath);
|
|
50
58
|
const classDecl = findClassByName(ctx.sourceFile, "MixedUnionTypes");
|
|
59
|
+
if (!classDecl)
|
|
60
|
+
throw new Error("MixedUnionTypes class not found");
|
|
51
61
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
52
62
|
const field = analysis.fields.find((f) => f.name === "objectUnion");
|
|
63
|
+
if (!field)
|
|
64
|
+
throw new Error("objectUnion field not found");
|
|
53
65
|
const result = convertType(field.type, ctx.checker);
|
|
54
66
|
expect(result.formSpecFieldType).toBe("union");
|
|
55
67
|
expect(result.jsonSchema.oneOf).toHaveLength(2);
|
|
@@ -59,10 +71,16 @@ describe("convertType - nullable patterns", () => {
|
|
|
59
71
|
it("handles T | null as oneOf with null", () => {
|
|
60
72
|
const ctx = createProgramContext(edgeCasesPath);
|
|
61
73
|
const classDecl = findClassByName(ctx.sourceFile, "NullablePatterns");
|
|
74
|
+
if (!classDecl)
|
|
75
|
+
throw new Error("NullablePatterns class not found");
|
|
62
76
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
63
77
|
const field = analysis.fields.find((f) => f.name === "nullableString");
|
|
78
|
+
if (!field)
|
|
79
|
+
throw new Error("nullableString field not found");
|
|
64
80
|
const result = convertType(field.type, ctx.checker);
|
|
65
81
|
expect(result.jsonSchema.oneOf).toBeDefined();
|
|
82
|
+
if (!result.jsonSchema.oneOf)
|
|
83
|
+
throw new Error("oneOf not defined");
|
|
66
84
|
const types = result.jsonSchema.oneOf.map((s) => s.type);
|
|
67
85
|
expect(types).toContain("string");
|
|
68
86
|
expect(types).toContain("null");
|
|
@@ -70,8 +88,12 @@ describe("convertType - nullable patterns", () => {
|
|
|
70
88
|
it("handles T | undefined (filters out undefined)", () => {
|
|
71
89
|
const ctx = createProgramContext(edgeCasesPath);
|
|
72
90
|
const classDecl = findClassByName(ctx.sourceFile, "NullablePatterns");
|
|
91
|
+
if (!classDecl)
|
|
92
|
+
throw new Error("NullablePatterns class not found");
|
|
73
93
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
74
94
|
const field = analysis.fields.find((f) => f.name === "undefinedString");
|
|
95
|
+
if (!field)
|
|
96
|
+
throw new Error("undefinedString field not found");
|
|
75
97
|
const result = convertType(field.type, ctx.checker);
|
|
76
98
|
// undefined is filtered out, leaving just string
|
|
77
99
|
expect(result.jsonSchema.type).toBe("string");
|
|
@@ -80,11 +102,17 @@ describe("convertType - nullable patterns", () => {
|
|
|
80
102
|
it("handles nullable enum", () => {
|
|
81
103
|
const ctx = createProgramContext(edgeCasesPath);
|
|
82
104
|
const classDecl = findClassByName(ctx.sourceFile, "NullablePatterns");
|
|
105
|
+
if (!classDecl)
|
|
106
|
+
throw new Error("NullablePatterns class not found");
|
|
83
107
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
84
108
|
const field = analysis.fields.find((f) => f.name === "nullableStatus");
|
|
109
|
+
if (!field)
|
|
110
|
+
throw new Error("nullableStatus field not found");
|
|
85
111
|
const result = convertType(field.type, ctx.checker);
|
|
86
112
|
expect(result.jsonSchema.oneOf).toBeDefined();
|
|
87
113
|
// Should have enum schema and null type
|
|
114
|
+
if (!result.jsonSchema.oneOf)
|
|
115
|
+
throw new Error("oneOf not defined");
|
|
88
116
|
const hasEnum = result.jsonSchema.oneOf.some((s) => s.enum !== undefined);
|
|
89
117
|
const hasNull = result.jsonSchema.oneOf.some((s) => s.type === "null");
|
|
90
118
|
expect(hasEnum).toBe(true);
|
|
@@ -93,11 +121,17 @@ describe("convertType - nullable patterns", () => {
|
|
|
93
121
|
it("handles T | null | undefined", () => {
|
|
94
122
|
const ctx = createProgramContext(edgeCasesPath);
|
|
95
123
|
const classDecl = findClassByName(ctx.sourceFile, "NullablePatterns");
|
|
124
|
+
if (!classDecl)
|
|
125
|
+
throw new Error("NullablePatterns class not found");
|
|
96
126
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
97
127
|
const field = analysis.fields.find((f) => f.name === "tripleUnion");
|
|
128
|
+
if (!field)
|
|
129
|
+
throw new Error("tripleUnion field not found");
|
|
98
130
|
const result = convertType(field.type, ctx.checker);
|
|
99
131
|
// Should filter undefined, keep string and null
|
|
100
132
|
expect(result.jsonSchema.oneOf).toBeDefined();
|
|
133
|
+
if (!result.jsonSchema.oneOf)
|
|
134
|
+
throw new Error("oneOf not defined");
|
|
101
135
|
const types = result.jsonSchema.oneOf.map((s) => s.type);
|
|
102
136
|
expect(types).toContain("string");
|
|
103
137
|
expect(types).toContain("null");
|
|
@@ -108,8 +142,12 @@ describe("convertType - array edge cases", () => {
|
|
|
108
142
|
it("handles array of unions", () => {
|
|
109
143
|
const ctx = createProgramContext(edgeCasesPath);
|
|
110
144
|
const classDecl = findClassByName(ctx.sourceFile, "ArrayEdgeCases");
|
|
145
|
+
if (!classDecl)
|
|
146
|
+
throw new Error("ArrayEdgeCases class not found");
|
|
111
147
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
112
148
|
const field = analysis.fields.find((f) => f.name === "mixedArray");
|
|
149
|
+
if (!field)
|
|
150
|
+
throw new Error("mixedArray field not found");
|
|
113
151
|
const result = convertType(field.type, ctx.checker);
|
|
114
152
|
expect(result.jsonSchema.type).toBe("array");
|
|
115
153
|
expect(result.jsonSchema.items?.oneOf).toBeDefined();
|
|
@@ -117,16 +155,24 @@ describe("convertType - array edge cases", () => {
|
|
|
117
155
|
it("handles nullable array", () => {
|
|
118
156
|
const ctx = createProgramContext(edgeCasesPath);
|
|
119
157
|
const classDecl = findClassByName(ctx.sourceFile, "ArrayEdgeCases");
|
|
158
|
+
if (!classDecl)
|
|
159
|
+
throw new Error("ArrayEdgeCases class not found");
|
|
120
160
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
121
161
|
const field = analysis.fields.find((f) => f.name === "nullableArray");
|
|
162
|
+
if (!field)
|
|
163
|
+
throw new Error("nullableArray field not found");
|
|
122
164
|
const result = convertType(field.type, ctx.checker);
|
|
123
165
|
expect(result.jsonSchema.oneOf).toBeDefined();
|
|
124
166
|
});
|
|
125
167
|
it("handles array of objects", () => {
|
|
126
168
|
const ctx = createProgramContext(edgeCasesPath);
|
|
127
169
|
const classDecl = findClassByName(ctx.sourceFile, "ArrayEdgeCases");
|
|
170
|
+
if (!classDecl)
|
|
171
|
+
throw new Error("ArrayEdgeCases class not found");
|
|
128
172
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
129
173
|
const field = analysis.fields.find((f) => f.name === "objectArray");
|
|
174
|
+
if (!field)
|
|
175
|
+
throw new Error("objectArray field not found");
|
|
130
176
|
const result = convertType(field.type, ctx.checker);
|
|
131
177
|
expect(result.jsonSchema.type).toBe("array");
|
|
132
178
|
expect(result.jsonSchema.items?.type).toBe("object");
|
|
@@ -135,8 +181,12 @@ describe("convertType - array edge cases", () => {
|
|
|
135
181
|
it("handles nested arrays", () => {
|
|
136
182
|
const ctx = createProgramContext(edgeCasesPath);
|
|
137
183
|
const classDecl = findClassByName(ctx.sourceFile, "ArrayEdgeCases");
|
|
184
|
+
if (!classDecl)
|
|
185
|
+
throw new Error("ArrayEdgeCases class not found");
|
|
138
186
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
139
187
|
const field = analysis.fields.find((f) => f.name === "nestedArray");
|
|
188
|
+
if (!field)
|
|
189
|
+
throw new Error("nestedArray field not found");
|
|
140
190
|
const result = convertType(field.type, ctx.checker);
|
|
141
191
|
expect(result.jsonSchema.type).toBe("array");
|
|
142
192
|
expect(result.jsonSchema.items?.type).toBe("array");
|
|
@@ -147,8 +197,12 @@ describe("convertType - object edge cases", () => {
|
|
|
147
197
|
it("handles empty object", () => {
|
|
148
198
|
const ctx = createProgramContext(edgeCasesPath);
|
|
149
199
|
const classDecl = findClassByName(ctx.sourceFile, "ObjectEdgeCases");
|
|
200
|
+
if (!classDecl)
|
|
201
|
+
throw new Error("ObjectEdgeCases class not found");
|
|
150
202
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
151
203
|
const field = analysis.fields.find((f) => f.name === "emptyObject");
|
|
204
|
+
if (!field)
|
|
205
|
+
throw new Error("emptyObject field not found");
|
|
152
206
|
const result = convertType(field.type, ctx.checker);
|
|
153
207
|
expect(result.jsonSchema.type).toBe("object");
|
|
154
208
|
expect(result.jsonSchema.properties).toEqual({});
|
|
@@ -156,8 +210,12 @@ describe("convertType - object edge cases", () => {
|
|
|
156
210
|
it("handles deeply nested object", () => {
|
|
157
211
|
const ctx = createProgramContext(edgeCasesPath);
|
|
158
212
|
const classDecl = findClassByName(ctx.sourceFile, "ObjectEdgeCases");
|
|
213
|
+
if (!classDecl)
|
|
214
|
+
throw new Error("ObjectEdgeCases class not found");
|
|
159
215
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
160
216
|
const field = analysis.fields.find((f) => f.name === "deepNested");
|
|
217
|
+
if (!field)
|
|
218
|
+
throw new Error("deepNested field not found");
|
|
161
219
|
const result = convertType(field.type, ctx.checker);
|
|
162
220
|
expect(result.jsonSchema.type).toBe("object");
|
|
163
221
|
expect(result.jsonSchema.properties?.["level1"]?.properties?.["level2"]).toBeDefined();
|
|
@@ -165,8 +223,12 @@ describe("convertType - object edge cases", () => {
|
|
|
165
223
|
it("handles object with optional properties", () => {
|
|
166
224
|
const ctx = createProgramContext(edgeCasesPath);
|
|
167
225
|
const classDecl = findClassByName(ctx.sourceFile, "ObjectEdgeCases");
|
|
226
|
+
if (!classDecl)
|
|
227
|
+
throw new Error("ObjectEdgeCases class not found");
|
|
168
228
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
169
229
|
const field = analysis.fields.find((f) => f.name === "optionalProps");
|
|
230
|
+
if (!field)
|
|
231
|
+
throw new Error("optionalProps field not found");
|
|
170
232
|
const result = convertType(field.type, ctx.checker);
|
|
171
233
|
expect(result.jsonSchema.type).toBe("object");
|
|
172
234
|
expect(result.jsonSchema.required).toContain("required");
|
|
@@ -177,8 +239,12 @@ describe("convertType - special types", () => {
|
|
|
177
239
|
it("handles any type gracefully", () => {
|
|
178
240
|
const ctx = createProgramContext(edgeCasesPath);
|
|
179
241
|
const classDecl = findClassByName(ctx.sourceFile, "SpecialTypes");
|
|
242
|
+
if (!classDecl)
|
|
243
|
+
throw new Error("SpecialTypes class not found");
|
|
180
244
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
181
245
|
const field = analysis.fields.find((f) => f.name === "anyField");
|
|
246
|
+
if (!field)
|
|
247
|
+
throw new Error("anyField field not found");
|
|
182
248
|
const result = convertType(field.type, ctx.checker);
|
|
183
249
|
// any should be treated as unknown/empty schema
|
|
184
250
|
expect(result.formSpecFieldType).toBeDefined();
|
|
@@ -186,8 +252,12 @@ describe("convertType - special types", () => {
|
|
|
186
252
|
it("handles unknown type gracefully", () => {
|
|
187
253
|
const ctx = createProgramContext(edgeCasesPath);
|
|
188
254
|
const classDecl = findClassByName(ctx.sourceFile, "SpecialTypes");
|
|
255
|
+
if (!classDecl)
|
|
256
|
+
throw new Error("SpecialTypes class not found");
|
|
189
257
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
190
258
|
const field = analysis.fields.find((f) => f.name === "unknownField");
|
|
259
|
+
if (!field)
|
|
260
|
+
throw new Error("unknownField field not found");
|
|
191
261
|
const result = convertType(field.type, ctx.checker);
|
|
192
262
|
expect(result.formSpecFieldType).toBeDefined();
|
|
193
263
|
});
|
|
@@ -196,8 +266,12 @@ describe("convertType - enum variations", () => {
|
|
|
196
266
|
it("handles single literal as enum with one value", () => {
|
|
197
267
|
const ctx = createProgramContext(edgeCasesPath);
|
|
198
268
|
const classDecl = findClassByName(ctx.sourceFile, "EnumVariations");
|
|
269
|
+
if (!classDecl)
|
|
270
|
+
throw new Error("EnumVariations class not found");
|
|
199
271
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
200
272
|
const field = analysis.fields.find((f) => f.name === "singleLiteral");
|
|
273
|
+
if (!field)
|
|
274
|
+
throw new Error("singleLiteral field not found");
|
|
201
275
|
const result = convertType(field.type, ctx.checker);
|
|
202
276
|
// Single literal should be const, not enum
|
|
203
277
|
expect(result.jsonSchema.const).toBe("only");
|
|
@@ -205,8 +279,12 @@ describe("convertType - enum variations", () => {
|
|
|
205
279
|
it("handles number literal enum", () => {
|
|
206
280
|
const ctx = createProgramContext(edgeCasesPath);
|
|
207
281
|
const classDecl = findClassByName(ctx.sourceFile, "EnumVariations");
|
|
282
|
+
if (!classDecl)
|
|
283
|
+
throw new Error("EnumVariations class not found");
|
|
208
284
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
209
285
|
const field = analysis.fields.find((f) => f.name === "numberEnum");
|
|
286
|
+
if (!field)
|
|
287
|
+
throw new Error("numberEnum field not found");
|
|
210
288
|
const result = convertType(field.type, ctx.checker);
|
|
211
289
|
expect(result.jsonSchema.enum).toEqual([1, 2, 3]);
|
|
212
290
|
expect(result.formSpecFieldType).toBe("enum");
|
|
@@ -214,8 +292,12 @@ describe("convertType - enum variations", () => {
|
|
|
214
292
|
it("handles mixed literal types as union", () => {
|
|
215
293
|
const ctx = createProgramContext(edgeCasesPath);
|
|
216
294
|
const classDecl = findClassByName(ctx.sourceFile, "EnumVariations");
|
|
295
|
+
if (!classDecl)
|
|
296
|
+
throw new Error("EnumVariations class not found");
|
|
217
297
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
218
298
|
const field = analysis.fields.find((f) => f.name === "mixedLiterals");
|
|
299
|
+
if (!field)
|
|
300
|
+
throw new Error("mixedLiterals field not found");
|
|
219
301
|
const result = convertType(field.type, ctx.checker);
|
|
220
302
|
// Mixed string/number literals should be union, not enum
|
|
221
303
|
expect(result.formSpecFieldType).toBe("union");
|
|
@@ -224,8 +306,12 @@ describe("convertType - enum variations", () => {
|
|
|
224
306
|
it("handles large enum", () => {
|
|
225
307
|
const ctx = createProgramContext(edgeCasesPath);
|
|
226
308
|
const classDecl = findClassByName(ctx.sourceFile, "EnumVariations");
|
|
309
|
+
if (!classDecl)
|
|
310
|
+
throw new Error("EnumVariations class not found");
|
|
227
311
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
228
312
|
const field = analysis.fields.find((f) => f.name === "largeEnum");
|
|
313
|
+
if (!field)
|
|
314
|
+
throw new Error("largeEnum field not found");
|
|
229
315
|
const result = convertType(field.type, ctx.checker);
|
|
230
316
|
expect(result.jsonSchema.enum).toHaveLength(10);
|
|
231
317
|
expect(result.formSpecFieldType).toBe("enum");
|
|
@@ -288,6 +374,8 @@ describe("output writer - error handling", () => {
|
|
|
288
374
|
it("creates output directory if it doesn't exist", () => {
|
|
289
375
|
const ctx = createProgramContext(edgeCasesPath);
|
|
290
376
|
const classDecl = findClassByName(ctx.sourceFile, "NullablePatterns");
|
|
377
|
+
if (!classDecl)
|
|
378
|
+
throw new Error("NullablePatterns class not found");
|
|
291
379
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
292
380
|
const schemas = generateClassSchemas(analysis, ctx.checker);
|
|
293
381
|
const nonExistentDir = path.join(tempDir, "new-dir", "nested");
|
|
@@ -298,6 +386,8 @@ describe("output writer - error handling", () => {
|
|
|
298
386
|
it("overwrites existing files", () => {
|
|
299
387
|
const ctx = createProgramContext(edgeCasesPath);
|
|
300
388
|
const classDecl = findClassByName(ctx.sourceFile, "NullablePatterns");
|
|
389
|
+
if (!classDecl)
|
|
390
|
+
throw new Error("NullablePatterns class not found");
|
|
301
391
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
302
392
|
const schemas = generateClassSchemas(analysis, ctx.checker);
|
|
303
393
|
const outputDir = path.join(tempDir, "overwrite-test");
|
|
@@ -317,6 +407,8 @@ describe("output writer - error handling", () => {
|
|
|
317
407
|
// Note: This tests the sanitization logic if any
|
|
318
408
|
const ctx = createProgramContext(edgeCasesPath);
|
|
319
409
|
const classDecl = findClassByName(ctx.sourceFile, "MixedUnionTypes");
|
|
410
|
+
if (!classDecl)
|
|
411
|
+
throw new Error("MixedUnionTypes class not found");
|
|
320
412
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
321
413
|
const schemas = generateClassSchemas(analysis, ctx.checker);
|
|
322
414
|
const result = writeClassSchemas(analysis.name, schemas, [], [], { outDir: tempDir });
|
|
@@ -382,6 +474,8 @@ describe("extractDecorators - edge cases", () => {
|
|
|
382
474
|
it("handles class with no decorated properties", () => {
|
|
383
475
|
const ctx = createProgramContext(edgeCasesPath);
|
|
384
476
|
const classDecl = findClassByName(ctx.sourceFile, "MixedUnionTypes");
|
|
477
|
+
if (!classDecl)
|
|
478
|
+
throw new Error("MixedUnionTypes class not found");
|
|
385
479
|
// This class has no decorators
|
|
386
480
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
387
481
|
// All fields should have empty decorator arrays
|
|
@@ -392,6 +486,8 @@ describe("extractDecorators - edge cases", () => {
|
|
|
392
486
|
it("handles class explicitly without decorators", () => {
|
|
393
487
|
const ctx = createProgramContext(edgeCasesPath);
|
|
394
488
|
const classDecl = findClassByName(ctx.sourceFile, "NoDecoratorsClass");
|
|
489
|
+
if (!classDecl)
|
|
490
|
+
throw new Error("NoDecoratorsClass class not found");
|
|
395
491
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
396
492
|
// All fields should have empty decorator arrays
|
|
397
493
|
expect(analysis.fields).toHaveLength(3);
|
|
@@ -402,10 +498,18 @@ describe("extractDecorators - edge cases", () => {
|
|
|
402
498
|
it("correctly detects optional vs required fields without decorators", () => {
|
|
403
499
|
const ctx = createProgramContext(edgeCasesPath);
|
|
404
500
|
const classDecl = findClassByName(ctx.sourceFile, "NoDecoratorsClass");
|
|
501
|
+
if (!classDecl)
|
|
502
|
+
throw new Error("NoDecoratorsClass class not found");
|
|
405
503
|
const analysis = analyzeClass(classDecl, ctx.checker);
|
|
406
504
|
const nameField = analysis.fields.find((f) => f.name === "name");
|
|
505
|
+
if (!nameField)
|
|
506
|
+
throw new Error("name field not found");
|
|
407
507
|
const countField = analysis.fields.find((f) => f.name === "count");
|
|
508
|
+
if (!countField)
|
|
509
|
+
throw new Error("count field not found");
|
|
408
510
|
const activeField = analysis.fields.find((f) => f.name === "active");
|
|
511
|
+
if (!activeField)
|
|
512
|
+
throw new Error("active field not found");
|
|
409
513
|
expect(nameField.optional).toBe(false);
|
|
410
514
|
expect(countField.optional).toBe(true);
|
|
411
515
|
expect(activeField.optional).toBe(false);
|