mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 10:24:02 +00:00
The Natural Earth and neighborhood packs were loaded with a JSON-attributed
import(). The Vite dev server answers that request with a JavaScript module,
which the browser rejects, so every analyst region scope failed and fell
through to a geocode lookup that could take 12-28 s.
- src/data/bundledJson.js fetches the pack from a new URL(..., import.meta.url)
asset in the browser; under Node the caller's attributed import runs.
- resolveRegionRingForQuery caps the geocode + admin-boundary rung at 3 s and
returns { error: 'region-timeout' }; the lookup keeps running and fills the
cache. The analyst query reports it as code 'region-timeout'. The Nepal
locator opts out of the budget.
- Unit tests for the loader, the timeout and the analyst error; the behavior
harness checks the Gulf of Mexico scope and retries Texas on region-timeout.
Co-authored-by: Bilawal Sidhu <[email protected]>
37 lines
1.5 KiB
JavaScript
37 lines
1.5 KiB
JavaScript
import { test } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { loadBundledJson } from './bundledJson.js';
|
|
|
|
const MARINE = new URL('./local_data/natural_earth/marine.json', import.meta.url);
|
|
const importMarine = () =>
|
|
import('./local_data/natural_earth/marine.json', { with: { type: 'json' } });
|
|
|
|
test('bundled JSON: a file URL uses the JSON import under Node', async (t) => {
|
|
const fetchMock = t.mock.method(globalThis, 'fetch');
|
|
const pack = await loadBundledJson(MARINE, importMarine);
|
|
assert.ok(pack.features.some((ft) => ft.name === 'Gulf of Mexico'));
|
|
assert.equal(fetchMock.mock.callCount(), 0);
|
|
});
|
|
|
|
test('bundled JSON: a served URL is fetched as plain JSON', async (t) => {
|
|
const requests = [];
|
|
t.mock.method(globalThis, 'fetch', async (url) => {
|
|
requests.push(String(url));
|
|
return new Response('{"features":[]}', {
|
|
headers: { 'content-type': 'application/json' },
|
|
});
|
|
});
|
|
const url = new URL('http://localhost/src/data/local_data/natural_earth/marine.json');
|
|
const importJson = () => assert.fail('the browser path must not import JSON');
|
|
assert.deepEqual(await loadBundledJson(url, importJson), { features: [] });
|
|
assert.deepEqual(requests, [url.href]);
|
|
});
|
|
|
|
test('bundled JSON: an HTTP error rejects so the retryable loader can retry', async (t) => {
|
|
t.mock.method(globalThis, 'fetch', async () => new Response('', { status: 404 }));
|
|
await assert.rejects(
|
|
loadBundledJson(new URL('http://localhost/missing.json'), importMarine),
|
|
/HTTP 404/,
|
|
);
|
|
});
|