import { expect } from 'chai'; import { globalShortcut } from 'electron/main'; import { ifdescribe } from './lib/spec-helpers'; ifdescribe(process.platform !== 'win32')('globalShortcut module', () => { beforeEach(() => { globalShortcut.unregisterAll(); }); it('can register and unregister single accelerators', () => { const accelerator = 'CmdOrCtrl+A+B+C'; expect(globalShortcut.isRegistered(accelerator)).to.be.false('initially registered'); globalShortcut.register(accelerator, () => {}); expect(globalShortcut.isRegistered(accelerator)).to.be.true('registration worked'); globalShortcut.unregister(accelerator); expect(globalShortcut.isRegistered(accelerator)).to.be.false('unregistration worked'); globalShortcut.register(accelerator, () => {}); expect(globalShortcut.isRegistered(accelerator)).to.be.true('reregistration worked'); globalShortcut.unregisterAll(); expect(globalShortcut.isRegistered(accelerator)).to.be.false('re-unregistration worked'); }); it('can register and unregister multiple accelerators', () => { const accelerators = ['CmdOrCtrl+X', 'CmdOrCtrl+Y']; expect(globalShortcut.isRegistered(accelerators[0])).to.be.false('first initially unregistered'); expect(globalShortcut.isRegistered(accelerators[1])).to.be.false('second initially unregistered'); globalShortcut.registerAll(accelerators, () => {}); expect(globalShortcut.isRegistered(accelerators[0])).to.be.true('first registration worked'); expect(globalShortcut.isRegistered(accelerators[1])).to.be.true('second registration worked'); globalShortcut.unregisterAll(); expect(globalShortcut.isRegistered(accelerators[0])).to.be.false('first unregistered'); expect(globalShortcut.isRegistered(accelerators[1])).to.be.false('second unregistered'); }); it('does not crash when registering media keys as global shortcuts', () => { const accelerators = [ 'VolumeUp', 'VolumeDown', 'VolumeMute', 'MediaNextTrack', 'MediaPreviousTrack', 'MediaStop', 'MediaPlayPause' ]; expect(() => { globalShortcut.registerAll(accelerators, () => {}); }).to.not.throw(); globalShortcut.unregisterAll(); }); });