Files
SubMiner/src/main/runtime/macos-modal-focus-handoff.test.ts
T

74 lines
1.8 KiB
TypeScript

import assert from 'node:assert/strict';
import test from 'node:test';
import { restoreMacOSMpvFocusAfterModalClose } from './macos-modal-focus-handoff';
test('restoreMacOSMpvFocusAfterModalClose focuses mpv, refreshes tracker, then updates visibility on macOS', async () => {
const calls: string[] = [];
await restoreMacOSMpvFocusAfterModalClose({
platform: 'darwin',
focusMpv: async () => {
calls.push('focus');
},
getWindowTracker: () => ({
refreshNow: async () => {
calls.push('refresh');
},
}),
updateVisibleOverlayVisibility: () => {
calls.push('visibility');
},
warn: () => {},
});
assert.deepEqual(calls, ['focus', 'refresh', 'visibility']);
});
test('restoreMacOSMpvFocusAfterModalClose skips non-macOS platforms', async () => {
const calls: string[] = [];
await restoreMacOSMpvFocusAfterModalClose({
platform: 'linux',
focusMpv: async () => {
calls.push('focus');
},
getWindowTracker: () => null,
updateVisibleOverlayVisibility: () => {
calls.push('visibility');
},
warn: () => {},
});
assert.deepEqual(calls, []);
});
test('restoreMacOSMpvFocusAfterModalClose still updates visibility when tracker refresh fails', async () => {
const calls: string[] = [];
await restoreMacOSMpvFocusAfterModalClose({
platform: 'darwin',
focusMpv: async () => {
calls.push('focus');
},
getWindowTracker: () => ({
refreshNow: async () => {
calls.push('refresh');
throw new Error('refresh failed');
},
}),
updateVisibleOverlayVisibility: () => {
calls.push('visibility');
},
warn: (message) => {
calls.push(`warn:${message}`);
},
});
assert.deepEqual(calls, [
'focus',
'refresh',
'warn:Failed to refresh macOS mpv focus after modal close',
'visibility',
]);
});