cq-websocket
Version:
A Node SDK for developing QQ chatbots based on WebSocket, which is depending on CoolQ and CQHTTP API plugin.
39 lines (31 loc) • 1.13 kB
JavaScript
const RECONNECT_ATTEMPTS = 10
const setup = require('../fixture/setup')
const { wsStub, bot, planCount, assertSpies, done } = setup({ reconnectionAttempts: RECONNECT_ATTEMPTS })
const FakeWebSocket = require('../fixture/FakeWebSocket')
const fws = FakeWebSocket.getSeries(Infinity)
wsStub.callsFake(fws)
module.exports = function (t) {
t.plan(planCount() + 2)
const wsTypes = [ '/api', '/event' ]
bot
.on('socket.max_reconnect', function (wsType, attempts) {
wsTypes.splice(wsTypes.indexOf(wsType), 1)
// Assertion
// plus 1 is because "re"-connect means it has already tried to connect once
t.is(attempts, RECONNECT_ATTEMPTS + 1)
if (wsTypes.length === 0) {
const expectedAttempts = (RECONNECT_ATTEMPTS + 1) * 2
assertSpies(t, {
connectCount: 0,
connectingCount: expectedAttempts,
failedCount: expectedAttempts,
errorCount: expectedAttempts,
reconnectingCount: RECONNECT_ATTEMPTS * 2,
reconnectFailedCount: RECONNECT_ATTEMPTS * 2
})
t.end()
done()
}
})
.connect()
}