1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-10 11:43:01 +03:00
Files
node-redis/packages/client/lib/client/socket.spec.ts
Leibale Eidelman e6de453fdd fix socket error handlers (#2092)
* fix socket error handlers, reset parser on error

* fix #2080 - reset pubSubState on socket error

* fix pubsub

* fix "RedisSocketInitiator"
2022-04-25 05:47:51 -04:00

42 lines
1.2 KiB
TypeScript

import { strict as assert } from 'assert';
import { SinonFakeTimers, useFakeTimers, spy } from 'sinon';
import RedisSocket from './socket';
describe('Socket', () => {
describe('reconnectStrategy', () => {
let clock: SinonFakeTimers;
beforeEach(() => clock = useFakeTimers());
afterEach(() => clock.restore());
it('custom strategy', () => {
const reconnectStrategy = spy((retries: number): number | Error => {
assert.equal(retries + 1, reconnectStrategy.callCount);
if (retries === 50) {
return Error('50');
}
const time = retries * 2;
queueMicrotask(() => clock.tick(time));
return time;
});
const socket = new RedisSocket(
() => Promise.resolve(),
{
host: 'error',
reconnectStrategy
}
);
socket.on('error', () => {
// ignore errors
});
return assert.rejects(socket.connect(), {
message: '50'
});
});
});
});