diff --git a/test/commands/hmset.spec.js b/test/commands/hmset.spec.js index d5cc11e3b8..8846b9e9d7 100644 --- a/test/commands/hmset.spec.js +++ b/test/commands/hmset.spec.js @@ -83,6 +83,24 @@ describe("The 'hmset' method", function () { }); }); + it('allows a key plus array without callback', function (done) { + client.HMSET(hash, [99, 'banana', 'test', 25]); + client.HGETALL(hash, function (err, obj) { + assert.equal(obj['99'], 'banana'); + assert.equal(obj.test, '25'); + return done(err); + }); + }); + + it('allows a key plus array and a callback', function (done) { + client.HMSET(hash, [99, 'banana', 'test', 25], helper.isString('OK')); + client.HGETALL(hash, function (err, obj) { + assert.equal(obj['99'], 'banana'); + assert.equal(obj.test, '25'); + return done(err); + }); + }); + it('handles object-style syntax without callback', function (done) { client.HMSET(hash, {"0123456789": "abcdefghij", "some manner of key": "a type of value"}); client.HGETALL(hash, function (err, obj) { diff --git a/test/commands/keys.spec.js b/test/commands/keys.spec.js index 664ec4e4f3..b7a3660f47 100644 --- a/test/commands/keys.spec.js +++ b/test/commands/keys.spec.js @@ -23,7 +23,7 @@ describe("The 'keys' method", function () { it('returns matching keys', function (done) { client.mset(["test keys 1", "test val 1", "test keys 2", "test val 2"], helper.isString("OK")); - client.KEYS(["test keys*"], function (err, results) { + client.KEYS("test keys*", function (err, results) { assert.strictEqual(2, results.length); assert.ok(~results.indexOf("test keys 1")); assert.ok(~results.indexOf("test keys 2")); diff --git a/test/commands/mget.spec.js b/test/commands/mget.spec.js index 3d506c6d10..082721e386 100644 --- a/test/commands/mget.spec.js +++ b/test/commands/mget.spec.js @@ -42,7 +42,7 @@ describe("The 'mget' method", function () { }); it('handles fetching multiple keys, when some keys do not exist', function (done) { - client.MGET(["mget keys 1", "some random shit", "mget keys 2", "mget keys 3"], function (err, results) { + client.MGET("mget keys 1", ["some random shit", "mget keys 2", "mget keys 3"], function (err, results) { assert.strictEqual(4, results.length); assert.strictEqual("mget val 1", results[0].toString()); assert.strictEqual(null, results[1]); diff --git a/test/commands/mset.spec.js b/test/commands/mset.spec.js index a79d6365b1..476cab5e55 100644 --- a/test/commands/mset.spec.js +++ b/test/commands/mset.spec.js @@ -88,6 +88,12 @@ describe("The 'mset' method", function () { client.get(key, helper.isString(value2)); client.get(key2, helper.isString(value, done)); }); + + it("sets the value correctly with array syntax", function (done) { + client.mset([key, value2, key2, value]); + client.get([key, helper.isString(value2)]); + client.get(key2, helper.isString(value, done)); + }); }); describe("with undefined 'key' and missing 'value' parameter", function () { diff --git a/test/commands/multi.spec.js b/test/commands/multi.spec.js index 4f78abf8ec..403ca02b77 100644 --- a/test/commands/multi.spec.js +++ b/test/commands/multi.spec.js @@ -123,7 +123,7 @@ describe("The 'multi' method", function () { it('handles multiple operations being applied to a set', function (done) { client.sadd("some set", "mem 1"); - client.sadd("some set", "mem 2"); + client.sadd(["some set", "mem 2"]); client.sadd("some set", "mem 3"); client.sadd("some set", "mem 4"); @@ -136,7 +136,7 @@ describe("The 'multi' method", function () { // test nested multi-bulk replies with empty mb elements. client.multi([ - ["smembers", "some set"], + ["smembers", ["some set"]], ["del", "some set"], ["smembers", "some set"] ]) @@ -148,6 +148,40 @@ describe("The 'multi' method", function () { }); }); + it('allows multiple operations to be performed using constructor with all kinds of syntax', function (done) { + var now = Date.now(); + client.multi([ + ["mset", [578, "multibar"], helper.isString('OK')], + [["mset", "multifoo2", "multibar2", "multifoo3", "multibar3"], helper.isString('OK')], + ["hmset", ["multihmset", "multibar", "multibaz"]], + [["hmset", "multihmset2", "multibar2", "multifoo3", "multibar3", "test", helper.isString('OK')]], + ["hmset", ["multihmset", "multibar", "multifoo", helper.isString('OK')]], + ["hmset", [5768, "multibarx", "multifoox"], helper.isString('OK')], + ['hmset', now, {123456789: "abcdefghij", "some manner of key": "a type of value", "otherTypes": 555}], + ['hmset', 'key2', {"0123456789": "abcdefghij", "some manner of key": "a type of value", "otherTypes": 999}, helper.isString('OK')], + ["hmset", "multihmset", ["multibar", "multibaz"]], + ["hmset", "multihmset", ["multibar", "multibaz"], helper.isString('OK')], + ]) + .hmget(now, 123456789, 'otherTypes') + .hmget('key2', ['some manner of key', 'otherTypes']) + .hmget(['multihmset2', 'some manner of key', 'multibar3']) + .mget('multifoo2', ['multifoo3', 'multifoo'], function(err, res) { + assert(res[0], 'multifoo3'); + assert(res[1], 'multifoo'); + }) + .exec(function (err, replies) { + assert.strictEqual(null, err); + assert.equal(replies[10][1], '555'); + assert.equal(replies[11][0], 'a type of value'); + assert.strictEqual(replies[12][0], null); + assert.equal(replies[12][1], 'test'); + assert.equal(replies[13][0], 'multibar2'); + assert.equal(replies[13].length, 3); + assert.equal(replies.length, 14); + return done(); + }); + }); + it('allows multiple operations to be performed using a chaining API', function (done) { client.multi() .mset('some', '10', 'keys', '20') @@ -168,8 +202,8 @@ describe("The 'multi' method", function () { it('allows multiple commands to work the same as normal to be performed using a chaining API', function (done) { client.multi() .mset(['some', '10', 'keys', '20']) - .incr('some') - .incr('keys') + .incr(['some', helper.isNumber(11)]) + .incr(['keys'], helper.isNumber(21)) .mget('some', 'keys') .exec(function (err, replies) { assert.strictEqual(null, err); diff --git a/test/commands/rpush.spec.js b/test/commands/rpush.spec.js new file mode 100644 index 0000000000..5c46c7dc79 --- /dev/null +++ b/test/commands/rpush.spec.js @@ -0,0 +1,37 @@ +'use strict'; + +var config = require("../lib/config"); +var helper = require("../helper"); +var redis = config.redis; +var assert = require('assert'); + +describe("The 'rpush' command", function () { + + helper.allTests(function(parser, ip, args) { + + describe("using " + parser + " and " + ip, function () { + var client; + + beforeEach(function (done) { + client = redis.createClient.apply(redis.createClient, args); + client.once("error", done); + client.once("connect", function () { + client.flushdb(done); + }); + }); + + it('inserts multiple values at a time into a list', function (done) { + client.rpush('test', ['list key', 'should be a list']); + client.lrange('test', 0, -1, function(err, res) { + assert.equal(res[0], 'list key'); + assert.equal(res[1], 'should be a list'); + done(err); + }); + }); + + afterEach(function () { + client.end(); + }); + }); + }); +}); diff --git a/test/commands/sadd.spec.js b/test/commands/sadd.spec.js index 1761cd6cf3..6c92dfe201 100644 --- a/test/commands/sadd.spec.js +++ b/test/commands/sadd.spec.js @@ -44,6 +44,17 @@ describe("The 'sadd' method", function () { }); }); + it('allows multiple values to be added to the set with a different syntax', function (done) { + client.sadd(["set0", "member0", "member1", "member2"], helper.isNumber(3)); + client.smembers("set0", function (err, res) { + assert.strictEqual(res.length, 3); + assert.ok(~res.indexOf("member0")); + assert.ok(~res.indexOf("member1")); + assert.ok(~res.indexOf("member2")); + return done(err); + }); + }); + afterEach(function () { client.end(); }); diff --git a/test/commands/sdiff.spec.js b/test/commands/sdiff.spec.js index 8057bc15af..cb2a97f14b 100644 --- a/test/commands/sdiff.spec.js +++ b/test/commands/sdiff.spec.js @@ -22,11 +22,11 @@ describe("The 'sdiff' method", function () { it('returns set difference', function (done) { client.sadd('foo', 'x', helper.isNumber(1)); - client.sadd('foo', 'a', helper.isNumber(1)); + client.sadd('foo', ['a'], helper.isNumber(1)); client.sadd('foo', 'b', helper.isNumber(1)); - client.sadd('foo', 'c', helper.isNumber(1)); + client.sadd(['foo', 'c'], helper.isNumber(1)); - client.sadd('bar', 'c', helper.isNumber(1)); + client.sadd(['bar', 'c', helper.isNumber(1)]); client.sadd('baz', 'a', helper.isNumber(1)); client.sadd('baz', 'd', helper.isNumber(1)); diff --git a/test/commands/sort.spec.js b/test/commands/sort.spec.js index e5985137de..5d8e5aff8a 100644 --- a/test/commands/sort.spec.js +++ b/test/commands/sort.spec.js @@ -75,6 +75,13 @@ describe("The 'sort' method", function () { }); }); + it("handles sorting with a 'by' pattern and 2 'get' patterns with the array syntax", function (done) { + client.sort(['x', 'by', 'w*', 'asc', 'get', 'o*', 'get', 'p*'], function (err, sorted) { + assert.deepEqual(sorted, ['foo', 'bux', 'bar', 'tux', 'baz', 'lux', 'buz', 'qux']); + return done(err); + }); + }); + it("sorting with a 'by' pattern and 2 'get' patterns and stores results", function (done) { client.sort('x', 'by', 'w*', 'asc', 'get', 'o*', 'get', 'p*', 'store', 'bacon', function (err) { if (err) return done(err); diff --git a/test/commands/srem.spec.js b/test/commands/srem.spec.js index 8afd79afed..d6a64a006e 100644 --- a/test/commands/srem.spec.js +++ b/test/commands/srem.spec.js @@ -41,8 +41,8 @@ describe("The 'srem' method", function () { }); it('handles a value missing from the set of values being removed', function (done) { - client.sadd("set0", ["member0", "member1", "member2"], helper.isNumber(3)); - client.SREM("set0", ["member3", "member4"], helper.isNumber(0)); + client.sadd(["set0", "member0", "member1", "member2"], helper.isNumber(3)); + client.SREM(["set0", "member3", "member4"], helper.isNumber(0)); client.smembers("set0", function (err, res) { assert.strictEqual(res.length, 3); assert.ok(~res.indexOf("member0")); diff --git a/test/commands/type.spec.js b/test/commands/type.spec.js index e4ad527d91..e9ec7b95f3 100644 --- a/test/commands/type.spec.js +++ b/test/commands/type.spec.js @@ -35,12 +35,12 @@ describe("The 'type' method", function () { }); it('reports zset type', function (done) { - client.zadd(["zset key", "10.0", "should be a zset"], helper.isNumber(1)); + client.zadd("zset key", ["10.0", "should be a zset"], helper.isNumber(1)); client.TYPE(["zset key"], helper.isString("zset", done)); }); it('reports hash type', function (done) { - client.hset(["hash key", "hashtest", "should be a hash"], helper.isNumber(1)); + client.hset("hash key", "hashtest", "should be a hash", helper.isNumber(1)); client.TYPE(["hash key"], helper.isString("hash", done)); });