mirror of
https://github.com/koel/koel
synced 2024-11-28 15:00:42 +00:00
57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import UnitTestCase from '@/__tests__/UnitTestCase'
|
|
import { expect, it, vi } from 'vitest'
|
|
import { eventBus } from './eventBus'
|
|
|
|
new class extends UnitTestCase {
|
|
protected beforeEach () {
|
|
super.beforeEach(() => (eventBus.all = new Map()))
|
|
}
|
|
|
|
protected test () {
|
|
it('listens on a single event', () => {
|
|
const mock = vi.fn()
|
|
eventBus.on('KOEL_READY', mock)
|
|
|
|
eventBus.emit('KOEL_READY')
|
|
|
|
expect(mock).toHaveBeenCalledOnce()
|
|
})
|
|
|
|
it('listens with parameters', () => {
|
|
const mock = vi.fn()
|
|
eventBus.on('KOEL_READY', mock)
|
|
|
|
eventBus.emit('KOEL_READY', 'foo', 'bar')
|
|
|
|
expect(mock).toHaveBeenNthCalledWith(1, 'foo', 'bar')
|
|
})
|
|
|
|
it('registers multiple listeners at once', () => {
|
|
const mock1 = vi.fn()
|
|
const mock2 = vi.fn()
|
|
|
|
eventBus.on({
|
|
KOEL_READY: mock1,
|
|
MODAL_SHOW_ABOUT_KOEL: mock2
|
|
})
|
|
|
|
eventBus.emit('KOEL_READY')
|
|
expect(mock1).toHaveBeenCalledOnce()
|
|
|
|
eventBus.emit('MODAL_SHOW_ABOUT_KOEL')
|
|
expect(mock2).toHaveBeenCalledOnce()
|
|
})
|
|
|
|
it('queue up listeners on same event', () => {
|
|
const mock1 = vi.fn()
|
|
const mock2 = vi.fn()
|
|
eventBus.on('KOEL_READY', mock1)
|
|
eventBus.on('KOEL_READY', mock2)
|
|
|
|
eventBus.emit('KOEL_READY')
|
|
|
|
expect(mock1).toHaveBeenCalledOnce()
|
|
expect(mock2).toHaveBeenCalledOnce()
|
|
})
|
|
}
|
|
}
|