Files
gods-eye-view/src/testSupport/readShellSource.mjs
T

58 lines
1.7 KiB
JavaScript

import { ShellFacade } from '../ui/shellFacade.js';
import { AircraftDisplay } from '../ui/aircraftDisplay.js';
import { LayerBindings } from '../ui/layerBindings.js';
import { DisplayBindings } from '../ui/displayBindings.js';
import { readFileSync } from 'node:fs';
import { CockpitCoordinator } from '../ui/cockpitCoordinator.js';
import { LocationNavigation } from '../ui/locationNavigation.js';
import { StyleManager } from '../ui/applicationShell.js';
import { NavigationController } from '../ui/navigationController.js';
import { ShareRestoration } from '../ui/shareRestoration.js';
import { VisualSettings } from '../ui/visualSettings.js';
import { PanelChrome } from '../ui/panelChrome.js';
/** Read the state owners as well as the compatibility/composition facade. */
export function readShellSource() {
return [
'locationNavigation',
'cockpitCoordinator',
'navigationController',
'shareRestoration',
'visualSettings',
'panelChrome',
'aircraftDisplay',
'layerBindings',
'displayBindings',
'shellFacade',
'applicationShell',
]
.map((name) =>
readFileSync(new URL(`../ui/${name}.js`, import.meta.url), 'utf8'),
)
.join('\n');
}
/** Select the implementation owner instead of testing a forwarding facade. */
export function shellMethod(name) {
for (const owner of [
NavigationController,
ShareRestoration,
VisualSettings,
PanelChrome,
LocationNavigation,
CockpitCoordinator,
AircraftDisplay,
LayerBindings,
DisplayBindings,
StyleManager,
ShellFacade,
]) {
const method = Object.getOwnPropertyDescriptor(
owner.prototype,
name,
)?.value;
if (typeof method === 'function') return method;
}
return null;
}