Skip to content

Commit a0c92b0

Browse files
author
Ruben Bridgewater
committed
Add a lot more tests to indicate that the everything is consistent
Add a test for #390 More special cases
1 parent c522ca1 commit a0c92b0

File tree

11 files changed

+126
-13
lines changed

11 files changed

+126
-13
lines changed

test/commands/hmset.spec.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,24 @@ describe("The 'hmset' method", function () {
8383
});
8484
});
8585

86+
it('allows a key plus array without callback', function (done) {
87+
client.HMSET(hash, [99, 'banana', 'test', 25]);
88+
client.HGETALL(hash, function (err, obj) {
89+
assert.equal(obj['99'], 'banana');
90+
assert.equal(obj.test, '25');
91+
return done(err);
92+
});
93+
});
94+
95+
it('allows a key plus array and a callback', function (done) {
96+
client.HMSET(hash, [99, 'banana', 'test', 25], helper.isString('OK'));
97+
client.HGETALL(hash, function (err, obj) {
98+
assert.equal(obj['99'], 'banana');
99+
assert.equal(obj.test, '25');
100+
return done(err);
101+
});
102+
});
103+
86104
it('handles object-style syntax without callback', function (done) {
87105
client.HMSET(hash, {"0123456789": "abcdefghij", "some manner of key": "a type of value"});
88106
client.HGETALL(hash, function (err, obj) {

test/commands/keys.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ describe("The 'keys' method", function () {
2323

2424
it('returns matching keys', function (done) {
2525
client.mset(["test keys 1", "test val 1", "test keys 2", "test val 2"], helper.isString("OK"));
26-
client.KEYS(["test keys*"], function (err, results) {
26+
client.KEYS("test keys*", function (err, results) {
2727
assert.strictEqual(2, results.length);
2828
assert.ok(~results.indexOf("test keys 1"));
2929
assert.ok(~results.indexOf("test keys 2"));

test/commands/mget.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ describe("The 'mget' method", function () {
4242
});
4343

4444
it('handles fetching multiple keys, when some keys do not exist', function (done) {
45-
client.MGET(["mget keys 1", "some random shit", "mget keys 2", "mget keys 3"], function (err, results) {
45+
client.MGET("mget keys 1", ["some random shit", "mget keys 2", "mget keys 3"], function (err, results) {
4646
assert.strictEqual(4, results.length);
4747
assert.strictEqual("mget val 1", results[0].toString());
4848
assert.strictEqual(null, results[1]);

test/commands/mset.spec.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,12 @@ describe("The 'mset' method", function () {
8888
client.get(key, helper.isString(value2));
8989
client.get(key2, helper.isString(value, done));
9090
});
91+
92+
it("sets the value correctly with array syntax", function (done) {
93+
client.mset([key, value2, key2, value]);
94+
client.get([key, helper.isString(value2)]);
95+
client.get(key2, helper.isString(value, done));
96+
});
9197
});
9298

9399
describe("with undefined 'key' and missing 'value' parameter", function () {

test/commands/multi.spec.js

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ describe("The 'multi' method", function () {
123123

124124
it('handles multiple operations being applied to a set', function (done) {
125125
client.sadd("some set", "mem 1");
126-
client.sadd("some set", "mem 2");
126+
client.sadd(["some set", "mem 2"]);
127127
client.sadd("some set", "mem 3");
128128
client.sadd("some set", "mem 4");
129129

@@ -136,7 +136,7 @@ describe("The 'multi' method", function () {
136136

137137
// test nested multi-bulk replies with empty mb elements.
138138
client.multi([
139-
["smembers", "some set"],
139+
["smembers", ["some set"]],
140140
["del", "some set"],
141141
["smembers", "some set"]
142142
])
@@ -148,6 +148,40 @@ describe("The 'multi' method", function () {
148148
});
149149
});
150150

151+
it('allows multiple operations to be performed using constructor with all kinds of syntax', function (done) {
152+
var now = Date.now();
153+
client.multi([
154+
["mset", [578, "multibar"], helper.isString('OK')],
155+
[["mset", "multifoo2", "multibar2", "multifoo3", "multibar3"], helper.isString('OK')],
156+
["hmset", ["multihmset", "multibar", "multibaz"]],
157+
[["hmset", "multihmset2", "multibar2", "multifoo3", "multibar3", "test", helper.isString('OK')]],
158+
["hmset", ["multihmset", "multibar", "multifoo", helper.isString('OK')]],
159+
["hmset", [5768, "multibarx", "multifoox"], helper.isString('OK')],
160+
['hmset', now, {123456789: "abcdefghij", "some manner of key": "a type of value", "otherTypes": 555}],
161+
['hmset', 'key2', {"0123456789": "abcdefghij", "some manner of key": "a type of value", "otherTypes": 999}, helper.isString('OK')],
162+
["hmset", "multihmset", ["multibar", "multibaz"]],
163+
["hmset", "multihmset", ["multibar", "multibaz"], helper.isString('OK')],
164+
])
165+
.hmget(now, 123456789, 'otherTypes')
166+
.hmget('key2', ['some manner of key', 'otherTypes'])
167+
.hmget(['multihmset2', 'some manner of key', 'multibar3'])
168+
.mget('multifoo2', ['multifoo3', 'multifoo'], function(err, res) {
169+
assert(res[0], 'multifoo3');
170+
assert(res[1], 'multifoo');
171+
})
172+
.exec(function (err, replies) {
173+
assert.strictEqual(null, err);
174+
assert.equal(replies[10][1], '555');
175+
assert.equal(replies[11][0], 'a type of value');
176+
assert.strictEqual(replies[12][0], null);
177+
assert.equal(replies[12][1], 'test');
178+
assert.equal(replies[13][0], 'multibar2');
179+
assert.equal(replies[13].length, 3);
180+
assert.equal(replies.length, 14);
181+
return done();
182+
});
183+
});
184+
151185
it('allows multiple operations to be performed using a chaining API', function (done) {
152186
client.multi()
153187
.mset('some', '10', 'keys', '20')
@@ -168,8 +202,8 @@ describe("The 'multi' method", function () {
168202
it('allows multiple commands to work the same as normal to be performed using a chaining API', function (done) {
169203
client.multi()
170204
.mset(['some', '10', 'keys', '20'])
171-
.incr('some')
172-
.incr('keys')
205+
.incr(['some', helper.isNumber(11)])
206+
.incr(['keys'], helper.isNumber(21))
173207
.mget('some', 'keys')
174208
.exec(function (err, replies) {
175209
assert.strictEqual(null, err);

test/commands/rpush.spec.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
'use strict';
2+
3+
var config = require("../lib/config");
4+
var helper = require("../helper");
5+
var redis = config.redis;
6+
var assert = require('assert');
7+
8+
describe("The 'rpush' command", function () {
9+
10+
helper.allTests(function(parser, ip, args) {
11+
12+
describe("using " + parser + " and " + ip, function () {
13+
var client;
14+
15+
beforeEach(function (done) {
16+
client = redis.createClient.apply(redis.createClient, args);
17+
client.once("error", done);
18+
client.once("connect", function () {
19+
client.flushdb(done);
20+
});
21+
});
22+
23+
it('inserts multiple values at a time into a list', function (done) {
24+
client.rpush('test', ['list key', 'should be a list']);
25+
client.lrange('test', 0, -1, function(err, res) {
26+
assert.equal(res[0], 'list key');
27+
assert.equal(res[1], 'should be a list');
28+
done(err);
29+
});
30+
});
31+
32+
afterEach(function () {
33+
client.end();
34+
});
35+
});
36+
});
37+
});

test/commands/sadd.spec.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,17 @@ describe("The 'sadd' method", function () {
4444
});
4545
});
4646

47+
it('allows multiple values to be added to the set with a different syntax', function (done) {
48+
client.sadd(["set0", "member0", "member1", "member2"], helper.isNumber(3));
49+
client.smembers("set0", function (err, res) {
50+
assert.strictEqual(res.length, 3);
51+
assert.ok(~res.indexOf("member0"));
52+
assert.ok(~res.indexOf("member1"));
53+
assert.ok(~res.indexOf("member2"));
54+
return done(err);
55+
});
56+
});
57+
4758
afterEach(function () {
4859
client.end();
4960
});

test/commands/sdiff.spec.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ describe("The 'sdiff' method", function () {
2222

2323
it('returns set difference', function (done) {
2424
client.sadd('foo', 'x', helper.isNumber(1));
25-
client.sadd('foo', 'a', helper.isNumber(1));
25+
client.sadd('foo', ['a'], helper.isNumber(1));
2626
client.sadd('foo', 'b', helper.isNumber(1));
27-
client.sadd('foo', 'c', helper.isNumber(1));
27+
client.sadd(['foo', 'c'], helper.isNumber(1));
2828

29-
client.sadd('bar', 'c', helper.isNumber(1));
29+
client.sadd(['bar', 'c', helper.isNumber(1)]);
3030

3131
client.sadd('baz', 'a', helper.isNumber(1));
3232
client.sadd('baz', 'd', helper.isNumber(1));

test/commands/sort.spec.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,13 @@ describe("The 'sort' method", function () {
7575
});
7676
});
7777

78+
it("handles sorting with a 'by' pattern and 2 'get' patterns with the array syntax", function (done) {
79+
client.sort(['x', 'by', 'w*', 'asc', 'get', 'o*', 'get', 'p*'], function (err, sorted) {
80+
assert.deepEqual(sorted, ['foo', 'bux', 'bar', 'tux', 'baz', 'lux', 'buz', 'qux']);
81+
return done(err);
82+
});
83+
});
84+
7885
it("sorting with a 'by' pattern and 2 'get' patterns and stores results", function (done) {
7986
client.sort('x', 'by', 'w*', 'asc', 'get', 'o*', 'get', 'p*', 'store', 'bacon', function (err) {
8087
if (err) return done(err);

test/commands/srem.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ describe("The 'srem' method", function () {
4141
});
4242

4343
it('handles a value missing from the set of values being removed', function (done) {
44-
client.sadd("set0", ["member0", "member1", "member2"], helper.isNumber(3));
45-
client.SREM("set0", ["member3", "member4"], helper.isNumber(0));
44+
client.sadd(["set0", "member0", "member1", "member2"], helper.isNumber(3));
45+
client.SREM(["set0", "member3", "member4"], helper.isNumber(0));
4646
client.smembers("set0", function (err, res) {
4747
assert.strictEqual(res.length, 3);
4848
assert.ok(~res.indexOf("member0"));

0 commit comments

Comments
 (0)