UNPKG

cq-websocket

Version:

A Node SDK for developing QQ chatbots based on WebSocket, which is depending on CoolQ and CQHTTP API plugin.

63 lines (47 loc) 1.5 kB
const CQWebsocket = require('../..') const { test } = require('ava') const { spy, stub } = require('sinon') test('#on(): valid event', function (t) { t.plan(3) const _spy = spy() const bot = new CQWebsocket() .on('message.private', _spy) const queue = bot._eventBus._getHandlerQueue('message.private') t.true(Array.isArray(queue)) t.is(queue.length, 1) bot._eventBus.emit('message.private') t.true(_spy.calledOnce) }) test('#on(): invalid event', function (t) { t.plan(2) const _spy = spy() const bot = new CQWebsocket() .on('invalid.event', _spy) const queue = bot._eventBus._getHandlerQueue('invalid.event') t.false(Array.isArray(queue)) bot._eventBus.emit('invalid.event') t.true(_spy.notCalled) }) test('#on(): socket.error', async function (t) { t.plan(7) const bot = new CQWebsocket() const queue = bot._eventBus._getHandlerQueue('socket.error') t.true(Array.isArray(queue)) t.is(queue.length, 1) // disable warning message stub(console, 'error') try { await bot._eventBus.emit('socket.error', 'fake-sock', new Error('Fake socket error')) } catch (err) { t.true(err instanceof Error) t.is(err.which, 'fake-sock') } console.error.restore() const _defErrorHandler = queue[0] const _spy = spy() bot.on('socket.error', _spy) t.is(queue.length, 1) t.not(queue[0], _defErrorHandler) bot._eventBus.emit('socket.error', 'fake-sock', new Error('Fake socket error')) t.true(_spy.calledOnce) })