refactor: extract application construction and lifecycle

This commit is contained in:
Sameh Khamis committed 2026-09-11 17:02:54 -07:00
1 parent 092f28e301
commit 4d37760314
36 files changed
+1363 -382

No files matched your search

+40
View File
@@ -0,0 +1,40 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import { MapStackController } from '../mapStackController.js';
import {
installRenderGovernor, uninstallRenderGovernor,
holdContinuousRender, governorRequestRender, getRenderGovernorDiagnostics,
} from '../renderGovernor.js';
test('destroy invalidates a pending imagery provider before it can touch the viewer', async () => {
let resolveProvider;
let removed = 0;
const changes = [];
const controller = new MapStackController({}, { onChange: (state) => changes.push(state.status) });
controller._getImageryProvider = () => new Promise((resolve) => { resolveProvider = resolve; });
controller._removeImageryErrorListener = () => { removed++; };
const switching = controller.setStack('osm');
controller.destroy();
resolveProvider({ provider: {} });
await switching;
assert.equal(removed, 1);
assert.deepEqual(changes, ['switching']);
await controller.setStack('osm');
controller.destroy();
assert.equal(removed, 1);
});
test('uninstall only releases the current viewer and makes later render requests inactive', () => {
let renders = 0;
const viewer = { scene: { requestRender: () => { renders++; } } };
installRenderGovernor(viewer);
holdContinuousRender('fixture');
uninstallRenderGovernor({});
assert.equal(getRenderGovernorDiagnostics().installed, true);
uninstallRenderGovernor(viewer);
const before = renders;
governorRequestRender('late');
assert.equal(renders, before);
assert.equal(getRenderGovernorDiagnostics().installed, false);
assert.deepEqual(getRenderGovernorDiagnostics().holds, []);
});