mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 10:24:02 +00:00
fix: validate feature services before allocating scene owners
This commit is contained in:
1 parent
bf1d50f29b
commit
fa2f839cbd
2 files changed
+27
-6
No files matched your search
@@ -1,3 +1,4 @@
|
||||
import { requireFeatureSource } from '../sources/featureSource.js';
|
||||
import { createOverpassFeatureSource } from '../sources/overpassFeatures.js';
|
||||
import { createSurfaceServices } from './surfaceServices.js';
|
||||
import { createAnnotationResolver } from '../annotations/resolver.js';
|
||||
@@ -14,17 +15,18 @@ export function createApplicationOperations({ requests, signal, eventTarget }) {
|
||||
if (typeof requests?.[name]?.[method] !== 'function')
|
||||
throw new TypeError(`Missing application request service: ${name}`);
|
||||
}
|
||||
const features = requireFeatureSource(
|
||||
requests.features ??
|
||||
createOverpassFeatureSource({
|
||||
boundarySource: requests.boundaries,
|
||||
signal,
|
||||
}),
|
||||
);
|
||||
const surface = createSurfaceServices({
|
||||
terrainSource: requests.terrain,
|
||||
signal,
|
||||
eventTarget,
|
||||
});
|
||||
const features =
|
||||
requests.features ??
|
||||
createOverpassFeatureSource({
|
||||
boundarySource: requests.boundaries,
|
||||
signal,
|
||||
});
|
||||
const annotationResolver = createAnnotationResolver({
|
||||
featureSource: features,
|
||||
signal,
|
||||
|
||||
@@ -163,3 +163,22 @@ test('annotation lookup and cached outlines use the supplied source independentl
|
||||
{ name: 'AbortError' },
|
||||
);
|
||||
});
|
||||
|
||||
test('invalid feature adapters fail before surface listeners are installed', () => {
|
||||
let installed = 0;
|
||||
assert.throws(
|
||||
() =>
|
||||
createApplicationOperations({
|
||||
signal: new AbortController().signal,
|
||||
requests: { ...requests({ getHeights: async () => [] }), features: {} },
|
||||
eventTarget: {
|
||||
addEventListener() {
|
||||
installed++;
|
||||
},
|
||||
removeEventListener() {},
|
||||
},
|
||||
}),
|
||||
/Missing feature operation/,
|
||||
);
|
||||
assert.equal(installed, 0);
|
||||
});
|
||||
Reference in new issue
Block a user