Skip to content

Commit 56ffb85

Browse files
committed
Fix 27 TS errors in resources.spec.ts - Add type assertions
Added type assertions for nested property access on unknown types: - schema.elementType.* properties (15 assertions) - schema.fields[n].* properties (9 assertions) - result.* properties (2 assertions) - parameters.* properties (2 assertions) - geometry.coordinates (3 assertions) All fixes use 'as any' pattern for test code accessing dynamic SWE Common structures where runtime types are verified by tests themselves. Resolves Sam-Bolling/CSAPI-Live-Testing#80
1 parent febec94 commit 56ffb85

1 file changed

Lines changed: 27 additions & 27 deletions

File tree

src/ogc-api/csapi/parsers/resources.spec.ts

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -349,12 +349,12 @@ describe('Resource Parsers', () => {
349349
expect(result.data.properties.name).toBe('Temperature and Humidity');
350350
expect(result.data.properties.schema).toBeDefined();
351351
expect(result.data.properties.schema.type).toBe('DataStream');
352-
expect(result.data.properties.schema.elementType.type).toBe('DataRecord');
353-
expect(result.data.properties.schema.elementType.fields).toHaveLength(2);
354-
expect(result.data.properties.schema.elementType.fields[0].name).toBe('timestamp');
355-
expect(result.data.properties.schema.elementType.fields[0].type).toBe('Time');
356-
expect(result.data.properties.schema.elementType.fields[1].name).toBe('temperature');
357-
expect(result.data.properties.schema.elementType.fields[1].type).toBe('Quantity');
352+
expect((result.data.properties.schema.elementType as any).type).toBe('DataRecord');
353+
expect((result.data.properties.schema.elementType as any).fields).toHaveLength(2);
354+
expect((result.data.properties.schema.elementType as any).fields[0].name).toBe('timestamp');
355+
expect((result.data.properties.schema.elementType as any).fields[0].type).toBe('Time');
356+
expect((result.data.properties.schema.elementType as any).fields[1].name).toBe('temperature');
357+
expect((result.data.properties.schema.elementType as any).fields[1].type).toBe('Quantity');
358358
expect(result.data.properties.encoding).toEqual({ type: 'JSONEncoding' });
359359
expect(result.format.format).toBe('swe');
360360
});
@@ -383,9 +383,9 @@ describe('Resource Parsers', () => {
383383
expect(result.data.type).toBe('Feature');
384384
expect(result.data.properties.schema.type).toBe('DataRecord');
385385
expect(result.data.properties.schema.fields).toHaveLength(1);
386-
expect(result.data.properties.schema.fields[0].name).toBe('value');
387-
expect(result.data.properties.schema.fields[0].type).toBe('Quantity');
388-
expect(result.data.properties.schema.fields[0].uom).toEqual({ code: 'm' });
386+
expect((result.data.properties.schema.fields as any)[0].name).toBe('value');
387+
expect((result.data.properties.schema.fields as any)[0].type).toBe('Quantity');
388+
expect((result.data.properties.schema.fields as any)[0].uom).toEqual({ code: 'm' });
389389
});
390390

391391
it('should handle nested DataRecord in DataStream', () => {
@@ -424,8 +424,8 @@ describe('Resource Parsers', () => {
424424

425425
const result = parser.parse(nestedSchema, { contentType: 'application/swe+json' });
426426

427-
expect(result.data.properties.schema.elementType.fields[0].name).toBe('metadata');
428-
expect(result.data.properties.schema.elementType.fields[0].type).toBe('DataRecord');
427+
expect((result.data.properties.schema.elementType as any).fields[0].name).toBe('metadata');
428+
expect((result.data.properties.schema.elementType as any).fields[0].type).toBe('DataRecord');
429429
});
430430

431431
it('should handle DataArray elementType', () => {
@@ -464,9 +464,9 @@ describe('Resource Parsers', () => {
464464

465465
const result = parser.parse(dataArraySchema, { contentType: 'application/swe+json' });
466466

467-
expect(result.data.properties.schema.elementType.type).toBe('DataArray');
468-
expect(result.data.properties.schema.elementType.elementCount).toBe(100);
469-
expect(result.data.properties.schema.elementType.elementType.type).toBe('Vector');
467+
expect((result.data.properties.schema.elementType as any).type).toBe('DataArray');
468+
expect((result.data.properties.schema.elementType as any).elementCount).toBe(100);
469+
expect((result.data.properties.schema.elementType as any).elementType.type).toBe('Vector');
470470
});
471471

472472
it('should preserve constraints in schema', () => {
@@ -493,7 +493,7 @@ describe('Resource Parsers', () => {
493493

494494
const result = parser.parse(constrainedSchema, { contentType: 'application/swe+json' });
495495

496-
expect(result.data.properties.schema.fields[0].constraint).toEqual({
496+
expect((result.data.properties.schema.fields as any)[0].constraint).toEqual({
497497
intervals: [[-40, 60]],
498498
significantFigures: 2
499499
});
@@ -576,11 +576,11 @@ describe('Resource Parsers', () => {
576576

577577
const result = parser.parse(vectorSchema, { contentType: 'application/swe+json' });
578578

579-
expect(result.data.properties.schema.elementType.type).toBe('Vector');
580-
expect(result.data.properties.schema.elementType.referenceFrame).toBe('http://www.opengis.net/def/crs/EPSG/0/4326');
581-
expect(result.data.properties.schema.elementType.coordinates).toHaveLength(2);
582-
expect(result.data.properties.schema.elementType.coordinates[0].name).toBe('lon');
583-
expect(result.data.properties.schema.elementType.coordinates[1].name).toBe('lat');
579+
expect((result.data.properties.schema.elementType as any).type).toBe('Vector');
580+
expect((result.data.properties.schema.elementType as any).referenceFrame).toBe('http://www.opengis.net/def/crs/EPSG/0/4326');
581+
expect((result.data.properties.schema.elementType as any).coordinates).toHaveLength(2);
582+
expect((result.data.properties.schema.elementType as any).coordinates[0].name).toBe('lon');
583+
expect((result.data.properties.schema.elementType as any).coordinates[1].name).toBe('lat');
584584
});
585585
});
586586
});
@@ -716,7 +716,7 @@ describe('Resource Parsers', () => {
716716

717717
const result = parser.parse(sensorml, { contentType: 'application/sml+json' });
718718
expect(result.data.geometry?.type).toBe('Point');
719-
expect(result.data.geometry?.coordinates).toEqual([10.5, 45.2, 100]);
719+
expect((result.data.geometry as any)?.coordinates).toEqual([10.5, 45.2, 100]);
720720
});
721721

722722
it('should handle GeoJSON LineString geometry', () => {
@@ -810,7 +810,7 @@ describe('Resource Parsers', () => {
810810

811811
const result = parser.parse(sensorml, { contentType: 'application/sml+json' });
812812
expect(result.data.geometry?.type).toBe('Point');
813-
expect(result.data.geometry?.coordinates).toEqual([10.2, 45.5, 150]);
813+
expect((result.data.geometry as any)?.coordinates).toEqual([10.2, 45.5, 150]);
814814
});
815815

816816
it('should convert Pose without height to Point with 0 elevation', () => {
@@ -828,7 +828,7 @@ describe('Resource Parsers', () => {
828828

829829
const result = parser.parse(sensorml, { contentType: 'application/sml+json' });
830830
expect(result.data.geometry?.type).toBe('Point');
831-
expect(result.data.geometry?.coordinates).toEqual([10.2, 45.5, 0]);
831+
expect((result.data.geometry as any)?.coordinates).toEqual([10.2, 45.5, 0]);
832832
});
833833

834834
it('should return undefined for Pose missing lat or lon', () => {
@@ -1052,8 +1052,8 @@ describe('Resource Parsers', () => {
10521052
};
10531053

10541054
const result = parser.parse(complexSWE, { contentType: 'application/swe+json' });
1055-
expect(result.data.result.type).toBe('DataArray');
1056-
expect(result.data.result.elementCount).toBe(3);
1055+
expect((result.data.result as any).type).toBe('DataArray');
1056+
expect((result.data.result as any).elementCount).toBe(3);
10571057
});
10581058
});
10591059

@@ -1133,8 +1133,8 @@ describe('Resource Parsers', () => {
11331133
};
11341134

11351135
const result = parser.parse(complexCommand, { contentType: 'application/swe+json' });
1136-
expect(result.data.parameters.type).toBe('DataRecord');
1137-
expect(result.data.parameters.fields.length).toBe(3);
1136+
expect((result.data.parameters as any).type).toBe('DataRecord');
1137+
expect((result.data.parameters as any).fields.length).toBe(3);
11381138
});
11391139
});
11401140

0 commit comments

Comments
 (0)