Skip to content

Commit bd2c0c5

Browse files
committed
Removed last dependency (geojson) and added p4 meta files
1 parent a6aa4f6 commit bd2c0c5

12 files changed

Lines changed: 1599 additions & 11 deletions

File tree

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
import { describe, expect, test } from 'vitest';
2+
import { documentation, properties, resources } from '../../src/presentation-4/meta';
3+
4+
describe('presentation-4 meta generation', () => {
5+
test('contains required class anchors', () => {
6+
const requiredClasses = [
7+
'Collection',
8+
'Manifest',
9+
'Timeline',
10+
'Canvas',
11+
'Scene',
12+
'Annotation',
13+
'AnnotationPage',
14+
'AnnotationCollection',
15+
'SpecificResource',
16+
'Range',
17+
'Agent',
18+
'Service',
19+
'Quantity',
20+
'ImageApiSelector',
21+
'PointSelector',
22+
] as const;
23+
24+
for (const className of requiredClasses) {
25+
const def = documentation.definedTypes[className];
26+
expect(def, `missing class ${className}`).toBeDefined();
27+
if (!def) {
28+
continue;
29+
}
30+
expect(def.link).toBe(`${documentation.root}#${className}`);
31+
expect(def.summary.length).toBeGreaterThan(0);
32+
}
33+
});
34+
35+
test('contains required property anchors', () => {
36+
const requiredProperties = [
37+
'id',
38+
'type',
39+
'label',
40+
'items',
41+
'annotations',
42+
'metadata',
43+
'summary',
44+
'requiredStatement',
45+
'rights',
46+
'provider',
47+
'thumbnail',
48+
'start',
49+
'structures',
50+
'behavior',
51+
'viewingDirection',
52+
'timeMode',
53+
'body',
54+
'target',
55+
'selector',
56+
'source',
57+
'service',
58+
'services',
59+
] as const;
60+
61+
for (const property of requiredProperties) {
62+
const def = documentation.properties[property];
63+
expect(def, `missing property ${property}`).toBeDefined();
64+
if (!def) {
65+
continue;
66+
}
67+
expect(def.link).toBe(`${documentation.root}#${property}`);
68+
expect(def.summary.length).toBeGreaterThan(0);
69+
}
70+
});
71+
72+
test('resource groups and property categories are deterministic', () => {
73+
const sortedResources = [...resources.all].sort((a, b) => a.localeCompare(b));
74+
expect(resources.all).toEqual(sortedResources);
75+
76+
const allGroupedResources = Object.values(resources.groups).flat();
77+
expect(new Set(allGroupedResources).size).toBe(resources.all.length);
78+
79+
const sortedProperties = [...properties.all].sort((a, b) => a.localeCompare(b));
80+
expect(properties.all).toEqual(sortedProperties);
81+
82+
const allCategorizedProperties = Object.values(properties.categories).flat();
83+
expect(new Set(allCategorizedProperties).size).toBe(properties.all.length);
84+
});
85+
});

package.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,16 +162,13 @@
162162
"dev": "tsdown --watch",
163163
"typecheck": "tsc --noEmit",
164164
"test": "vitest",
165+
"test:types": "vitest run --typecheck --typecheck.only",
165166
"update-cookbook-v4": "node scripts/update-cookbook-v4.mjs",
166167
"prepack": "tsdown && tsdown --config tsdown.umd.ts",
167168
"lint": "publint"
168169
},
169-
"dependencies": {
170-
"@types/geojson": "^7946.0.10"
171-
},
172170
"devDependencies": {
173171
"@types/node": "^18",
174-
"@hyperion-framework/validator": "^1.1.0",
175172
"@happy-dom/global-registrator": "^16.3.0",
176173
"prettier": "^3.2.5",
177174
"tslib": "^2.6.2",

0 commit comments

Comments
 (0)