fix(recent-imagery): reject absent box edges instead of inventing zero degrees

This commit is contained in:
Rudy Celekli committed 2026-10-14 20:11:19 -04:00
1 parent 0265ad4c19
commit c5ac24b600
4 files changed
+33 -6

No files matched your search

@@ -0,0 +1,16 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import { validateBox, boxCentre } from './model.js';
test('missing imagery edges do not turn into invented zero coordinates', () => {
for (const value of [null, undefined, '', ' ', false, true]) {
const box = { west: value, south: 0, east: 1, north: 1 };
assert.equal(validateBox(box).ok, false);
assert.equal(validateBox(box).reason, 'invalid');
assert.equal(boxCentre(box), null);
}
assert.equal(validateBox({ west: 0, south: 0, east: 1, north: 1 }).ok, true);
assert.equal(
validateBox({ west: '0', south: '0', east: '1', north: '1' }).ok,
true,
);
});
+11 -6
View File
@@ -77,12 +77,17 @@ const pad2 = (value) => String(value).padStart(2, '0');
*/
function normalizeBox(box) {
if (!box || typeof box !== 'object') return null;
const [west, south, east, north] = [
box.west,
box.south,
box.east,
box.north,
].map(Number);
const edges = [box.west, box.south, box.east, box.north];
if (
edges.some(
(value) =>
value == null ||
typeof value === 'boolean' ||
(typeof value === 'string' && !value.trim()),
)
)
return null;
const [west, south, east, north] = edges.map(Number);
if (![west, south, east, north].every(Number.isFinite)) return null;
return {
west,