Skip to content

Commit 54d5844

Browse files
authored
Merge pull request #3 from shadowgate15/add-tests
test: added tests
2 parents f7e7cc2 + 0e34d17 commit 54d5844

File tree

3 files changed

+847
-733
lines changed

3 files changed

+847
-733
lines changed

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@
2525
"devDependencies": {
2626
"@commitlint/cli": "^8.1.0",
2727
"@commitlint/config-conventional": "^8.1.0",
28-
"ava": "^2.3.0",
28+
"ava": "^3.10.1",
2929
"codecov": "^3.5.0",
3030
"cross-env": "^5.2.1",
31+
"delay": "^4.4.0",
3132
"eslint": "6.3.0",
3233
"eslint-config-xo-lass": "^1.0.3",
3334
"eslint-plugin-node": "^10.0.0",
@@ -37,6 +38,7 @@
3738
"nyc": "^14.1.1",
3839
"remark-cli": "^7.0.0",
3940
"remark-preset-github": "^0.0.16",
41+
"sinon": "^9.0.2",
4042
"xo": "^0.24.0"
4143
},
4244
"engines": {

test/test.js

Lines changed: 171 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,173 @@
11
const test = require('ava');
2+
const delay = require('delay');
3+
const sinon = require('sinon');
24

3-
test.todo('write tests');
5+
const IORedis = require('ioredis');
6+
const Redis = require('..');
7+
8+
test.beforeEach(t => {
9+
t.context.logger = {
10+
debug: () => {},
11+
error: () => {}
12+
};
13+
});
14+
15+
test('creates Redis', t => {
16+
const redis = new Redis();
17+
t.is(typeof redis, 'object');
18+
});
19+
20+
test('creates Redis with logger', async t => {
21+
t.plan(10);
22+
23+
const { logger } = t.context;
24+
logger.debug = message => {
25+
switch (message) {
26+
case 'redis connection established':
27+
t.true(true);
28+
break;
29+
case 'redis connection ready':
30+
t.true(true);
31+
break;
32+
case 'redis connection closed':
33+
t.true(true);
34+
break;
35+
case 'redis reconnecting':
36+
t.true(true);
37+
break;
38+
case 'redis connection ended':
39+
t.true(true);
40+
break;
41+
case 'redis node connected':
42+
t.true(true);
43+
break;
44+
case 'redis node disconnected':
45+
t.true(true);
46+
break;
47+
default:
48+
}
49+
};
50+
51+
logger.error = message => {
52+
switch (message) {
53+
case 'node error':
54+
t.true(true);
55+
break;
56+
case 'error':
57+
t.true(true);
58+
break;
59+
default:
60+
}
61+
};
62+
63+
const redis = await new Redis({}, logger);
64+
65+
t.is(typeof redis, 'object');
66+
redis.monitor();
67+
await delay(1000);
68+
redis.emit('reconnecting');
69+
redis.emit('+node');
70+
redis.emit('-node');
71+
redis.emit('node error', 'node error');
72+
redis.emit('error', 'error');
73+
redis.disconnect();
74+
await delay(1000);
75+
});
76+
77+
test('creates Redis with monitor', async t => {
78+
t.plan(13);
79+
80+
const { logger } = t.context;
81+
logger.debug = message => {
82+
// console.debug(message);
83+
switch (message) {
84+
case 'redis monitor instance created':
85+
t.true(true);
86+
break;
87+
case 'redis monitor':
88+
t.true(true);
89+
break;
90+
case 'redis connection established':
91+
t.true(true);
92+
break;
93+
case 'redis connection ready':
94+
t.true(true);
95+
break;
96+
case 'redis connection closed':
97+
t.true(true);
98+
break;
99+
case 'redis reconnecting':
100+
t.true(true);
101+
break;
102+
case 'redis connection ended':
103+
t.true(true);
104+
break;
105+
case 'redis node connected':
106+
t.true(true);
107+
break;
108+
case 'redis node disconnected':
109+
t.true(true);
110+
break;
111+
default:
112+
}
113+
};
114+
115+
logger.error = message => {
116+
// console.error(message);
117+
switch (message) {
118+
case 'node error':
119+
t.true(true);
120+
break;
121+
case 'error':
122+
t.true(true);
123+
break;
124+
default:
125+
}
126+
};
127+
128+
const redis = await new Redis({}, logger, true);
129+
130+
t.is(typeof redis, 'object');
131+
await delay(1000);
132+
t.is(redis._monitor.status, 'monitoring');
133+
redis.emit('reconnecting');
134+
redis.emit('+node');
135+
redis.emit('-node');
136+
redis.emit('node error', 'node error');
137+
redis.emit('error', 'error');
138+
redis._monitor.emit('monitor');
139+
redis.disconnect();
140+
await delay(1000);
141+
});
142+
143+
test('getMeta > empty status', t => {
144+
t.plan(1);
145+
146+
const { logger } = t.context;
147+
logger.debug = (...args) => {
148+
// console.debug(args);
149+
if (args[1].status === '[empty]') t.true(true);
150+
};
151+
152+
const redis = new Redis({}, logger);
153+
redis.setStatus(undefined);
154+
redis.emit('connect');
155+
});
156+
157+
test.serial('errors when creating monitor', t => {
158+
t.plan(1);
159+
160+
const { logger } = t.context;
161+
logger.error = message => {
162+
if (message === 'error') t.true(true);
163+
};
164+
165+
const monitor = sinon.stub(IORedis.prototype, 'monitor').returns(() => {});
166+
monitor.yields('error', null);
167+
168+
// eslint-disable-next-line no-unused-vars
169+
const redis = new Redis({}, logger, true);
170+
171+
sinon.assert.called(monitor);
172+
sinon.restore();
173+
});

0 commit comments

Comments
 (0)