Skip to content

Commit ba863c3

Browse files
committed
test: adapt generator tests to nested filesGenerated shape
- Access files as result.filesGenerated[<generator>] (with non-null assertion since a generator may not have run) - Introduce a local \`files\` constant per describe block to keep assertions readable - Update file-count for introspection TypeSchema output (45 → 44) now that the implicit ir-report README.md lives under filesGenerated["ir-report"] - Regenerate introspection snapshots to reflect the introspection-only file list (README.md moved out)
1 parent 0544494 commit ba863c3

9 files changed

Lines changed: 430 additions & 419 deletions

File tree

test/api/mustache.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ describe("Mustache Template Based Generation", async () => {
1515
.throwException()
1616
.generate();
1717
expect(report.success).toBeTrue();
18-
expect(Object.keys(report.filesGenerated).length).toEqual(192);
18+
const files = report.filesGenerated["mustache[./examples/mustache/java]"]!;
19+
expect(Object.keys(files).length).toEqual(192);
1920
it("Patient resource", async () => {
2021
expect(
21-
report.filesGenerated["generated/model/src/main/java/de/solutio/fhir/models/resources/PatientDTO.java"],
22+
files["generated/model/src/main/java/de/solutio/fhir/models/resources/PatientDTO.java"],
2223
).toMatchSnapshot();
2324
});
2425
});

test/api/write-generator/__snapshots__/introspection.test.ts.snap

Lines changed: 328 additions & 330 deletions
Large diffs are not rendered by default.

test/api/write-generator/csharp.test.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@ describe("C# Writer Generator", async () => {
1010
.throwException()
1111
.generate();
1212
expect(result.success).toBeTrue();
13-
expect(Object.keys(result.filesGenerated).length).toEqual(154);
13+
const files = result.filesGenerated.csharp!;
14+
expect(Object.keys(files).length).toEqual(154);
1415
it("generates Patient resource in inMemoryOnly mode with snapshot", async () => {
15-
expect(result.filesGenerated["generated/types/Hl7FhirR4Core/Patient.cs"]).toMatchSnapshot();
16+
expect(files["generated/types/Hl7FhirR4Core/Patient.cs"]).toMatchSnapshot();
1617
});
1718
it("static files", async () => {
18-
expect(result.filesGenerated["generated/types/Client.cs"]).toMatchSnapshot();
19-
expect(result.filesGenerated["generated/types/Helper.cs"]).toMatchSnapshot();
19+
expect(files["generated/types/Client.cs"]).toMatchSnapshot();
20+
expect(files["generated/types/Helper.cs"]).toMatchSnapshot();
2021
});
2122
});

test/api/write-generator/introspection.test.ts

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,19 @@ describe("IntrospectionWriter - Fhir Schema Output", async () => {
1010

1111
expect(result.success).toBeTrue();
1212

13-
expect(Object.keys(result.filesGenerated).length).toEqual(656);
13+
const files = result.filesGenerated.introspection!;
14+
expect(Object.keys(files).length).toEqual(656);
1415
it("Generated file list", () => {
15-
expect(Object.keys(result.filesGenerated)).toMatchSnapshot();
16+
expect(Object.keys(files)).toMatchSnapshot();
1617
});
1718
it("Check OperationOutcome introspection schema", () => {
1819
const operationOutcome =
19-
result.filesGenerated["generated/introspection/hl7.fhir.r4.core/OperationOutcome(OperationOutcome).json"];
20+
files["generated/introspection/hl7.fhir.r4.core/OperationOutcome(OperationOutcome).json"];
2021
expect(operationOutcome).toBeDefined();
2122
expect(operationOutcome).toMatchSnapshot();
2223
});
2324
it("Check all introspection data in a single ndjson file", () => {
24-
expect(result.filesGenerated["generated/introspection.ndjson"]).toMatchSnapshot();
25+
expect(files["generated/introspection.ndjson"]).toMatchSnapshot();
2526
});
2627
});
2728

@@ -49,18 +50,19 @@ describe("IntrospectionWriter - TypeSchema output", async () => {
4950

5051
expect(result.success).toBeTrue();
5152

52-
expect(Object.keys(result.filesGenerated).length).toEqual(45);
53+
const files = result.filesGenerated.introspection!;
54+
expect(Object.keys(files).length).toEqual(44);
5355
it("Generated file list", () => {
54-
expect(Object.keys(result.filesGenerated)).toMatchSnapshot();
56+
expect(Object.keys(files)).toMatchSnapshot();
5557
});
5658
it("Check OperationOutcome introspection schema", () => {
5759
const operationOutcome =
58-
result.filesGenerated["generated/introspection/hl7.fhir.r4.core/OperationOutcome(OperationOutcome).json"];
60+
files["generated/introspection/hl7.fhir.r4.core/OperationOutcome(OperationOutcome).json"];
5961
expect(operationOutcome).toBeDefined();
6062
expect(operationOutcome).toMatchSnapshot();
6163
});
6264
it("Check all introspection data in a single ndjson file", () => {
63-
expect(result.filesGenerated["generated/introspection.ndjson"]).toMatchSnapshot();
65+
expect(files["generated/introspection.ndjson"]).toMatchSnapshot();
6466
});
6567
});
6668

@@ -84,8 +86,10 @@ describe("IntrospectionWriter - typeTree", async () => {
8486

8587
expect(result.success).toBeTrue();
8688

89+
const files = result.filesGenerated.introspection!;
90+
8791
it("Type tree file should be generated", () => {
88-
expect(result.filesGenerated["generated/type-tree.json"]).toBeDefined();
92+
expect(files["generated/type-tree.json"]).toBeDefined();
8993
});
9094
});
9195

@@ -113,18 +117,18 @@ describe("IntrospectionWriter - StructureDefinition output", async () => {
113117

114118
expect(result.success).toBeTrue();
115119

120+
const files = result.filesGenerated.introspection!;
121+
116122
it("Generated file list", () => {
117-
expect(Object.keys(result.filesGenerated)).toMatchSnapshot();
123+
expect(Object.keys(files)).toMatchSnapshot();
118124
});
119125
it("Check OperationOutcome StructureDefinition", () => {
120126
const operationOutcome =
121-
result.filesGenerated[
122-
"generated/structure-definitions/hl7.fhir.r4.core/OperationOutcome(OperationOutcome).json"
123-
];
127+
files["generated/structure-definitions/hl7.fhir.r4.core/OperationOutcome(OperationOutcome).json"];
124128
expect(operationOutcome).toBeDefined();
125129
expect(operationOutcome).toMatchSnapshot();
126130
});
127131
it("Check all StructureDefinitions in a single ndjson file", () => {
128-
expect(result.filesGenerated["generated/structure-definitions.ndjson"]).toMatchSnapshot();
132+
expect(files["generated/structure-definitions.ndjson"]).toMatchSnapshot();
129133
});
130134
});

test/api/write-generator/multi-package/cda.test.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,14 @@ describe("CDA", async () => {
3030
});
3131

3232
it("should generate ClinicalDocument type", () => {
33-
const clinicalDoc = result.filesGenerated["generated/types/hl7-cda-uv-core/ClinicalDocument.ts"];
33+
const clinicalDoc =
34+
result.filesGenerated.typescript!["generated/types/hl7-cda-uv-core/ClinicalDocument.ts"];
3435
expect(clinicalDoc).toBeDefined();
3536
expect(clinicalDoc).toMatchSnapshot();
3637
});
3738

3839
it("should generate CDA-specific types", () => {
39-
const files = Object.keys(result.filesGenerated);
40+
const files = Object.keys(result.filesGenerated.typescript!);
4041
const cdaFiles = files.filter((f) => f.includes("hl7-cda-uv-core"));
4142
expect(cdaFiles.length).toBe(124);
4243

@@ -56,14 +57,14 @@ describe("CDA", async () => {
5657
});
5758

5859
it("should generate ClinicalDocument type (promoted logical)", () => {
59-
const clinicalDoc = result.filesGenerated["generated/hl7_cda_uv_core/clinical_document.py"];
60+
const clinicalDoc = result.filesGenerated.python!["generated/hl7_cda_uv_core/clinical_document.py"];
6061
expect(clinicalDoc).toBeDefined();
6162
expect(clinicalDoc).toMatchSnapshot();
6263
});
6364

6465
it("should generate base package structure", () => {
65-
expect(result.filesGenerated["generated/__init__.py"]).toBeDefined();
66-
expect(result.filesGenerated["generated/requirements.txt"]).toBeDefined();
66+
expect(result.filesGenerated.python!["generated/__init__.py"]).toBeDefined();
67+
expect(result.filesGenerated.python!["generated/requirements.txt"]).toBeDefined();
6768
});
6869
});
6970

@@ -79,14 +80,14 @@ describe("CDA", async () => {
7980
});
8081

8182
it("should generate ClinicalDocument type (promoted logical)", () => {
82-
const clinicalDoc = result.filesGenerated["generated/types/Hl7CdaUvCore/ClinicalDocument.cs"];
83+
const clinicalDoc = result.filesGenerated.csharp!["generated/types/Hl7CdaUvCore/ClinicalDocument.cs"];
8384
expect(clinicalDoc).toBeDefined();
8485
expect(clinicalDoc).toMatchSnapshot();
8586
});
8687

8788
it("should generate base helper files", () => {
88-
expect(result.filesGenerated["generated/types/base.cs"]).toBeDefined();
89-
expect(result.filesGenerated["generated/types/Helper.cs"]).toBeDefined();
89+
expect(result.filesGenerated.csharp!["generated/types/base.cs"]).toBeDefined();
90+
expect(result.filesGenerated.csharp!["generated/types/Helper.cs"]).toBeDefined();
9091
});
9192
});
9293
});

test/api/write-generator/multi-package/local-package.test.ts

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -41,22 +41,24 @@ describe("Local Package Folder - Multi-Package Generation", async () => {
4141
});
4242

4343
it("should generate ExampleNotebook type in custom package folder", () => {
44-
const notebookFile = result.filesGenerated["generated/types/example-folder-structures/ExampleNotebook.ts"];
44+
const notebookFile =
45+
result.filesGenerated.typescript!["generated/types/example-folder-structures/ExampleNotebook.ts"];
4546
expect(notebookFile).toBeDefined();
4647
expect(notebookFile).toMatchSnapshot();
4748
});
4849

4950
it("should resolve R4 dependencies (Identifier, Reference, Coding)", () => {
50-
const notebookFile = result.filesGenerated["generated/types/example-folder-structures/ExampleNotebook.ts"];
51+
const notebookFile =
52+
result.filesGenerated.typescript!["generated/types/example-folder-structures/ExampleNotebook.ts"];
5153
expect(notebookFile).toContain("Identifier");
5254
expect(notebookFile).toContain("Reference");
5355
expect(notebookFile).toContain("Coding");
5456
});
5557

5658
it("should generate R4 dependency types", () => {
57-
expect(result.filesGenerated["generated/types/hl7-fhir-r4-core/Identifier.ts"]).toBeDefined();
58-
expect(result.filesGenerated["generated/types/hl7-fhir-r4-core/Reference.ts"]).toBeDefined();
59-
expect(result.filesGenerated["generated/types/hl7-fhir-r4-core/Coding.ts"]).toBeDefined();
59+
expect(result.filesGenerated.typescript!["generated/types/hl7-fhir-r4-core/Identifier.ts"]).toBeDefined();
60+
expect(result.filesGenerated.typescript!["generated/types/hl7-fhir-r4-core/Reference.ts"]).toBeDefined();
61+
expect(result.filesGenerated.typescript!["generated/types/hl7-fhir-r4-core/Coding.ts"]).toBeDefined();
6062
});
6163
});
6264

@@ -83,7 +85,7 @@ describe("Local Package Folder - Multi-Package Generation", async () => {
8385

8486
it("should generate ExampleTypedBundle profile with type-discriminated slices", () => {
8587
const profileFile =
86-
result.filesGenerated[
88+
result.filesGenerated.typescript![
8789
"generated/types/example-folder-structures/profiles/Bundle_ExampleTypedBundle.ts"
8890
];
8991
expect(profileFile).toBeDefined();
@@ -103,25 +105,25 @@ describe("Local Package Folder - Multi-Package Generation", async () => {
103105
});
104106

105107
it("should generate ExampleNotebook type (promoted logical)", () => {
106-
const notebook = result.filesGenerated["generated/example_folder_structures/example_notebook.py"];
108+
const notebook = result.filesGenerated.python!["generated/example_folder_structures/example_notebook.py"];
107109
expect(notebook).toBeDefined();
108110
expect(notebook).toMatchSnapshot();
109111
});
110112

111113
it("should generate R4 dependency types", () => {
112114
// Python generator resolves R4 dependencies from tree-shaking
113-
expect(result.filesGenerated["generated/hl7_fhir_r4_core/__init__.py"]).toBeDefined();
114-
expect(result.filesGenerated["generated/hl7_fhir_r4_core/domain_resource.py"]).toBeDefined();
115+
expect(result.filesGenerated.python!["generated/hl7_fhir_r4_core/__init__.py"]).toBeDefined();
116+
expect(result.filesGenerated.python!["generated/hl7_fhir_r4_core/domain_resource.py"]).toBeDefined();
115117
});
116118

117119
it("should generate base types for dependencies", () => {
118-
const domainResource = result.filesGenerated["generated/hl7_fhir_r4_core/domain_resource.py"];
120+
const domainResource = result.filesGenerated.python!["generated/hl7_fhir_r4_core/domain_resource.py"];
119121
expect(domainResource).toBeDefined();
120122
expect(domainResource).toMatchSnapshot();
121123
});
122124

123125
it("should generate Patient resource", () => {
124-
const patient = result.filesGenerated["generated/hl7_fhir_r4_core/patient.py"];
126+
const patient = result.filesGenerated.python!["generated/hl7_fhir_r4_core/patient.py"];
125127
expect(patient).toBeDefined();
126128
expect(patient).toMatchSnapshot();
127129
});
@@ -139,31 +141,32 @@ describe("Local Package Folder - Multi-Package Generation", async () => {
139141
});
140142

141143
it("should generate ExampleNotebook type (promoted logical)", () => {
142-
const notebook = result.filesGenerated["generated/types/ExampleFolderStructures/ExampleNotebook.cs"];
144+
const notebook =
145+
result.filesGenerated.csharp!["generated/types/ExampleFolderStructures/ExampleNotebook.cs"];
143146
expect(notebook).toBeDefined();
144147
expect(notebook).toMatchSnapshot();
145148
});
146149

147150
it("should generate R4 dependency types", () => {
148151
// C# generator resolves R4 dependencies from tree-shaking
149-
expect(result.filesGenerated["generated/types/Hl7FhirR4Core/DomainResource.cs"]).toBeDefined();
150-
expect(result.filesGenerated["generated/types/Hl7FhirR4Core/Resource.cs"]).toBeDefined();
152+
expect(result.filesGenerated.csharp!["generated/types/Hl7FhirR4Core/DomainResource.cs"]).toBeDefined();
153+
expect(result.filesGenerated.csharp!["generated/types/Hl7FhirR4Core/Resource.cs"]).toBeDefined();
151154
});
152155

153156
it("should generate DomainResource base class", () => {
154-
const domainResource = result.filesGenerated["generated/types/Hl7FhirR4Core/DomainResource.cs"];
157+
const domainResource = result.filesGenerated.csharp!["generated/types/Hl7FhirR4Core/DomainResource.cs"];
155158
expect(domainResource).toBeDefined();
156159
expect(domainResource).toMatchSnapshot();
157160
});
158161

159162
it("should generate Resource base class", () => {
160-
const resource = result.filesGenerated["generated/types/Hl7FhirR4Core/Resource.cs"];
163+
const resource = result.filesGenerated.csharp!["generated/types/Hl7FhirR4Core/Resource.cs"];
161164
expect(resource).toBeDefined();
162165
expect(resource).toMatchSnapshot();
163166
});
164167

165168
it("should generate Patient resource", () => {
166-
const patient = result.filesGenerated["generated/types/Hl7FhirR4Core/Patient.cs"];
169+
const patient = result.filesGenerated.csharp!["generated/types/Hl7FhirR4Core/Patient.cs"];
167170
expect(patient).toBeDefined();
168171
expect(patient).toMatchSnapshot();
169172
});

test/api/write-generator/multi-package/sql-on-fhir.test.ts

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,24 +32,26 @@ describe("SQL-on-FHIR", async () => {
3232
});
3333

3434
it("should generate ViewDefinition type", () => {
35-
const viewDef = result.filesGenerated["generated/types/org-sql-on-fhir-ig/ViewDefinition.ts"];
35+
const viewDef = result.filesGenerated.typescript!["generated/types/org-sql-on-fhir-ig/ViewDefinition.ts"];
3636
expect(viewDef).toBeDefined();
3737
expect(viewDef).toMatchSnapshot();
3838
});
3939

4040
it("should resolve R5 dependencies (required by SQL-on-FHIR)", () => {
41-
const files = Object.keys(result.filesGenerated);
41+
const files = Object.keys(result.filesGenerated.typescript!);
4242
const r5Files = files.filter((f) => f.includes("hl7-fhir-r5-core"));
4343
expect(r5Files.length).toBe(45);
4444

4545
// Core R5 types should be included
46-
expect(result.filesGenerated["generated/types/hl7-fhir-r5-core/Element.ts"]).toBeDefined();
47-
expect(result.filesGenerated["generated/types/hl7-fhir-r5-core/DomainResource.ts"]).toBeDefined();
46+
expect(result.filesGenerated.typescript!["generated/types/hl7-fhir-r5-core/Element.ts"]).toBeDefined();
47+
expect(
48+
result.filesGenerated.typescript!["generated/types/hl7-fhir-r5-core/DomainResource.ts"],
49+
).toBeDefined();
4850
});
4951

5052
it("should generate package index files", () => {
51-
expect(result.filesGenerated["generated/types/org-sql-on-fhir-ig/index.ts"]).toBeDefined();
52-
expect(result.filesGenerated["generated/types/hl7-fhir-r5-core/index.ts"]).toBeDefined();
53+
expect(result.filesGenerated.typescript!["generated/types/org-sql-on-fhir-ig/index.ts"]).toBeDefined();
54+
expect(result.filesGenerated.typescript!["generated/types/hl7-fhir-r5-core/index.ts"]).toBeDefined();
5355
});
5456
});
5557

@@ -65,19 +67,19 @@ describe("SQL-on-FHIR", async () => {
6567
});
6668

6769
it("should generate ViewDefinition type (promoted logical)", () => {
68-
const viewDef = result.filesGenerated["generated/org_sql_on_fhir_ig/view_definition.py"];
70+
const viewDef = result.filesGenerated.python!["generated/org_sql_on_fhir_ig/view_definition.py"];
6971
expect(viewDef).toBeDefined();
7072
expect(viewDef).toMatchSnapshot();
7173
});
7274

7375
it("should generate R5 dependency package", () => {
7476
// Python generator creates R5 base types for dependencies
75-
expect(result.filesGenerated["generated/hl7_fhir_r5_core/__init__.py"]).toBeDefined();
76-
expect(result.filesGenerated["generated/hl7_fhir_r5_core/domain_resource.py"]).toBeDefined();
77+
expect(result.filesGenerated.python!["generated/hl7_fhir_r5_core/__init__.py"]).toBeDefined();
78+
expect(result.filesGenerated.python!["generated/hl7_fhir_r5_core/domain_resource.py"]).toBeDefined();
7779
});
7880

7981
it("should generate domain_resource for R5", () => {
80-
const domainResource = result.filesGenerated["generated/hl7_fhir_r5_core/domain_resource.py"];
82+
const domainResource = result.filesGenerated.python!["generated/hl7_fhir_r5_core/domain_resource.py"];
8183
expect(domainResource).toBeDefined();
8284
expect(domainResource).toMatchSnapshot();
8385
});
@@ -95,20 +97,20 @@ describe("SQL-on-FHIR", async () => {
9597
});
9698

9799
it("should generate ViewDefinition type (promoted logical)", () => {
98-
const viewDef = result.filesGenerated["generated/types/OrgSqlOnFhirIg/ViewDefinition.cs"];
100+
const viewDef = result.filesGenerated.csharp!["generated/types/OrgSqlOnFhirIg/ViewDefinition.cs"];
99101
expect(viewDef).toBeDefined();
100102
expect(viewDef).toMatchSnapshot();
101103
});
102104

103105
it("should generate R5 dependency namespace", () => {
104106
// C# generator creates R5 types for dependencies
105-
const files = Object.keys(result.filesGenerated);
107+
const files = Object.keys(result.filesGenerated.csharp!);
106108
const r5Files = files.filter((f) => f.includes("Hl7FhirR5Core"));
107109
expect(r5Files.length).toBe(5);
108110
});
109111

110112
it("should generate DomainResource for R5", () => {
111-
const domainResource = result.filesGenerated["generated/types/Hl7FhirR5Core/DomainResource.cs"];
113+
const domainResource = result.filesGenerated.csharp!["generated/types/Hl7FhirR5Core/DomainResource.cs"];
112114
expect(domainResource).toBeDefined();
113115
expect(domainResource).toMatchSnapshot();
114116
});

0 commit comments

Comments
 (0)