import { expect } from 'chai'
import { globalShortcut } from 'electron'

describe('globalShortcut module', () => {
  before(function () {
    if (isCI && process.platform === 'win32') {
      this.skip()
    }
  })

  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')
  })
})
