mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-12-22 08:20:36 +01:00
list tests
This commit is contained in:
@@ -18,7 +18,9 @@ module.exports = function(db, module) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (exists) {
|
if (exists) {
|
||||||
db.collection('objects').update({_key:key}, {$push: {array: {$each: [value], $position: 0}}}, {upsert:true, w:1 }, callback);
|
db.collection('objects').update({_key:key}, {$push: {array: {$each: [value], $position: 0}}}, {upsert:true, w:1 }, function(err, res) {
|
||||||
|
callback(err);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
module.listAppend(key, value, callback);
|
module.listAppend(key, value, callback);
|
||||||
}
|
}
|
||||||
@@ -31,7 +33,9 @@ module.exports = function(db, module) {
|
|||||||
return callback();
|
return callback();
|
||||||
}
|
}
|
||||||
value = helpers.valueToString(value);
|
value = helpers.valueToString(value);
|
||||||
db.collection('objects').update({ _key: key }, { $push: { array: value } }, {upsert:true, w:1}, callback);
|
db.collection('objects').update({ _key: key }, { $push: { array: value } }, {upsert:true, w:1}, function(err, res) {
|
||||||
|
callback(err);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
module.listRemoveLast = function(key, callback) {
|
module.listRemoveLast = function(key, callback) {
|
||||||
@@ -50,6 +54,18 @@ module.exports = function(db, module) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
module.listRemoveAll = function(key, value, callback) {
|
||||||
|
callback = callback || helpers.noop;
|
||||||
|
if (!key) {
|
||||||
|
return callback();
|
||||||
|
}
|
||||||
|
value = helpers.valueToString(value);
|
||||||
|
|
||||||
|
db.collection('objects').update({_key: key }, { $pull: { array: value } }, function(err, res) {
|
||||||
|
callback(err);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
module.listTrim = function(key, start, stop, callback) {
|
module.listTrim = function(key, start, stop, callback) {
|
||||||
callback = callback || helpers.noop;
|
callback = callback || helpers.noop;
|
||||||
if (!key) {
|
if (!key) {
|
||||||
@@ -60,20 +76,12 @@ module.exports = function(db, module) {
|
|||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
db.collection('objects').update({_key: key}, {$set: {array: value}}, callback);
|
db.collection('objects').update({_key: key}, {$set: {array: value}}, function(err, res) {
|
||||||
|
callback(err);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
module.listRemoveAll = function(key, value, callback) {
|
|
||||||
callback = callback || helpers.noop;
|
|
||||||
if (!key) {
|
|
||||||
return callback();
|
|
||||||
}
|
|
||||||
value = helpers.valueToString(value);
|
|
||||||
|
|
||||||
db.collection('objects').update({_key: key }, { $pull: { array: value } }, callback);
|
|
||||||
};
|
|
||||||
|
|
||||||
module.getListRange = function(key, start, stop, callback) {
|
module.getListRange = function(key, start, stop, callback) {
|
||||||
if (!key) {
|
if (!key) {
|
||||||
return callback();
|
return callback();
|
||||||
|
|||||||
@@ -2,11 +2,15 @@
|
|||||||
|
|
||||||
module.exports = function(redisClient, module) {
|
module.exports = function(redisClient, module) {
|
||||||
module.listPrepend = function(key, value, callback) {
|
module.listPrepend = function(key, value, callback) {
|
||||||
redisClient.lpush(key, value, callback);
|
redisClient.lpush(key, value, function(err, res) {
|
||||||
|
callback(err);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
module.listAppend = function(key, value, callback) {
|
module.listAppend = function(key, value, callback) {
|
||||||
redisClient.rpush(key, value, callback);
|
redisClient.rpush(key, value, function(err, res) {
|
||||||
|
callback(err);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
module.listRemoveLast = function(key, callback) {
|
module.listRemoveLast = function(key, callback) {
|
||||||
@@ -14,14 +18,18 @@ module.exports = function(redisClient, module) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
module.listRemoveAll = function(key, value, callback) {
|
module.listRemoveAll = function(key, value, callback) {
|
||||||
redisClient.lrem(key, 0, value, callback);
|
redisClient.lrem(key, 0, value, function(err, res) {
|
||||||
|
callback(err);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
module.listTrim = function(key, start, stop, callback) {
|
||||||
|
redisClient.ltrim(key, start, stop, function(err, res) {
|
||||||
|
callback(err);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
module.getListRange = function(key, start, stop, callback) {
|
module.getListRange = function(key, start, stop, callback) {
|
||||||
redisClient.lrange(key, start, stop, callback);
|
redisClient.lrange(key, start, stop, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
module.listTrim = function(key, start, stop, callback) {
|
|
||||||
redisClient.ltrim(key, start, stop, callback);
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
@@ -11,6 +11,7 @@ describe('Test database', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
require('./database/keys');
|
require('./database/keys');
|
||||||
|
require('./database/list');
|
||||||
|
|
||||||
it('should not throw err', function(done) {
|
it('should not throw err', function(done) {
|
||||||
var objectKey = 'testObj';
|
var objectKey = 'testObj';
|
||||||
@@ -108,49 +109,6 @@ describe('Test database', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not throw err', function(done) {
|
|
||||||
function listAppend(callback) {
|
|
||||||
db.listAppend('myList5', 5, function(err, data) {
|
|
||||||
callback(err, {'listAppend': data});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function listPrepend(callback) {
|
|
||||||
db.listPrepend('myList5', 4, function(err, data) {
|
|
||||||
callback(err, {'listPrepend': data});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function listRemoveLast(callback) {
|
|
||||||
db.listRemoveLast('myList5', function(err, data) {
|
|
||||||
callback(err, {'listRemoveLast': data});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function getListRange(callback) {
|
|
||||||
db.getListRange('myList5', 0, -1, function(err, data) {
|
|
||||||
callback(err, {'getListRange': data});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
var listTasks = [
|
|
||||||
listAppend,
|
|
||||||
listPrepend,
|
|
||||||
getListRange,
|
|
||||||
listRemoveLast,
|
|
||||||
getListRange
|
|
||||||
];
|
|
||||||
|
|
||||||
async.series(listTasks, function(err, results) {
|
|
||||||
assert.equal(err, null, 'error in list methods: ' + err);
|
|
||||||
assert.ok(results);
|
|
||||||
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not throw err', function(done) {
|
it('should not throw err', function(done) {
|
||||||
function setAdd(callback) {
|
function setAdd(callback) {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
var async = require('async'),
|
var async = require('async'),
|
||||||
assert = require('assert'),
|
assert = require('assert'),
|
||||||
|
|||||||
126
tests/database/list.js
Normal file
126
tests/database/list.js
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var async = require('async'),
|
||||||
|
assert = require('assert'),
|
||||||
|
db = require('../mocks/databasemock');
|
||||||
|
|
||||||
|
describe('List methods', function() {
|
||||||
|
|
||||||
|
describe('listAppend()', function() {
|
||||||
|
it('should append to a list', function(done) {
|
||||||
|
db.listAppend('testList', 5, function(err) {
|
||||||
|
assert.equal(err, null, 'db.listAppend error');
|
||||||
|
assert.equal(arguments.length, 1, 'arguments.length error');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('listPrepend()', function() {
|
||||||
|
it('should prepend to a list', function(done) {
|
||||||
|
db.listPrepend('testList2', 3, function(err) {
|
||||||
|
assert.equal(err, null, 'db.listPrepend error');
|
||||||
|
assert.equal(arguments.length, 1, 'arguments.length error');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should prepend 2 more elements to a list', function(done) {
|
||||||
|
async.series([
|
||||||
|
function(next) {
|
||||||
|
db.listPrepend('testList2', 2, next);
|
||||||
|
},
|
||||||
|
function(next) {
|
||||||
|
db.listPrepend('testList2', 1, next);
|
||||||
|
}
|
||||||
|
], function(err) {
|
||||||
|
assert.equal(err, null, 'db.listPrepend error');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('getListRange()', function() {
|
||||||
|
it('should return an empty list', function(done) {
|
||||||
|
db.getListRange('doesnotexist', 0, -1, function(err, list) {
|
||||||
|
assert.equal(err, null, 'db.getListRange error');
|
||||||
|
assert.equal(arguments.length, 2, 'arguments.length error');
|
||||||
|
assert.equal(Array.isArray(list), true, 'list is not an array');
|
||||||
|
assert.equal(list.length, 0, 'list not empty');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return a list with one element', function(done) {
|
||||||
|
db.getListRange('testList', 0, 0, function(err, list) {
|
||||||
|
assert.equal(err, null, 'db.getListRange error');
|
||||||
|
assert.equal(Array.isArray(list), true, 'list is not an array');
|
||||||
|
assert.equal(list[0], 5, 'list does not have value');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return a list with 3 elements 1,2,3', function(done) {
|
||||||
|
db.getListRange('testList2', 0, -1, function(err, list) {
|
||||||
|
assert.equal(err, null, 'db.getListRange error');
|
||||||
|
assert.equal(Array.isArray(list), true, 'list is not an array');
|
||||||
|
assert.equal(list.length, 3, 'list length is not 3');
|
||||||
|
assert.deepEqual(list, ['1', '2', '3'], 'lists not equal');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('listRemoveLast()', function() {
|
||||||
|
it('should remove the last element of list', function(done) {
|
||||||
|
db.listRemoveLast('testList2', function(err, lastElement) {
|
||||||
|
assert.equal(err, null, 'db.listRemoveLast error');
|
||||||
|
assert.equal(arguments.length, 2, 'arguments.length error');
|
||||||
|
assert.equal(lastElement, '3', 'last element not correct');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('listRemoveAll()', function() {
|
||||||
|
it('should remove all the elements of list', function(done) {
|
||||||
|
db.listRemoveAll('testList2', function(err) {
|
||||||
|
assert.equal(err, null, 'db.listRemoveAll error');
|
||||||
|
assert.equal(arguments.length, 1, 'arguments.length error');
|
||||||
|
|
||||||
|
db.getListRange('testList2', function(err, list) {
|
||||||
|
assert.equal(Array.isArray(list), true, 'list is not an array');
|
||||||
|
assert.equal(list.length, 0, 'list is not empty');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('listTrim()', function() {
|
||||||
|
it('should trim list to a certain range', function(done) {
|
||||||
|
var list = ['1', '2', '3', '4', '5'];
|
||||||
|
async.eachSeries(list, function(value, next) {
|
||||||
|
db.listAppend('testList2', value, next);
|
||||||
|
}, function(err) {
|
||||||
|
if (err) {
|
||||||
|
return done(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
db.listTrim('testList2', 0, 2, function(err) {
|
||||||
|
assert.equal(err, null, 'db.listTrim error');
|
||||||
|
assert.equal(arguments.length, 1, 'arguments.length error');
|
||||||
|
db.getListRange('testList2', 0, -1, function(err, list) {
|
||||||
|
assert.equal(list.length, 3, 'list length is not 3');
|
||||||
|
assert.deepEqual(list, ['1', '2', '3'], 'lists not properly trimmed');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
after(function() {
|
||||||
|
db.flushdb();
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user