mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 10:24:02 +00:00
npm run changelog consumes changelog.d fragments at release, so a test that reads the fragment would fail with ENOENT afterwards. CURRENT-STATE is permanent.
38 lines
1.5 KiB
JavaScript
38 lines
1.5 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { readFileSync } from 'node:fs';
|
|
import { VOICE_OFF_LAYERS } from '../../voice/layerManifest.js';
|
|
import { ANALYST_LAYERS } from '../../data/analystEngine.js';
|
|
|
|
const read = (path) =>
|
|
readFileSync(new URL(`../../../${path}`, import.meta.url), 'utf8');
|
|
const currentState = read('docs/CURRENT-STATE.md');
|
|
const section = currentState.slice(
|
|
currentState.indexOf('## Prohibited & Restricted Airspace'),
|
|
currentState.indexOf('\n## ', currentState.indexOf('## Prohibited')) + 1,
|
|
);
|
|
const tokens = JSON.parse(read('src/data/layerStateTokenReservations.json'));
|
|
|
|
test('CURRENT-STATE names the reserved share-link token', () => {
|
|
const token = JSON.stringify(tokens).match(
|
|
/\["drone-airspace","([^"]+)"\]/,
|
|
)?.[1];
|
|
assert.ok(token, 'drone-airspace has a reserved token');
|
|
assert.match(section, new RegExp(`share-link token \`${token}\``));
|
|
});
|
|
|
|
test('CURRENT-STATE matches the layer being outside voice and the analyst', () => {
|
|
assert.ok(Object.hasOwn(VOICE_OFF_LAYERS, 'drone-airspace'));
|
|
assert.ok(!Object.hasOwn(ANALYST_LAYERS, 'drone-airspace'));
|
|
assert.doesNotMatch(section, /Voice can toggle/);
|
|
assert.match(section, /Voice is off for this layer for now/);
|
|
const analyst = currentState.match(/Analyst records come on demand[^\n]*/)[0];
|
|
assert.doesNotMatch(analyst, /drone/i);
|
|
});
|
|
|
|
test('CURRENT-STATE states what the layer does not cover', () => {
|
|
assert.match(section, /UAS Facility Map/);
|
|
assert.match(section, /LAANC/);
|
|
assert.match(section, /TFRs/);
|
|
});
|