Files
NodeBB/test/database/keys.js

254 lines
6.1 KiB
JavaScript
Raw Normal View History

2014-12-29 16:20:35 -05:00
'use strict';
2014-12-25 01:53:28 -05:00
2017-02-17 20:20:42 -07:00
var async = require('async');
var assert = require('assert');
var db = require('../mocks/databasemock');
2014-12-25 01:53:28 -05:00
describe('Key methods', function () {
beforeEach(function (done) {
2015-06-04 17:14:22 -04:00
db.set('testKey', 'testValue', done);
});
2014-12-25 01:53:28 -05:00
it('should set a key without error', function (done) {
db.set('testKey', 'testValue', function (err) {
assert.ifError(err);
assert(arguments.length < 2);
2014-12-25 01:53:28 -05:00
done();
});
});
it('should get a key without error', function (done) {
db.get('testKey', function (err, value) {
assert.ifError(err);
2015-01-15 14:36:03 -05:00
assert.equal(arguments.length, 2);
assert.strictEqual(value, 'testValue');
2014-12-25 01:53:28 -05:00
done();
});
});
it('should return true if key exist', function (done) {
db.exists('testKey', function (err, exists) {
assert.ifError(err);
2015-01-15 14:36:03 -05:00
assert.equal(arguments.length, 2);
assert.strictEqual(exists, true);
done();
});
});
it('should return false if key does not exist', function (done) {
db.exists('doesnotexist', function (err, exists) {
assert.ifError(err);
2015-01-15 14:36:03 -05:00
assert.equal(arguments.length, 2);
assert.strictEqual(exists, false);
2014-12-25 01:53:28 -05:00
done();
});
});
it('should delete a key without error', function (done) {
db.delete('testKey', function (err) {
assert.ifError(err);
assert(arguments.length < 2);
2014-12-25 01:53:28 -05:00
db.get('testKey', function (err, value) {
assert.ifError(err);
2015-01-15 14:36:03 -05:00
assert.equal(false, !!value);
2014-12-25 01:53:28 -05:00
done();
});
});
});
it('should return false if key was deleted', function (done) {
db.delete('testKey', function (err) {
assert.ifError(err);
assert(arguments.length < 2);
db.exists('testKey', function (err, exists) {
assert.ifError(err);
2015-06-04 17:14:22 -04:00
assert.strictEqual(exists, false);
done();
});
2014-12-25 01:53:28 -05:00
});
});
it('should delete all keys passed in', function (done) {
2014-12-25 01:53:28 -05:00
async.parallel([
function (next) {
2014-12-25 01:53:28 -05:00
db.set('key1', 'value1', next);
},
function (next) {
2014-12-25 01:53:28 -05:00
db.set('key2', 'value2', next);
2017-02-17 19:31:21 -07:00
},
], function (err) {
2014-12-25 01:53:28 -05:00
if (err) {
return done(err);
}
db.deleteAll(['key1', 'key2'], function (err) {
assert.ifError(err);
2015-01-15 14:36:03 -05:00
assert.equal(arguments.length, 1);
2015-01-15 15:02:50 -05:00
async.parallel({
key1exists: function (next) {
2015-01-15 14:36:03 -05:00
db.exists('key1', next);
},
key2exists: function (next) {
2015-01-15 14:36:03 -05:00
db.exists('key2', next);
2017-02-17 19:31:21 -07:00
},
}, function (err, results) {
assert.ifError(err);
2015-01-15 14:36:03 -05:00
assert.equal(results.key1exists, false);
assert.equal(results.key2exists, false);
2014-12-25 01:53:28 -05:00
done();
});
});
});
});
2017-05-18 16:59:32 -04:00
it('should delete all sorted set elements', function (done) {
async.parallel([
function (next) {
db.sortedSetAdd('deletezset', 1, 'value1', next);
},
function (next) {
db.sortedSetAdd('deletezset', 2, 'value2', next);
},
], function (err) {
if (err) {
return done(err);
}
db.delete('deletezset', function (err) {
assert.ifError(err);
async.parallel({
key1exists: function (next) {
db.isSortedSetMember('deletezset', 'value1', next);
},
key2exists: function (next) {
db.isSortedSetMember('deletezset', 'value2', next);
},
}, function (err, results) {
assert.ifError(err);
2017-05-18 16:59:32 -04:00
assert.equal(results.key1exists, false);
assert.equal(results.key2exists, false);
done();
});
});
});
});
describe('increment', function () {
it('should initialize key to 1', function (done) {
db.increment('keyToIncrement', function (err, value) {
assert.ifError(err);
2015-01-15 14:36:03 -05:00
assert.strictEqual(parseInt(value, 10), 1);
2014-12-25 01:53:28 -05:00
done();
});
});
it('should increment key to 2', function (done) {
db.increment('keyToIncrement', function (err, value) {
assert.ifError(err);
2015-01-15 14:36:03 -05:00
assert.strictEqual(parseInt(value, 10), 2);
2014-12-25 01:53:28 -05:00
done();
});
});
2018-01-03 14:24:07 -05:00
it('should set then increment a key', function (done) {
db.set('myIncrement', 1, function (err) {
assert.ifError(err);
db.increment('myIncrement', function (err, value) {
assert.ifError(err);
assert.equal(value, 2);
db.get('myIncrement', function (err, value) {
assert.ifError(err);
assert.equal(value, 2);
done();
});
});
});
});
2014-12-25 01:53:28 -05:00
});
describe('rename', function () {
it('should rename key to new name', function (done) {
db.set('keyOldName', 'renamedKeyValue', function (err) {
2014-12-25 01:53:28 -05:00
if (err) {
return done(err);
}
db.rename('keyOldName', 'keyNewName', function (err) {
assert.ifError(err);
assert(arguments.length < 2);
2014-12-25 01:53:28 -05:00
db.get('keyNewName', function (err, value) {
assert.ifError(err);
2015-01-15 14:36:03 -05:00
assert.equal(value, 'renamedKeyValue');
2014-12-25 01:53:28 -05:00
done();
});
});
});
});
});
2017-10-20 13:51:02 -04:00
describe('type', function () {
it('should return null if key does not exist', function (done) {
db.type('doesnotexist', function (err, type) {
assert.ifError(err);
assert.strictEqual(type, null);
done();
});
});
it('should return hash as type', function (done) {
db.setObject('typeHash', { foo: 1 }, function (err) {
assert.ifError(err);
db.type('typeHash', function (err, type) {
assert.ifError(err);
assert.equal(type, 'hash');
done();
});
});
});
it('should return zset as type', function (done) {
db.sortedSetAdd('typeZset', 123, 'value1', function (err) {
assert.ifError(err);
db.type('typeZset', function (err, type) {
assert.ifError(err);
assert.equal(type, 'zset');
done();
});
});
});
it('should return set as type', function (done) {
db.setAdd('typeSet', 'value1', function (err) {
assert.ifError(err);
db.type('typeSet', function (err, type) {
assert.ifError(err);
assert.equal(type, 'set');
done();
});
});
});
it('should return list as type', function (done) {
db.listAppend('typeList', 'value1', function (err) {
assert.ifError(err);
db.type('typeList', function (err, type) {
assert.ifError(err);
assert.equal(type, 'list');
done();
});
});
});
it('should return string as type', function (done) {
db.set('typeString', 'value1', function (err) {
assert.ifError(err);
db.type('typeString', function (err, type) {
assert.ifError(err);
assert.equal(type, 'string');
done();
});
});
});
});
2014-12-25 01:53:28 -05:00
});