mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 10:24:02 +00:00
44 lines
1.8 KiB
JavaScript
44 lines
1.8 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { createDirectionsSource } from './source.js';
|
|
|
|
const query = { mode: 'foot', a: { lon: 1, lat: 2 }, b: { lon: 3, lat: 4 } };
|
|
|
|
test('route acquisition uses only the supplied transport and endpoint', async () => {
|
|
const controller = new AbortController();
|
|
const payload = { ok: true, geometry: [[1, 2], [3, 4]] };
|
|
const calls = [];
|
|
const source = createDirectionsSource({
|
|
endpoint: 'https://routes.example/route',
|
|
fetchImpl: async (...args) => { calls.push(args); return Response.json(payload); },
|
|
});
|
|
assert.deepEqual(await source.getRoute(query, { signal: controller.signal }), payload);
|
|
assert.equal(calls.length, 1);
|
|
const [url, init] = calls[0];
|
|
assert.equal(new URL(url).origin, 'https://routes.example');
|
|
assert.equal(new URL(url).searchParams.get('coords'), '1.000000,2.000000;3.000000,4.000000');
|
|
assert.equal(new URL(url).searchParams.get('profile'), 'foot');
|
|
assert.equal(init.signal, controller.signal);
|
|
assert.equal(init.headers.Accept, 'application/json');
|
|
});
|
|
|
|
test('aborting during route parsing discards the result', async () => {
|
|
const controller = new AbortController();
|
|
const source = createDirectionsSource({ fetchImpl: async () => ({
|
|
ok: true, json: async () => { controller.abort(); return { ok: true }; },
|
|
}) });
|
|
await assert.rejects(source.getRoute(query, { signal: controller.signal }), { name: 'AbortError' });
|
|
});
|
|
|
|
test('route failures are surfaced without fallback requests', async () => {
|
|
for (const status of [429, 503]) {
|
|
let calls = 0;
|
|
const source = createDirectionsSource({ fetchImpl: async () => {
|
|
calls++;
|
|
return Response.json({}, { status });
|
|
} });
|
|
await assert.rejects(source.getRoute(query), status === 429 ? /rate limited/ : /HTTP 503/);
|
|
assert.equal(calls, 1);
|
|
}
|
|
});
|