mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-08-02 19:21:34 -07:00
74 lines
1.8 KiB
TypeScript
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',
|
|
]);
|
|
});
|